software:devices:counter3

DEVICE COUNTER3

1. Introduzione

Il device COUNTER3 permette di acquisire un'informazione proveniente da un contatore bidirezionale. Le principali caratteristiche del device sono:

  • conversione degli impulsi nell'unità di misura scelta dall'utente;
  • aggiornamento della posizione con recupero della frazione dell'unità di misura;
  • cattura del valore di posizione su attivazione di un ingresso digitale in interruzione;
  • comparazione tra la posizione rilevata e un valore di soglia per l'attivazione di uscite digitali.

Per poter usufruire del device è necessario eseguirne la dichiarazione nell'apposita sezione INTDEVICE della unit di configurazione.

INTDEVICE
<device name> COUNTER3 <TCamp> <ICont> <IdxA> <Out1> <Out2>

Dove:

Nome campoDescrizioneEsempioNote
<device name>Nome assegnato al device.Count-
COUNTER3Parola chiave che identifica il device contatore bidirezionale.--
<TCamp>Tempo di campionamento device (1÷255 ms).4-
<ICont>Indirizzo contatore presente nella scheda.3.CNT01Inserendo il valore X.X il campo viene ignorato
<IdxA>Numero della linea di interrupt hardware per la cattura del conteggio1Inserendo il valore X il campo viene ignorato
<Out1>Indirizzo uscita 1 di comparazione3.OUT01Inserendo il valore X.X il campo viene ignorato
<Out2>Indirizzo uscita 2 di comparazione3.OUT02Inserendo il valore X.X il campo viene ignorato

Esempio:

INTDEVICE
Count  COUNTER3  2  2.CNT02  3    2.OUT01  2.OUT02
:important:Tutti i campi della dichiarazione sono obbligatori e devono essere presenti sulla stessa linea. Impostare “X.X” oppure “X” nel caso una risorsa non sia disponibile o non venga utilizzata. Disabilitare una risorsa significa disabilitare tutte le funzionalità del device che la utilizzano.

Lo schema a blocchi del device è presentato di seguito:

1.2.0.1 Factors

Il blocco “Factors” calcola i fattori di conversione di posizione e velocità. Il “position factor” (PF) è un coefficente per la conversione della posizione espressa con l'unità di misura del trasduttore nell'unità di misura della posizione(Um), e viceversa. Tipicamente l'unità di misura della posizione può essere ad esempio metri piuttosto che millimetri piuttosto che centesimi, mentre l'unità di misura del trasduttore, l'encoder, è sempre impulsi. I parametri che concorrono al calcolo del position factor sono pulse e measure ed è calcolato come rapporto tra questi due.

1.2.0.2 Acquisizione della posizione attuale su ingresso digitale per interruzione

I comandi INTENBL e INTDSBL abilitano (st_intenbl=1) e disabilitano (st_intenbl=0) la linea di interrupt collegata all’impulso di zero del trasduttore o ad un altro sensore presente. Il valore del parametro capture definisce su quale fronte di tale impulso verrà congelato il conteggio istantaneo; il conteggio catturato viene posto nel parametro delta. Lo stato st_capture segnala che la cattura è avvenuta.

1.2.0.3 Comparatori

Il device mette a disposizione anche due comparatori che possono essere utilizzati per confrontare il valore corrente del parametro posit con due valori (setpoint1 e setpoint2) introdotto dall'utente. Di conseguenza i comparatori agiranno su due uscita digitali, andando rispettivamente ad attivarle o disattivarle quando le soglie introdotte verranno superate secondo diverse condizioni. Le uscite disponibili sono due (come si evince anche dalla dichiarazione del device e dallo schema) ed il livello di personalizzazione è molto elevato: si può scegliere per ogni comparatore quale uscita comandare, in base a quali condizioni. Il parametro mode1 (che controlla il comparatore 1) sceglie la politica di attivazione o disattivazione dell'uscita corrispondete rispettando determinate regole.

Nella figura sono esemplificate le diverse modalità di funzionamento:

  • mode 0: l'uscita resta nel suo stato;
  • mode 1: l'uscita viene attivata quando la posizione in impulsi primari diventa maggiore del setpoint;
  • mode 2: l'uscita viene disattivata quando la posizione in impulsi primari diventa maggiore del setpoint;
  • mode 3: l'uscita viene attivata quando la posizione in impulsi primari diventa minore del setpoint;
  • mode 4: l'uscita viene disattivata quando la posizione in impulsi primari diventa minore del setpoint;
  • mode 5: l'uscita viene attivata quando la posizione in impulsi primari diventa maggiore del setpoint e viene disattivata quando la posizione in impulsi primari diventa minore del setpoint;
  • mode 6: l'uscita viene disattivata quando la posizione in impulsi primari diventa maggiore del setpoint e viene attivata quando la posizione in impulsi primari diventa minore del setpoint.

1.2.0.4 Delta posizione attuale

Il device visualizza sempre la posizione assoluta dell'asse; il cambio di conteggio può essere eseguito anche con una scrittura diretta nel nuovo valore nel parametro posit.
Volendo sottrarre 100 unità di misura al conteggio è possibile:

  Count.posit = Count.posit - 100

Questa operazione introduce un errore perché impone la posizione “posit = -100”, quando l'asse poteva avere una posizione intermedia tra una unità di misura e la successiva (es. 100.3). Questa frazione (0.3) viene persa ed il ripetersi di queste operazioni provocano l'accumularsi di un errore non trascurabile.
A tale scopo esiste invece il comando DELCNT che permette di modificare il posit di un valore impostabile tramite il parametro delta.
Per esempio supponiamo di aver configurato pulse e measure in modo che la posizione sia espressa in decimi di grado. Se posit esprime la posizione angolare e vogliamo che questa sia sempre compresa tra zero e 360 gradi dovremmo aggiungere il seguente codice:

  IF Count.posit GE 3600
    Count.delta = -3600
    Count.DELCNT
  ENDIF  

Per le condizioni di esecuzione del comando vedere la descrizione dello stesso. Il funzionamento del comando DELCNT è assicurato anche nel caso in cui una unità di misura non sia esprimibile in un numero finito di impulsi primari. Per esempio con i parametri measure = 1000 e pulse = 1024, il valore 3600 dell'esempio precedente corrisponde a 3686,4 impulsi. Grazie ad un sofisticato algoritmo interno il device riesce a considerare la parte frazionaria di questo valore e tramite degli accumulatori interni essa diventa parte dell'informazione utilizzata per modificare il valore di posit.
Esempio:
si supponga la seguente impostazione: pulse = 10, measure = 1. Si supponga inoltre che la lettura della posizione dell'asse risulti essere 2 e si trovi nel punto A. Si vogliono sommare alla posizione posit due unità di misura. Con le istruzioni:

  Count.posit = Count.posit + 2

l'asse assume la nuova posizione B. Con le istruzioni:

  Count.delta = 2
  Count.DELCNT Asse

viene raggiunta la posizione C.

Si noti che se viene modificato direttamente posit senza utilizzare il comando DELCNT (come nel primo esempio) è introdotto un errore.

:info:Se si devono inviare comandi DELCNT in successione, è conveniente calcolare la grandezza da sommare ed inviare una sola volta il comando. Se ciò non fosse possibile bisogna prestare attenzione a non inviare comandi successivi senza interporre una istruzione di lettura su parametro device.
Esempio:
Count.delta = 3
Count.DELCNT
WAIT Count.delta
Count.delta = 40
Count.DELCNT

La presenza di un errore nel device viene segnalato dallo stato st_error.
Quando st_error è uguale a 1, troviamo presente sulla variabile errcode il tipo di errore intervenuto (vedi tabella) e nella variabile errvalue una indicazione sulla causa dell’errore.
Se il device va in errore, per poter riprendere la lavorazione bisogna cancellare lo stato st_error attraverso il comando RSERR.

La presenza di un warning nel device viene segnalato dallo stato st_warning.
Quando st_warning è uguale a 1, troviamo presente sulla variabile wrncode il tipo di warning intervenuto (vedi tabella) e nella variabile wrnvalue una indicazione sulla causa che ha provocato il warning.

CodicePrioritàDescrizione
10Comando non eseguito

Per cancellare lo stato st_warning bisogna inviare il comando RSWRN.

measure

Breve descrizione Misura di riferimento per il calcolo del fattore di conversione tra impulsi primari ed unità di misura
Dimensione Long
Valore di default Ritentivo
Tipo di accesso Read - Write
Unità di misura Um
Range valido 1÷999999
ID parametro -
Condizioni di scrittura -

Descrizione:

Indica lo spazio, in unità di misura, percorso dall'asse per ottenere gli impulsi primari impostati nel parametro pulse. Questo parametro è utilizzato per il calcolo del fattore di conversione tra impulsi primari ed unità di misura.
posit = encoder * measure / pulse
Il rapporto measure / pulse deve avere un valore compreso tra 0.00935 e 1.


pulse

Breve descrizione Numero di impulsi primari per il calcolo del fattore di conversione tra impulsi primari e unità di misura
Dimensione Long
Valore di default Ritentivo
Tipo di accesso Read - Write
Unità di misura -
Range valido 1÷999999
ID parametro -
Condizioni di scrittura -

Descrizione:

Indica il numero di impulsi primari che genererà il trasduttore bidirezionale per ottenere un movimento pari a measure. Questo parametro è utilizzato per il calcolo del fattore di conversione tra impulsi primari ed unità di misura.
posit = encoder * measure / pulse
Il rapporto measure / pulse deve avere un valore compreso tra 0.00935 e 1.


posit

Breve descrizione Posizione attuale in unità di misura
Dimensione Long
Valore di default Ritentivo
Tipo di accesso Read - Write
Unità di misura Um
Range valido -
ID parametro -
Condizioni di scrittura -

Descrizione:

È il valore della posizione istantanea dell'asse in unità di misura.
posit = encoder * measure / pulse.


encoder

Breve descrizione Posizione attuale in impulsi primari
Dimensione Long
Valore di default Ritentivo
Tipo di accesso Read - Write
Unità di misura Impulsi primari
Range valido -
ID parametro -
Condizioni di scrittura -

Descrizione:

Esprime la posizione attuale in impulsi primari.


delta

Breve descrizione Variazione della posizione attuale per l'utilizzo del comando DELCNT
Dimensione Long
Valore di default Ritentivo
Tipo di accesso Read - Write
Unità di misura Um
Range valido -999999÷999999
ID parametro -
Condizioni di scrittura -

Descrizione:

È il valore che viene sommato alla posizione attuale quando viene inviato un comando DELCNT. Inoltre sul parametro delta viene memorizzata la posizione quando si utilizza l'acquisizione sull'attivazione di un ingresso digitale per interruzione.


axetype

Breve descrizione Tipo di asse
Dimensione Flag
Valore di default Ritentivo
Tipo di accesso Read - Write
Unità di misura -
Range valido -999999÷999999
ID parametro -
Condizioni di scrittura -

Descrizione:

Permette di selezionare il tipo di asse con cui si sta lavorando:

  • 0: asse lineare,
  • 1: asse circolare (angolare). Il conteggio riparte da zero dopo aver raggiunto il valore di measure.

capture

Breve descrizione Modalità di cattura della posizione su attivazione di un ingresso digitale per interruzione
Dimensione Byte
Valore di default Ritentivo
Tipo di accesso Read - Write
Unità di misura -
Range valido 0÷2
ID parametro -
Condizioni di scrittura -

Descrizione:

Il parametro definisce il modo di cattura della posizione in impulsi primari sull'attivazione di un ingresso digitale per interruzione :

  • 0: disabilitato,
  • 1: One-shot su fronte di discesa. Viene catturata la posizione istantanea in impulsi primari sul primo fronte di discesa del segnale dell'ingresso digitale;

per interruzione dopo l'attivazione di st_intenbl;

  • 2: One-shot su fronte di salita. Viene catturata la posizione istantanea in impulsi primari sul primo fronte di salita del segnale dell'ingresso digitale per interruzione dopo l'attivazione di st_intenbl.

tbf

Breve descrizione Tempo di campionamento del frequenzimetro
Dimensione Byte
Valore di default Ritentivo
Tipo di accesso Read - Write
Unità di misura -
Range valido 0÷5
ID parametro -
Condizioni di scrittura -

Descrizione:

Definisce il tempo di campionamento del frequenzimetro:

  • 0: 240 ms,
  • 1: 480 ms,
  • 2: 24 ms,
  • 3: 120 ms,
  • 4: 960 ms,
  • 5: 1200 ms.

Il device, per il calcolo della frequenza dei segnali in ingresso al contatore bidirezionale (parametro frq), conta il numero di impulsi ricevuti in un intervallo di tempo definito tramite il parametro tbf e calcola un valore medio. Minore è il tempo di campionamento più veloce sarà l'aggiornamento del parametro frq, ma bisogna prestare attenzione a basse frequenze perché il tempo di campionamento non potrebbe essere sufficientemente lungo per raccogliere campioni.


frq

Breve descrizione Frequenza dei segnali di ingresso
Dimensione Long
Valore di default 0
Tipo di accesso Read
Unità di misura Hz
Range valido -
ID parametro -
Condizioni di scrittura -

Descrizione:

È il valore della frequenza dei segnali in ingresso al contatore bidirezionale. L'aggiornamento è eseguito con frequenza dettata dal tempo di campionamento scelto tramite il parametro tbf.


mode1

Breve descrizione Modalità di comando dell'uscita indicata in selout1 da parte del comparatore
Dimensione Byte
Valore di default Ritentivo
Tipo di accesso Read - Write
Unità di misura -
Range valido 0÷6
ID parametro -
Condizioni di scrittura -

Descrizione:

Con questo parametro si decidono le regole di attivazione e disattivazione dell'uscita indicata nel parametro selout1 da parte del comparatore.


selout1

Breve descrizione Uscita comandata dal comparatore 1
Dimensione Byte
Valore di default Ritentivo
Tipo di accesso Read - Write
Unità di misura -
Range valido 0÷1
ID parametro -
Condizioni di scrittura -

Descrizione:

Indica quale uscita viene comandata dal comparatore 1:

  • 0: Out1,
  • 1: Out2.

setpoint1

Breve descrizione Soglia di comparazione per il comparatore 1
Dimensione Long
Valore di default Ritentivo
Tipo di accesso Read - Write
Unità di misura Um
Range valido -999999÷999999
ID parametro -
Condizioni di scrittura -

Descrizione:

Definisce il setpoint (la soglia) con cui viene confrontato il valore istantaneo di posizione in impulsi primari. L'uscita modificata di conseguenza è quella indicata dal parametro selout1.


timer1

Breve descrizione Tempo di ritardo di attivazione dell'uscita selout1
Dimensione Word
Valore di default Ritentivo
Tipo di accesso Read - Write
Unità di misura ms
Range valido -999999÷999999
ID parametro -
Condizioni di scrittura -

Descrizione:

Relativamente all'uscita indicata da selout1, questo parametro definisce un intervallo di tempo che intercorre tra l'evento che comanda la commutazione dell'uscita e la commutazione vera e propria (in altre parole viene introdotto un ritardo alla attivazione o disattivazione dell'uscita digitale.)


mode2

Breve descrizione Modalità di comando dell'uscita indicata in selout1 da parte del comparatore
Dimensione Byte
Valore di default Ritentivo
Tipo di accesso Read - Write
Unità di misura -
Range valido 0÷6
ID parametro -
Condizioni di scrittura -

Descrizione:

Con questo parametro si decidono le regole di attivazione e disattivazione dell'uscita indicata nel parametro selout2 da parte del comparatore.


selout2

Breve descrizione Uscita comandata dal comparatore 1
Dimensione Byte
Valore di default Ritentivo
Tipo di accesso Read - Write
Unità di misura -
Range valido 0÷1
ID parametro -
Condizioni di scrittura -

Descrizione:

Indica quale uscita viene comandata dal comparatore 2:

  • 0: Out1,
  • 1: Out2.

setpoint2

Breve descrizione Soglia di comparazione per il comparatore 1
Dimensione Long
Valore di default Ritentivo
Tipo di accesso Read - Write
Unità di misura Um
Range valido -999999÷999999
ID parametro -
Condizioni di scrittura -

Descrizione:

Definisce il setpoint (la soglia) con cui viene confrontato il valore istantaneo di posizione in impulsi primari. L'uscita modificata di conseguenza è quella indicata dal parametro selout2.


timer2

Breve descrizione Tempo di ritardo di attivazione dell'uscita selout1
Dimensione Word
Valore di default Ritentivo
Tipo di accesso Read - Write
Unità di misura ms
Range valido -999999÷999999
ID parametro -
Condizioni di scrittura -

Descrizione:

Relativamente all'uscita indicata da selout2, questo parametro definisce un intervallo di tempo che intercorre tra l'evento che comanda la commutazione dell'uscita e la commutazione vera e propria (in altre parole viene introdotto un ritardo alla attivazione o disattivazione dell'uscita digitale.)


errcode

Breve descrizione Codice di identificazione errore
Dimensione Byte
Valore di default 0
Tipo di accesso Read
Unità di misura -
Range valido 0÷100
ID parametro -
Condizioni di scrittura -

Descrizione:

Indica il tipo di errore intervenuto nel sistema. Quando st_error = 1 si trova presente sulla variabile errcode il tipo di errore intervenuto e nella variabile errvalue una indicazione sulla causa dell'errore. Se il device va in errore, per riprendere la lavorazione bisogna cancellare lo stato st_error attraverso il comando RSERR.
Questo device non prevede alcun codice di errore.)


errvalue

Breve descrizione Codice di identificazione della causa dell'errore
Dimensione Byte
Valore di default 0
Tipo di accesso Read
Unità di misura -
Range valido 0÷100
ID parametro -
Condizioni di scrittura -

Descrizione:

Indica la causa dell'errore intervenuto nel sistema. Il codice è valido solo se st_error = 1.)


wrncode

Breve descrizione Codice di identificazione warning
Dimensione Byte
Valore di default 0
Tipo di accesso Read
Unità di misura -
Range valido 0÷100
ID parametro -
Condizioni di scrittura -

Descrizione:

Indica il tipo di warning intervenuto nel sistema. Lo stato st_warning indica un evento non grave che garantisce comunque il funzionamento del device. Quando st_warning è uguale a 1, troviamo presente nella variabile wrncode il tipo di warning intervenuto (vedi tabella) e nella variabile wrnvalue una indicazione sulla causa che ha provocato il warning. Per cancellare lo stato st_warning bisogna inviare il comando RSWRN.)

CodicePrioritàDescrizione
1 0 Comando non eseguito

—-

wrnvalue

Breve descrizione Codice di identificazione della causa del warning
Dimensione Byte
Valore di default 0
Tipo di accesso Read
Unità di misura -
Range valido 0÷100
ID parametro -
Condizioni di scrittura -

Descrizione:

Indica la causa del warning intervenuto nel sistema.)


st_cntlock

Breve descrizione Stato di aggiornamento posizione disabilitato
Valore di default Ritentivo
ID stato -

Descrizione:

Segnalazione di aggiornamento posizione bloccato:

  • 0: aggiornamento posizione abilitato,
  • 1: aggiornamento posizione disabilitato

st_cntrev

Breve descrizione Stato di inversione aggiornamento posizione
Valore di default Ritentivo
ID stato -

Descrizione:

Segnalazione di aggiornamento posizione invertito:

  • 0: aggiornamento posizione non invertito,
  • 1: aggiornamento posizione invertito

st_intenbl

Breve descrizione Stato di attivazione dell'ingresso digitale per interruzione
Valore di default 0
ID stato -

Descrizione:

Segnala l'abilitazione alla cattura della posizione istantanea dell'ingresso digitale per interruzione; viene attivato dal comando INTENBL e disattivato dal comando INTDSBL o sul fronte di salita di st_capture.


st_capture

Breve descrizione Attivazione della cattura della posizione istantanea
Valore di default 0
ID stato -

Descrizione:

Viene attivato alla cattura della posizione istantanea, è resettato tramite il comando RSCAPTURE.


st_int

Breve descrizione Stato dell'ingresso digitale per interruzione
Valore di default 0
ID stato -

Descrizione:

Indica lo stato dell'ingresso digitale per interruzione :

  • 0: ingresso digitale per interruzione disattivo,
  • 1: ingresso digitale per interruzione attivo.

st_cmp1

Breve descrizione Stato della comparazione 1
Valore di default 0
ID stato -

Descrizione:

Segnalazione di attivazione della comparazione 1:

  • 0: comparazione 1 disattiva,
  • 1: comparazione 1 attiva

st_cmp2

Breve descrizione Stato della comparazione 2
Valore di default 0
ID stato -

Descrizione:

Segnalazione di attivazione della comparazione 2:

  • 0: comparazione 2 disattiva,
  • 1: comparazione 2 attiva

st_error

Breve descrizione Presenza di un errore
Valore di default 0
ID stato -

Descrizione:

Indica lo stato di errore del device, per riconoscere il tipo di errore si deve far riferimento alle variabili errcode ed errvalue:

  • 0: errore non presente,
  • 1: errore presente

st_warning

Breve descrizione Presenza di un warning
Valore di default 0
ID stato -

Descrizione:

Indica lo stato di warning del device, per riconoscere il tipo di warning si deve far riferimento alle variabili wrncode e wrnalue:

  • 0: warning non presente,
  • 1: warning presente

I comandi a disposizione per gestire il device sono qui elencati in ordine di piorità decrescente. Esistono due vie alternative per eseguire un comando: * Tramite i pannelli watches di QView * Con una istruzione QCL

Nel secondo caso l'esecuzione del programma QCL sarà bloccata fino al termine del comando stesso la cui durata è comunque compresa fra 0 e 2 tempi di campionamento.

CNTLOCK

Breve descrizione Disabilita l'aggiornamento della posizione attuale
Condizione -
ID comando -

Descrizione:

Disabilita l'aggiornamento della posizione attuale. In questa situazione l'eventuale spostamento dell'asse non viene rilevato.


CNTUNLOCK

Breve descrizione Abilita l'aggiornamento della posizione attuale
Condizione -
ID comando -

Descrizione:

Abilita l'aggiornamento della posizione attuale.


CNTREV

Breve descrizione Inversione dell'aggiornamento posizione
Condizione -
ID comando -

Descrizione:

Consente di invertire il segno dell'aggiornamento posizione; lo stato st_cntrev è posto a 1.


CNTDIR

Breve descrizione Aggiornamento posizione non invertita
Condizione -
ID comando -

Descrizione:

Disabilita una eventuale inversione dell'aggiornamento posizione; lo stato st_cntrev è posto a zero.


INTENBL

Breve descrizione Abilitazione della cattura della posizione istantanea su attivazione dell'ingresso digitale per interruzione
Condizione capture>0
ID comando -

Descrizione:

Attiva la cattura della posizione attuale sulla attivazione dell'ingresso digitale per interruzione dedicata, il valore verrà memorizzato nel parametro delta. Attiva lo stato st_intenbl.

INTDSBL

Breve descrizione Disabilitazione della cattura della posizione attuale su attivazione dell'ingresso digitale per interruzione
Condizione -
ID comando -

Descrizione:

Disattiva la cattura della posizione attuale sulla attivazione dell'ingresso digitale per interruzione dedicata. Disattiva lo stato st_intenbl.


RSCAPTURE

Breve descrizione Disattivazione dello stato di cattura
Condizione -
ID comando -

Descrizione:

Disattiva lo stato di capture st_capture.


DELCNT

Breve descrizione Comando di modifica di posit di un valore pari a delta
Condizione st_intenbl=0
ID comando -

Descrizione:

La posizione dell'asse viene modificata sommandogli algebricamente il valore specificato nella variabile delta.


SETCMP1

Breve descrizione Attivazione della comparazione 1
Condizione -
ID comando -

Descrizione:

Forza l'attivazione dello stato st_cmp1.


RESCMP1

Breve descrizione Reset della comparazione 1
Condizione -
ID comando -

Descrizione:

Azzera lo stato st_cmp1.


SETCMP2

Breve descrizione Attivazione della comparazione 2
Condizione -
ID comando -

Descrizione:

Forza l'attivazione dello stato st_cmp2.


RESCMP2

Breve descrizione Reset della comparazione 2
Condizione -
ID comando -

Descrizione:

Azzera lo stato st_cmp2.


RSERR

Breve descrizione Reset dello stato di errore
Condizione -
ID comando -

Descrizione:

Azzera lo stato st_error.


RSWRN

Breve descrizione Reset dello stato di warning
Condizione -
ID comando -

Descrizione:

Azzera lo stato st_warning.


Se vengono modificati i parametri measure o pulse successivamente all’invio del comando DELCNT, vengono azzerati i resti della conversione del “delta spazio” in impulsi.

:info:Questo esempio è compilabile nell'ambiente QView 6.0 o superiori.
;*************************************************************************************
; COUNTER3 example
;*************************************************************************************
 
; Bus declaration
BUS
  1  1K31F    20
  2  .        .
  3  1MG8F    .
  4  .
 
; Input declaration
INPUT
  ifEnableZ     F     3.INP01        ;Zero pulse capture enabling
  ifEnableComp  F     3.INP03        ;Comparation enabling
 
; Output declaration
OUTPUT
  out201      F     3.OUT01        ;Comparation output #1
  out202      F     3.OUT02        ;Comparation output #2 
 
; Device declaration
INTDEVICE
Count    COUNTER3   2       3.CNT01     1       3.OUT01  3.OUT02
 
END
SYSTEM
  slPrsPos   L  IN               ;Quota di preset
  slSet1     L  IN               ;Setpoint 1
  slSet2     L  IN               ;Setpoint 2
 
GLOBAL
  gfApp01    F
  gfApp02    F
 
BEGIN
;-------------------------------------------------------------------------------------
; Initialization
;-------------------------------------------------------------------------------------
Count.measure = 1000             ;measure per round
Count.pulse = 1000               ;pulse per round
 
Count.capture = 1                ;set capture on rise edge
IF slSet1 EQ 0
  slSet1 = 500                   ;Default value 
ENDIF
IF slSet2 EQ 0
  slSet2 = 100                   ;Default value
ENDIF
 
MAIN:
 
 
  IF ifEnableZ                                 ;If the input is ON
    Count.INTENBL                              ;Zero pulse enabling
  ELSE
    Count.INTDSBL                              ;Zero pulse disabling
  ENDIF
 
  IF Count.st_capture                          ;When the count has captured
    Count.delta = -(Count.delta - slPrsPos)    ;load delta
    Count.DELCNT                               ;Set the new position
    Count.RSCAPTURE                            ;Reset the capture
  ENDIF
 
  IF ifEnableComp                              ;When it is enabled
    IF NOT gfApp01
      Count.mode1 = 5                           ;Set Mode1 for comparation 1
      Count.selout1 = 0                         
      Count.setpoint1 = slSet1
      Count.timer1 = 0
      Count.mode2 = 6                           ;Set Mode2 for comparation 2
      Count.selout2 = 1                         
      Count.setpoint2 = slSet2
      Count.timer2 = 0
      gfApp01 = 1
      gfApp02 = 0
    ENDIF
  ELSE                                         ;When it is not enabled
    IF NOT gfApp02
      Count.mode1 = 0                           ;Comparation 1 disabled
      RESOUT out201                            ;Reset output
      Count.selout1 = 0
      Count.mode2 = 0                           ;Comparation 1 disabled  
      RESOUT out202                            ;Reset output
      Count.selout2 = 1
      gfApp01 = 0
      gfApp02 = 1
    ENDIF
  ENDIF
 
  WAIT 1
  JUMP MAIN
 
END
  • Ultima modifica: 2020/07/13 15:06