Differenze
Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.
Entrambe le parti precedenti la revisione Revisione precedente Prossima revisione | Revisione precedente | ||
software:devices:counter3 [2017/01/19 14:49] – [20. Dichiarazione del device] qem103 | software:devices:counter3 [2020/07/13 15:06] (versione attuale) – qem103 | ||
---|---|---|---|
Linea 1: | Linea 1: | ||
+ | ====== DEVICE COUNTER3 ====== | ||
+ | |||
+ | |||
+ | ====== - Introduzione ====== | ||
+ | |||
+ | Il device COUNTER3 permette di acquisire un' | ||
+ | |||
+ | * conversione degli impulsi nell' | ||
+ | * aggiornamento della posizione con recupero della frazione dell' | ||
+ | * 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' | ||
+ | |||
+ | |||
+ | ===== - Dichiarazione del device===== | ||
+ | |||
+ | Per poter usufruire del device è necessario eseguirne la dichiarazione nell' | ||
+ | |||
+ | <code QCL> | ||
+ | INTDEVICE | ||
+ | <device name> COUNTER3 < | ||
+ | </ | ||
+ | |||
+ | Dove: | ||
+ | ^Nome campo^Descrizione^Esempio^Note^ | ||
+ | |<device name> | ||
+ | |COUNTER3|Parola chiave che identifica il device contatore bidirezionale.|-|-| | ||
+ | |< | ||
+ | |< | ||
+ | |< | ||
+ | |< | ||
+ | |< | ||
+ | |||
+ | ** Esempio: ** | ||
+ | <code QCL> | ||
+ | INTDEVICE | ||
+ | Count COUNTER3 | ||
+ | </ | ||
+ | |||
+ | ^: | ||
+ | |||
+ | |||
+ | ===== - Descrizione del funzionamento ===== | ||
+ | Lo schema a blocchi del device è presentato di seguito:\\ | ||
+ | {{: | ||
+ | |||
+ | === - Factors === | ||
+ | Il blocco " | ||
+ | Il " | ||
+ | |||
+ | === - Acquisizione della posizione attuale su ingresso digitale per interruzione === | ||
+ | |||
+ | I comandi //INTENBL// e //INTDSBL// abilitano (// | ||
+ | |||
+ | === - Comparatori === | ||
+ | Il device mette a disposizione anche due comparatori che possono essere utilizzati per confrontare il valore corrente del parametro //posit// con due valori (// | ||
+ | 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' | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Nella figura sono esemplificate le diverse modalità di funzionamento: | ||
+ | * mode 0: l' | ||
+ | * mode 1: l' | ||
+ | * mode 2: l' | ||
+ | * mode 3: l' | ||
+ | * mode 4: l' | ||
+ | * mode 5: l' | ||
+ | * mode 6: l' | ||
+ | * | ||
+ | === - Delta posizione attuale === | ||
+ | |||
+ | Il device visualizza sempre la posizione assoluta dell' | ||
+ | Volendo sottrarre 100 unità di misura al conteggio è possibile: | ||
+ | <code QCL > | ||
+ | Count.posit = Count.posit - 100 | ||
+ | </ | ||
+ | Questa operazione introduce un errore perché impone la posizione "// | ||
+ | A tale scopo esiste invece il comando DELCNT che permette di modificare il posit di un valore impostabile tramite il parametro // | ||
+ | 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: | ||
+ | <code QCL > | ||
+ | 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: **\\ | ||
+ | si supponga la seguente impostazione: | ||
+ | Con le istruzioni: | ||
+ | <code QCL> | ||
+ | Count.posit = Count.posit + 2 | ||
+ | </ | ||
+ | l'asse assume la nuova posizione B. | ||
+ | Con le istruzioni: | ||
+ | <code QCL> | ||
+ | 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, | ||
+ | Count.delta = 3 | ||
+ | Count.DELCNT | ||
+ | WAIT Count.delta | ||
+ | Count.delta = 40 | ||
+ | Count.DELCNT | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== - Gestione errori device ===== | ||
+ | |||
+ | La presenza di un errore nel device viene segnalato dallo stato // | ||
+ | Quando // | ||
+ | Se il device va in errore, per poter riprendere la lavorazione bisogna cancellare lo stato // | ||
+ | |||
+ | |||
+ | ===== - Gestione warning device ===== | ||
+ | |||
+ | La presenza di un warning nel device viene segnalato dallo stato // | ||
+ | Quando // | ||
+ | |||
+ | ^Codice^Priorità^Descrizione^ | ||
+ | |1|0|Comando non eseguito| | ||
+ | |||
+ | Per cancellare lo stato // | ||
+ | |||
+ | |||
+ | ===== - Elenco Parametri ===== | ||
+ | |||
+ | ===measure=== | ||
+ | {{template> | ||
+ | |shortdescr=Misura di riferimento per il calcolo del fattore di conversione tra impulsi primari ed unità di misura| | ||
+ | |dim=Long| | ||
+ | |default=Ritentivo| | ||
+ | |accesstype=Read - Write| | ||
+ | |um=Um| | ||
+ | |id= - | | ||
+ | |range=1÷999999| | ||
+ | |wrcond=-| | ||
+ | |longdescr=Indica lo spazio, in unità di misura, percorso dall' | ||
+ | //posit// = //encoder// * //measure// / //pulse// \\ | ||
+ | Il rapporto //measure// / //pulse// deve avere un valore compreso tra 0.00935 e 1.}} | ||
+ | |||
+ | ---- | ||
+ | ===pulse=== | ||
+ | {{template> | ||
+ | |shortdescr=Numero di impulsi primari per il calcolo del fattore di conversione tra impulsi primari e unità di misura| | ||
+ | |dim=Long| | ||
+ | |default=Ritentivo| | ||
+ | |accesstype=Read - Write| | ||
+ | |um= - | | ||
+ | |id= - | | ||
+ | |range=1÷999999| | ||
+ | |wrcond=-| | ||
+ | |longdescr=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 | ||
+ | |||
+ | ---- | ||
+ | ===posit=== | ||
+ | {{template> | ||
+ | |shortdescr=Posizione attuale in unità di misura| | ||
+ | |dim=Long| | ||
+ | |default=Ritentivo| | ||
+ | |accesstype=Read - Write| | ||
+ | |um=Um| | ||
+ | |id= - | | ||
+ | |range= - | | ||
+ | |wrcond=-| | ||
+ | |longdescr=È il valore della posizione istantanea dell' | ||
+ | //posit// = //encoder// * //measure// / // | ||
+ | |||
+ | ---- | ||
+ | ===encoder=== | ||
+ | {{template> | ||
+ | |shortdescr=Posizione attuale in impulsi primari| | ||
+ | |dim=Long| | ||
+ | |default=Ritentivo| | ||
+ | |accesstype=Read - Write| | ||
+ | |um=Impulsi primari| | ||
+ | |id= - | | ||
+ | |range=-| | ||
+ | |wrcond=-| | ||
+ | |longdescr=Esprime la posizione attuale in impulsi primari.}} | ||
+ | |||
+ | ---- | ||
+ | ===delta=== | ||
+ | {{template> | ||
+ | |shortdescr=Variazione della posizione attuale per l' | ||
+ | |dim=Long| | ||
+ | |default=Ritentivo| | ||
+ | |accesstype=Read - Write| | ||
+ | |um=Um| | ||
+ | |id= - | | ||
+ | |range=-999999÷999999| | ||
+ | |wrcond=-| | ||
+ | |longdescr=È 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' | ||
+ | |||
+ | ---- | ||
+ | ===axetype=== | ||
+ | {{template> | ||
+ | |shortdescr=Tipo di asse| | ||
+ | |dim=Flag| | ||
+ | |default=Ritentivo| | ||
+ | |accesstype=Read - Write| | ||
+ | |um=-| | ||
+ | |id= - | | ||
+ | |range=-999999÷999999| | ||
+ | |wrcond=-| | ||
+ | |longdescr=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 // | ||
+ | |||
+ | ---- | ||
+ | ===capture=== | ||
+ | {{template> | ||
+ | |shortdescr=Modalità di cattura della posizione su attivazione di un ingresso digitale per interruzione| | ||
+ | |dim=Byte| | ||
+ | |default=Ritentivo| | ||
+ | |accesstype=Read - Write| | ||
+ | |um=-| | ||
+ | |id= - | | ||
+ | |range=0÷2| | ||
+ | |wrcond=-| | ||
+ | |longdescr=Il parametro definisce il modo di cattura della posizione in impulsi primari sull' | ||
+ | * 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' | ||
+ | per interruzione dopo l' | ||
+ | * 2: One-shot su fronte di salita. Viene catturata la posizione istantanea in impulsi primari sul primo fronte di salita del segnale dell' | ||
+ | |||
+ | ---- | ||
+ | ===tbf=== | ||
+ | {{template> | ||
+ | |shortdescr=Tempo di campionamento del frequenzimetro| | ||
+ | |dim=Byte| | ||
+ | |default=Ritentivo| | ||
+ | |accesstype=Read - Write| | ||
+ | |um=-| | ||
+ | |id= - | | ||
+ | |range=0÷5| | ||
+ | |wrcond=-| | ||
+ | |longdescr=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' | ||
+ | |||
+ | ---- | ||
+ | ===frq=== | ||
+ | {{template> | ||
+ | |shortdescr=Frequenza dei segnali di ingresso| | ||
+ | |dim=Long| | ||
+ | |default=0| | ||
+ | |accesstype=Read| | ||
+ | |um=Hz| | ||
+ | |id= - | | ||
+ | |range=-| | ||
+ | |wrcond=-| | ||
+ | |longdescr=È il valore della frequenza dei segnali in ingresso al contatore bidirezionale. L' | ||
+ | scelto tramite il parametro //tbf//.}} | ||
+ | |||
+ | ---- | ||
+ | ===mode1=== | ||
+ | {{template> | ||
+ | |shortdescr=Modalità di comando dell' | ||
+ | |dim=Byte| | ||
+ | |default=Ritentivo| | ||
+ | |accesstype=Read - Write| | ||
+ | |um=-| | ||
+ | |id= - | | ||
+ | |range=0÷6| | ||
+ | |wrcond=-| | ||
+ | |longdescr=Con questo parametro si decidono le regole di attivazione e disattivazione dell' | ||
+ | |||
+ | ---- | ||
+ | ===selout1=== | ||
+ | {{template> | ||
+ | |shortdescr=Uscita comandata dal comparatore 1| | ||
+ | |dim=Byte| | ||
+ | |default=Ritentivo| | ||
+ | |accesstype=Read - Write| | ||
+ | |um=-| | ||
+ | |id= - | | ||
+ | |range=0÷1| | ||
+ | |wrcond=-| | ||
+ | |longdescr=Indica quale uscita viene comandata dal comparatore 1: | ||
+ | * 0: Out1, | ||
+ | * 1: Out2.}} | ||
+ | |||
+ | ---- | ||
+ | ===setpoint1=== | ||
+ | {{template> | ||
+ | |shortdescr=Soglia di comparazione per il comparatore 1| | ||
+ | |dim=Long| | ||
+ | |default=Ritentivo| | ||
+ | |accesstype=Read - Write| | ||
+ | |um=Um| | ||
+ | |id= - | | ||
+ | |range=-999999÷999999| | ||
+ | |wrcond=-| | ||
+ | |longdescr=Definisce il setpoint (la soglia) con cui viene confrontato il valore istantaneo di posizione in impulsi primari. L' | ||
+ | indicata dal parametro // | ||
+ | |||
+ | ---- | ||
+ | ===timer1=== | ||
+ | {{template> | ||
+ | |shortdescr=Tempo di ritardo di attivazione dell' | ||
+ | |dim=Word| | ||
+ | |default=Ritentivo| | ||
+ | |accesstype=Read - Write| | ||
+ | |um=ms| | ||
+ | |id= - | | ||
+ | |range=-999999÷999999| | ||
+ | |wrcond=-| | ||
+ | |longdescr=Relativamente all' | ||
+ | |||
+ | ---- | ||
+ | ===mode2=== | ||
+ | {{template> | ||
+ | |shortdescr=Modalità di comando dell' | ||
+ | |dim=Byte| | ||
+ | |default=Ritentivo| | ||
+ | |accesstype=Read - Write| | ||
+ | |um=-| | ||
+ | |id= - | | ||
+ | |range=0÷6| | ||
+ | |wrcond=-| | ||
+ | |longdescr=Con questo parametro si decidono le regole di attivazione e disattivazione dell' | ||
+ | |||
+ | ---- | ||
+ | ===selout2=== | ||
+ | {{template> | ||
+ | |shortdescr=Uscita comandata dal comparatore 1| | ||
+ | |dim=Byte| | ||
+ | |default=Ritentivo| | ||
+ | |accesstype=Read - Write| | ||
+ | |um=-| | ||
+ | |id= - | | ||
+ | |range=0÷1| | ||
+ | |wrcond=-| | ||
+ | |longdescr=Indica quale uscita viene comandata dal comparatore 2: | ||
+ | * 0: Out1, | ||
+ | * 1: Out2.}} | ||
+ | |||
+ | ---- | ||
+ | ===setpoint2=== | ||
+ | {{template> | ||
+ | |shortdescr=Soglia di comparazione per il comparatore 1| | ||
+ | |dim=Long| | ||
+ | |default=Ritentivo| | ||
+ | |accesstype=Read - Write| | ||
+ | |um=Um| | ||
+ | |id= - | | ||
+ | |range=-999999÷999999| | ||
+ | |wrcond=-| | ||
+ | |longdescr=Definisce il setpoint (la soglia) con cui viene confrontato il valore istantaneo di posizione in impulsi primari. L' | ||
+ | indicata dal parametro // | ||
+ | |||
+ | ---- | ||
+ | ===timer2=== | ||
+ | {{template> | ||
+ | |shortdescr=Tempo di ritardo di attivazione dell' | ||
+ | |dim=Word| | ||
+ | |default=Ritentivo| | ||
+ | |accesstype=Read - Write| | ||
+ | |um=ms| | ||
+ | |id= - | | ||
+ | |range=-999999÷999999| | ||
+ | |wrcond=-| | ||
+ | |longdescr=Relativamente all' | ||
+ | |||
+ | ---- | ||
+ | ===errcode=== | ||
+ | {{template> | ||
+ | |shortdescr=Codice di identificazione errore| | ||
+ | |dim=Byte| | ||
+ | |default=0| | ||
+ | |accesstype=Read| | ||
+ | |um=-| | ||
+ | |id= - | | ||
+ | |range=0÷100| | ||
+ | |wrcond=-| | ||
+ | |longdescr=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' | ||
+ | Questo device non prevede alcun codice di errore.)}} | ||
+ | |||
+ | ---- | ||
+ | ===errvalue=== | ||
+ | {{template> | ||
+ | |shortdescr=Codice di identificazione della causa dell' | ||
+ | |dim=Byte| | ||
+ | |default=0| | ||
+ | |accesstype=Read| | ||
+ | |um=-| | ||
+ | |id= - | | ||
+ | |range=0÷100| | ||
+ | |wrcond=-| | ||
+ | |longdescr=Indica la causa dell' | ||
+ | |||
+ | ---- | ||
+ | ===wrncode=== | ||
+ | {{template> | ||
+ | |shortdescr=Codice di identificazione warning| | ||
+ | |dim=Byte| | ||
+ | |default=0| | ||
+ | |accesstype=Read| | ||
+ | |um=-| | ||
+ | |id= - | | ||
+ | |range=0÷100| | ||
+ | |wrcond=-| | ||
+ | |longdescr=Indica il tipo di warning intervenuto nel sistema. Lo stato // | ||
+ | Quando // | ||
+ | |||
+ | ^Codice^Priorità^Descrizione^ | ||
+ | | 1 | 0 |Comando non eseguito| | ||
+ | ---- | ||
+ | ===wrnvalue=== | ||
+ | {{template> | ||
+ | |shortdescr=Codice di identificazione della causa del warning| | ||
+ | |dim=Byte| | ||
+ | |default=0| | ||
+ | |accesstype=Read| | ||
+ | |um=-| | ||
+ | |id= - | | ||
+ | |range=0÷100| | ||
+ | |wrcond=-| | ||
+ | |longdescr=Indica la causa del warning intervenuto nel sistema.)}} | ||
+ | |||
+ | ---- | ||
+ | |||
+ | ===== - Elenco Stati ===== | ||
+ | ===st_cntlock=== | ||
+ | {{template> | ||
+ | |shortdescr=Stato di aggiornamento posizione disabilitato| | ||
+ | |default= Ritentivo| | ||
+ | |id= -| | ||
+ | |longdescr=Segnalazione di aggiornamento posizione bloccato: | ||
+ | * 0: aggiornamento posizione abilitato, | ||
+ | * 1: aggiornamento posizione disabilitato }} | ||
+ | ------ | ||
+ | |||
+ | ===st_cntrev=== | ||
+ | {{template> | ||
+ | |shortdescr=Stato di inversione aggiornamento posizione| | ||
+ | |default= Ritentivo| | ||
+ | |id= -| | ||
+ | |longdescr=Segnalazione di aggiornamento posizione invertito: | ||
+ | * 0: aggiornamento posizione non invertito, | ||
+ | * 1: aggiornamento posizione invertito }} | ||
+ | ------ | ||
+ | |||
+ | ===st_intenbl=== | ||
+ | {{template> | ||
+ | |shortdescr=Stato di attivazione dell' | ||
+ | |default= 0| | ||
+ | |id= -| | ||
+ | |longdescr=Segnala l' | ||
+ | ------ | ||
+ | |||
+ | ===st_capture=== | ||
+ | {{template> | ||
+ | |shortdescr=Attivazione della cattura della posizione istantanea| | ||
+ | |default= 0| | ||
+ | |id= -| | ||
+ | |longdescr=Viene attivato alla cattura della posizione istantanea, è resettato tramite il comando // | ||
+ | ------ | ||
+ | |||
+ | ===st_int=== | ||
+ | {{template> | ||
+ | |shortdescr=Stato dell' | ||
+ | |default= 0| | ||
+ | |id= -| | ||
+ | |longdescr=Indica lo stato dell' | ||
+ | * 0: ingresso digitale per interruzione disattivo, | ||
+ | * 1: ingresso digitale per interruzione attivo.}} | ||
+ | ------ | ||
+ | |||
+ | ===st_cmp1=== | ||
+ | {{template> | ||
+ | |shortdescr=Stato della comparazione 1| | ||
+ | |default= 0| | ||
+ | |id= -| | ||
+ | |longdescr=Segnalazione di attivazione della comparazione 1: | ||
+ | * 0: comparazione 1 disattiva, | ||
+ | * 1: comparazione 1 attiva}} | ||
+ | ------ | ||
+ | |||
+ | ===st_cmp2=== | ||
+ | {{template> | ||
+ | |shortdescr=Stato della comparazione 2| | ||
+ | |default= 0| | ||
+ | |id= -| | ||
+ | |longdescr=Segnalazione di attivazione della comparazione 2: | ||
+ | * 0: comparazione 2 disattiva, | ||
+ | * 1: comparazione 2 attiva}} | ||
+ | ------ | ||
+ | |||
+ | ===st_error=== | ||
+ | {{template> | ||
+ | |shortdescr=Presenza di un errore| | ||
+ | |default= 0| | ||
+ | |id= -| | ||
+ | |longdescr=Indica lo stato di errore del device, per riconoscere il tipo di errore si deve far riferimento alle variabili //errcode// ed // | ||
+ | * 0: errore non presente, | ||
+ | * 1: errore presente}} | ||
+ | ------ | ||
+ | |||
+ | ===st_warning=== | ||
+ | {{template> | ||
+ | |shortdescr=Presenza di un warning| | ||
+ | |default= 0| | ||
+ | |id= -| | ||
+ | |longdescr=Indica lo stato di warning del device, per riconoscere il tipo di warning si deve far riferimento alle variabili //wrncode// e // | ||
+ | * 0: warning non presente, | ||
+ | * 1: warning presente}} | ||
+ | ------ | ||
+ | |||
+ | ===== - Elenco Comandi ===== | ||
+ | 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' | ||
+ | |||
+ | ===CNTLOCK=== | ||
+ | {{template> | ||
+ | |cond= - | | ||
+ | |shortdescr=Disabilita l' | ||
+ | |id= -| | ||
+ | |longdescr=Disabilita l' | ||
+ | --------- | ||
+ | |||
+ | ===CNTUNLOCK=== | ||
+ | {{template> | ||
+ | |cond= - | | ||
+ | |shortdescr=Abilita l' | ||
+ | |id= -| | ||
+ | |longdescr=Abilita l' | ||
+ | --------- | ||
+ | |||
+ | ===CNTREV=== | ||
+ | {{template> | ||
+ | |cond= - | | ||
+ | |shortdescr=Inversione dell' | ||
+ | |id= -| | ||
+ | |longdescr=Consente di invertire il segno dell' | ||
+ | --------- | ||
+ | |||
+ | ===CNTDIR=== | ||
+ | {{template> | ||
+ | |cond= - | | ||
+ | |shortdescr=Aggiornamento posizione non invertita| | ||
+ | |id= -| | ||
+ | |longdescr=Disabilita una eventuale inversione dell' | ||
+ | --------- | ||
+ | |||
+ | ===INTENBL=== | ||
+ | {{template> | ||
+ | |cond= capture> | ||
+ | |shortdescr=Abilitazione della cattura della posizione istantanea su attivazione dell' | ||
+ | |id= -| | ||
+ | |longdescr=Attiva la cattura della posizione attuale sulla attivazione dell' | ||
+ | Attiva lo stato // | ||
+ | |||
+ | ===INTDSBL=== | ||
+ | {{template> | ||
+ | |cond= - | | ||
+ | |shortdescr=Disabilitazione della cattura della posizione attuale su attivazione dell' | ||
+ | |id= -| | ||
+ | |longdescr=Disattiva la cattura della posizione attuale sulla attivazione dell' | ||
+ | Disattiva lo stato // | ||
+ | --------- | ||
+ | |||
+ | ===RSCAPTURE=== | ||
+ | {{template> | ||
+ | |cond= - | | ||
+ | |shortdescr=Disattivazione dello stato di cattura| | ||
+ | |id= -| | ||
+ | |longdescr=Disattiva lo stato di capture // | ||
+ | --------- | ||
+ | |||
+ | ===DELCNT=== | ||
+ | {{template> | ||
+ | |cond= st_intenbl=0 | | ||
+ | |shortdescr=Comando di modifica di //posit// di un valore pari a //delta//| | ||
+ | |id= -| | ||
+ | |longdescr=La posizione dell' | ||
+ | --------- | ||
+ | |||
+ | ===SETCMP1=== | ||
+ | {{template> | ||
+ | |cond= - | | ||
+ | |shortdescr=Attivazione della comparazione 1| | ||
+ | |id= -| | ||
+ | |longdescr=Forza l' | ||
+ | --------- | ||
+ | |||
+ | ===RESCMP1=== | ||
+ | {{template> | ||
+ | |cond= - | | ||
+ | |shortdescr=Reset della comparazione 1| | ||
+ | |id= -| | ||
+ | |longdescr=Azzera lo stato // | ||
+ | --------- | ||
+ | |||
+ | ===SETCMP2=== | ||
+ | {{template> | ||
+ | |cond= - | | ||
+ | |shortdescr=Attivazione della comparazione 2| | ||
+ | |id= -| | ||
+ | |longdescr=Forza l' | ||
+ | --------- | ||
+ | |||
+ | ===RESCMP2=== | ||
+ | {{template> | ||
+ | |cond= - | | ||
+ | |shortdescr=Reset della comparazione 2| | ||
+ | |id= -| | ||
+ | |longdescr=Azzera lo stato // | ||
+ | --------- | ||
+ | |||
+ | ===RSERR=== | ||
+ | {{template> | ||
+ | |cond= - | | ||
+ | |shortdescr=Reset dello stato di errore| | ||
+ | |id= -| | ||
+ | |longdescr=Azzera lo stato // | ||
+ | --------- | ||
+ | |||
+ | ===RSWRN=== | ||
+ | {{template> | ||
+ | |cond= - | | ||
+ | |shortdescr=Reset dello stato di warning| | ||
+ | |id= -| | ||
+ | |longdescr=Azzera lo stato // | ||
+ | --------- | ||
+ | |||
+ | ===== - Limitazioni ===== | ||
+ | |||
+ | Se vengono modificati i parametri //measure// o //pulse// successivamente allinvio del comando //DELCNT//, vengono azzerati i resti della conversione del delta spazio in impulsi. | ||
+ | |||
+ | |||
+ | ===== - Esempio applicativo ===== | ||
+ | |||
+ | ^: | ||
+ | |||
+ | ==== - Unit di configurazione ==== | ||
+ | |||
+ | <code QCL> | ||
+ | ; | ||
+ | ; COUNTER3 example | ||
+ | ; | ||
+ | |||
+ | ; Bus declaration | ||
+ | BUS | ||
+ | 1 1K31F 20 | ||
+ | 2 . . | ||
+ | 3 1MG8F . | ||
+ | 4 . | ||
+ | |||
+ | ; Input declaration | ||
+ | INPUT | ||
+ | ifEnableZ | ||
+ | ifEnableComp | ||
+ | |||
+ | ; Output declaration | ||
+ | OUTPUT | ||
+ | out201 | ||
+ | out202 | ||
+ | |||
+ | ; Device declaration | ||
+ | INTDEVICE | ||
+ | Count COUNTER3 | ||
+ | |||
+ | END | ||
+ | </ | ||
+ | |||
+ | ==== - Unit di gestione del COUNTER3 ==== | ||
+ | |||
+ | <code QCL> | ||
+ | SYSTEM | ||
+ | slPrsPos | ||
+ | slSet1 | ||
+ | slSet2 | ||
+ | |||
+ | GLOBAL | ||
+ | gfApp01 | ||
+ | gfApp02 | ||
+ | |||
+ | BEGIN | ||
+ | ; | ||
+ | ; Initialization | ||
+ | ; | ||
+ | Count.measure = 1000 ; | ||
+ | Count.pulse = 1000 ; | ||
+ | |||
+ | Count.capture = 1 ;set capture on rise edge | ||
+ | IF slSet1 EQ 0 | ||
+ | slSet1 = 500 ; | ||
+ | ENDIF | ||
+ | IF slSet2 EQ 0 | ||
+ | slSet2 = 100 ; | ||
+ | ENDIF | ||
+ | |||
+ | MAIN: | ||
+ | |||
+ | |||
+ | IF ifEnableZ | ||
+ | Count.INTENBL | ||
+ | ELSE | ||
+ | Count.INTDSBL | ||
+ | ENDIF | ||
+ | |||
+ | IF Count.st_capture | ||
+ | Count.delta = -(Count.delta - slPrsPos) | ||
+ | Count.DELCNT | ||
+ | Count.RSCAPTURE | ||
+ | ENDIF | ||
+ | |||
+ | IF ifEnableComp | ||
+ | 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 ; | ||
+ | RESOUT out201 | ||
+ | Count.selout1 = 0 | ||
+ | Count.mode2 = 0 ; | ||
+ | RESOUT out202 | ||
+ | Count.selout2 = 1 | ||
+ | gfApp01 = 0 | ||
+ | gfApp02 = 1 | ||
+ | ENDIF | ||
+ | ENDIF | ||
+ | |||
+ | WAIT 1 | ||
+ | JUMP MAIN | ||
+ | |||
+ | END | ||
+ | </ | ||
+ | |||