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:counter2 [2019/08/29 17:01] – modifica esterna 127.0.0.1 | software:devices:counter2 [2024/04/18 08:18] (versione attuale) – [1. Introduzione] documentazione | ||
---|---|---|---|
Linea 1: | Linea 1: | ||
+ | ====== DEVICE COUNTER2 ====== | ||
+ | |||
+ | ====== - Introduzione ====== | ||
+ | |||
+ | * Il device interno COUNTER2 é uno tool residente nella CPU che permette di gestire l' | ||
+ | * Il valore acquisito viene convertito internamente in spazio e proposto nellunità di misura scelta dallutilizzatore. | ||
+ | * Sono incluse le funzioni di delta conteggio DELCNT per posizionamenti incrementali e cattura del conteggio su interrupt hardware.\\ I cablaggi e collegamenti dellapparecchiatura descritta nel presente manuale, devono rispettare la Normativa Europea EN60204-1. | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | |||
+ | ===== - Installazione ===== | ||
+ | |||
+ | ==== - Dichiarazione device nel file di configurazione (.CNF) ==== | ||
+ | |||
+ | Nel file di configurazione (.CNF), la sezione BUS deve essere dichiarata in modo tale che siano | ||
+ | presenti le risorse hardware necessarie all' | ||
+ | presente almeno un contatore bidirezionale. Il device può utilizzare anche una linea di interrupt | ||
+ | per le funzioni di cattura conteggio su interrupt ad esempio caricamento quota di preset).\\ | ||
+ | Nella sezione INTDEVICE del file .CNF deve essere aggiunta la seguente definizione: | ||
+ | <code QCL> | ||
+ | ; | ||
+ | ; Dichiarazione devices interni | ||
+ | ; | ||
+ | INTDEVICE | ||
+ | .. | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | ^:info:^È necessario che tutte le voci di definizione siano presenti sulla stessa linea. Nel caso in cui non si desideri associare una risorsa, ad esempio IntL, si deve comunque inserire nel relativo campo la stringa X.^ | ||
+ | |||
+ | dove: | ||
+ | |<nome device> | ||
+ | |COUNTER2|Parola chiave che identifica il device contatore bidirezionale.| | ||
+ | |TCamp|Tempo di campionamento device (1÷255 ms).| | ||
+ | |QCTL|Indirizzo contatore presente nella scheda.| | ||
+ | |IntL|Numero della linea di interrupt hardware dedicata per l' | ||
+ | |||
+ | === - Esempio === | ||
+ | <code QCL> | ||
+ | ; | ||
+ | ; Dichiarazione devices interni | ||
+ | ; | ||
+ | INTDEVICE | ||
+ | Count COUNTER2 | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== - Funzionamento ===== | ||
+ | |||
+ | ==== - Risoluzione trasduttore ==== | ||
+ | |||
+ | Per lutilizzo del device è necessario definire la risoluzione del trasduttore.\\ | ||
+ | // | ||
+ | Questa costante di conversione permette di trasdurre gli impulsi letti in spazio percorso dallasse. | ||
+ | Il rapporto spazio/ | ||
+ | introdotto nel parametro in valore intero, deve essere moltiplicato per 100000.\\ | ||
+ | Una volta impostata correttamente la risoluzione sarà possibile leggere la posizione istantanea | ||
+ | dellasse (in unità di misura) nel parametro //posit//. | ||
+ | |||
+ | ==== - Operazioni con il conteggio ==== | ||
+ | |||
+ | È possibile bloccare e sbloccare laggiornamento del conteggio con i comandi //CNTLOCK// e // | ||
+ | E possibile invertire e ripristinare la direzione del conteggio con //CNTREV// e //CNTDIR//. | ||
+ | |||
+ | ==== - Acquisizione veloce del conteggio su interrupt hardware ==== | ||
+ | |||
+ | I comandi //INTENBL// e //INTDSBL// abilitano e disabilitano la linea di interrupt collegata allimpulso | ||
+ | di zero del trasduttore . 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//. | ||
+ | |||
+ | ==== - Delta conteggio ==== | ||
+ | |||
+ | ^:info:^La modifica del valore di risoluzione (// | ||
+ | |||
+ | Il device visualizza sempre la posizione assoluta dell' | ||
+ | eseguito anche con una scrittura diretta nel nuovo valore nel parametro // | ||
+ | Volendo sottrarre 100 unità di misura al conteggio è possibile: | ||
+ | // | ||
+ | Questa operazione introduce un errore perché impone la posizione "// | ||
+ | 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' | ||
+ | errore non trascurabile.\\ | ||
+ | Il comando //DELCNT// somma al conteggio una quantità pari al parametro //delta// senza perdere la | ||
+ | parte frazionaria della posizione: | ||
+ | // | ||
+ | //DELCNT Asse// | ||
+ | |||
+ | === - Esempio === | ||
+ | La lettura della posizione dellasse risulta essere di 2 unità e si trova nel punto A. Si vuole | ||
+ | sommare al conteggio //posit// tre unità di misura.\\ | ||
+ | Con le istruzioni: | ||
+ | // | ||
+ | lasse assume la nuova posizione B.\\ | ||
+ | Con le istruzioni: | ||
+ | // | ||
+ | //DELCNT Asse//\\ | ||
+ | viene raggiunta la posizione C. | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Si noti che con le prime istruzioni lasse ha compiuto un delta inferiore a 3 unità e quindi è stato | ||
+ | introdotto un errore.\\ | ||
+ | Se si devono inviare comandi //DELCNT// in successione, | ||
+ | sommare ed inviare una sola volta il comando; in caso contrario prestare attenzione a non | ||
+ | inviare comandi successivi senza interporre una istruzione di lettura su parametro device. | ||
+ | |||
+ | === - Esempio === | ||
+ | // | ||
+ | //DELCNT Asse//\\ | ||
+ | //WAIT Asse: | ||
+ | // | ||
+ | //DELCNT Asse// | ||
+ | |||
+ | |||
+ | ===== - Tabella comandi e parametri ===== | ||
+ | |||
+ | ==== - Simbologia adottata ==== | ||
+ | |||
+ | Il **nome** del parametro, stato o comando viene riportato alla sinistra della tabella. | ||
+ | |||
+ | **R**\\ | ||
+ | Indica se il relativo parametro o stato è ritentivo (al momento dellinizializzazione del device | ||
+ | mantiene lo stato precedentemente definito), oppure lo stato che assume al momento | ||
+ | dellinizializzazione del device.\\ | ||
+ | Se il device non necessita di inizializzazione il campo R indica il valore che il parametro o | ||
+ | stato assume allaccensione della scheda.\\ | ||
+ | R = Ritentivo\\ | ||
+ | 0 = Al momento dellinizializzazione del device il valore viene forzato a zero.\\ | ||
+ | 1 = Al momento dellinizializzazione del device il valore viene forzato a uno.\\ | ||
+ | - = Al momento dellinizializzazione del device viene presentato il valore significativo. | ||
+ | |||
+ | **D**\\ | ||
+ | Indica la dimensione del parametro.\\ | ||
+ | F = Flag\\ | ||
+ | B = Byte\\ | ||
+ | W = Word\\ | ||
+ | L = Long\\ | ||
+ | S = Single Float\\ | ||
+ | |||
+ | === - Condizioni === | ||
+ | Vengono descritte tutte le **condizioni necessarie affinché il parametro sia considerato corretto o perché il comando venga accettato**.\\ | ||
+ | In alcuni casi vengono specificati dei valori limite per laccettazione del parametro: se vengono | ||
+ | introdotti dei valori esterni ai limiti impostati, il dato viene comunque accettato; pertanto | ||
+ | devono essere previsti opportuni controlli dellapplicativo tali da garantire il corretto funzionamento.\\ | ||
+ | Per lesecuzione di un comando, tutte le relative condizioni devono necessariamente essere | ||
+ | soddisfatte; | ||
+ | |||
+ | **A**\\ | ||
+ | Indica la **modalità di accesso**.\\ | ||
+ | R = Read (lettura).\\ | ||
+ | W = Write (scrittura).\\ | ||
+ | RW = Read / Write. | ||
+ | |||
+ | ==== - Comandi ==== | ||
+ | |||
+ | I comandi sono stati ordinati con priorità decrescente. Ad esempio, in caso di contemporaneità dei comandi //CNTLOCK// ed // | ||
+ | |||
+ | ^Nome^Condizioni^Descrizione^ | ||
+ | |CNTLOCK|st_init = 1|**Counter lock**\\ Blocca l' | ||
+ | |CNTUNLOCK|st_init = 1|**Counter unlock**\\ Sblocca il conteggio dell' | ||
+ | |CNTREV|st_init = 1|**Counter reverse**\\ Consente di invertire le fasi del trasduttore all' | ||
+ | |CNTDIR|st_init = 1|**Counter direct**\\ Il conteggio dell' | ||
+ | |INTENBL|st_init = 1\\ capture> | ||
+ | |INTDSBL|st_init = 1|**Interrupt disable**\\ Disabilita la cattura del conteggio.\\ Disattiva lo stato // | ||
+ | |RSCAPTURE|st_init = 1|**Reset capture**\\ Disattiva lo stato di // | ||
+ | |DELCNT|st_init = 1\\ st_intenbl = 0|**Delta counter**\\ Il conteggio (posizione dell' | ||
+ | |||
+ | ==== - Parametri ==== | ||
+ | |||
+ | ^Nome^D^R^A^Condizioni^Descrizione^ | ||
+ | |cntratio|L|R|R-W|Nessuna|**Counter ratio**\\ Definisce per quanto vanno moltiplicati gli impulsi del trasduttore in modo che l' | ||
+ | |posit|L|R|R-W|Nessuna|**Actual position**\\ È il valore della posizione istantanea dell' | ||
+ | |delta|L|R|R-W|Nessuna|**Delta counter**\\ È il valore che viene sommato al conteggio quando viene inviato un comando DELCNT.\\ Valore espresso in unità di misura(Um).\\ Range valido: -999999 ÷ 999999.| | ||
+ | |capture|B|R|R-W|Nessuna|**Capture mode**\\ Definisce il modo di cattura del conteggio su interrupt hardware.\\ **0** = Disabilitato.\\ **1** = Singola cattura sul fronte di discesa.\\ **2** = Singola cattura sul fronte di salita.\\ **N.B.** La cattura del conteggio è abilitata se lo stato st_intenbl = 1.| | ||
+ | |||
+ | ==== - Stati ==== | ||
+ | |||
+ | ^Nome^D^R^A^Condizioni^Descrizione^ | ||
+ | |st_cntlock|F|R|R|Nessuna|**Counter locked**\\ Segnalazione di conteggio asse bloccato.\\ **0** = Conteggio asse sbloccato.\\ **1** = Conteggio asse bloccato.| | ||
+ | |st_cntrev|F|R|R|Nessuna|**Counter reversed**\\ Segnalazione di conteggio asse invertito.\\ **0** = Conteggio asse non invertito.\\ **1** = Conteggio asse invertito.| | ||
+ | |st_intenbl|F|0|R|Nessuna|**Interrupt enabled**\\ Segnala l' | ||
+ | |st_capture|F|0|R|Nessuna|**Counter capture**\\ Viene attivato alla cattura del conteggio; viene resettato dal comando // | ||
+ | |||
+ | |||
+ | ===== - Limitazioni ===== | ||
+ | |||
+ | Se viene modificato il parametro // | ||
+ | |||
+ | |||
+ | ===== - Esempio applicativo ===== | ||
+ | |||
+ | ==== - File di configurazione ==== | ||
+ | |||
+ | <code QCL> | ||
+ | ; | ||
+ | ; Nome Modulo: Ex_Count.CNF | ||
+ | ; Autore: QEM srl Data : 01/05/99 | ||
+ | ; Sistema: QMove1 / QCL3 | ||
+ | ; Funzionalità: | ||
+ | ; | ||
+ | ; [1] - Applicativo di esempio per utilizzo device COUNTER 2 | ||
+ | ; | ||
+ | |||
+ | ; | ||
+ | ; Definizione Costanti | ||
+ | ; | ||
+ | CONST | ||
+ | |||
+ | ; | ||
+ | ; Definizione Variabili SYSTEM | ||
+ | ; | ||
+ | SYSTEM | ||
+ | slPrsPos | ||
+ | slSet1 | ||
+ | slSet2 | ||
+ | |||
+ | ; | ||
+ | ; Definizione Variabili GLOBAL | ||
+ | ; | ||
+ | GLOBAL | ||
+ | |||
+ | ; | ||
+ | ; Definizione Variabili TIMER | ||
+ | ; | ||
+ | TIMER | ||
+ | |||
+ | ; | ||
+ | ; Definizione DATAGROUP | ||
+ | ; | ||
+ | ;DATAGROUP | ||
+ | |||
+ | ; | ||
+ | ; Configurazione Bus | ||
+ | ; | ||
+ | BUS | ||
+ | 1 | ||
+ | 2 | ||
+ | 3 . | ||
+ | 4 . | ||
+ | |||
+ | ; | ||
+ | ; Definizione Variabili INPUT | ||
+ | ; | ||
+ | INPUT | ||
+ | ifAbilZ | ||
+ | ifAxeFermo | ||
+ | |||
+ | ; | ||
+ | ; Definizione Variabili OUTPUT | ||
+ | ; | ||
+ | OUTPUT | ||
+ | ofGTSet1 | ||
+ | ofLTSet2 | ||
+ | |||
+ | ; | ||
+ | ; Dichiarazione device interni | ||
+ | ; | ||
+ | INTDEVICE | ||
+ | ;Nome Tipo | ||
+ | Asse | ||
+ | |||
+ | END | ||
+ | </ | ||
+ | |||
+ | ==== - Gestione COUNTER2 ==== | ||
+ | |||
+ | <code QCL> | ||
+ | ; | ||
+ | ; Nome File: TASK_00.MOD | ||
+ | ; Progetto : EX_COUNT | ||
+ | ; Descrizione: | ||
+ | ; | ||
+ | |||
+ | ; | ||
+ | ; Operazioni di Inizializzazione Asse | ||
+ | ; | ||
+ | Asse: | ||
+ | ; | ||
+ | Asse: | ||
+ | IF slSet1 EQ 0 | ||
+ | slSet1 = 500 | ||
+ | ENDIF | ||
+ | IF slSet2 EQ 0 | ||
+ | slSet2 = 100 | ||
+ | ENDIF | ||
+ | |||
+ | ; | ||
+ | ; Ricerca di preset abilitata ad ogni passaggio sul finecorsa | ||
+ | ; ---------------------------- variabili utilizzate --------------------------------- | ||
+ | ; slPrsPos : Quota di preset impostata | ||
+ | ; | ||
+ | MAIN: | ||
+ | IF ifAbilZ | ||
+ | ;impulso di zero trasduttore | ||
+ | INTENBL Asse ;Abilita la cattura dell' | ||
+ | ; | ||
+ | ELSE | ||
+ | INTDSBL Asse ;Disabilita la cattura dell' | ||
+ | ;zero trasduttore | ||
+ | ENDIF | ||
+ | | ||
+ | IF Asse: | ||
+ | IF ifAxeFermo | ||
+ | Asse:delta = -(Asse: | ||
+ | DELCNT Asse ; | ||
+ | RSCAPTURE Asse ;Resetto st_capture dell' | ||
+ | ENDIF | ||
+ | ENDIF | ||
+ | |||
+ | ; | ||
+ | ; Comparazioni sul conteggio | ||
+ | ; ----------------------------- variabili utilizzate -------------------------------- | ||
+ | ; slSet1: Quota di comparazione per uscita ofGTSet1 | ||
+ | ; slSet1: Quota di comparazione per uscita ofLTSet2 | ||
+ | ; | ||
+ | IF Asse:posit GT slSet1 | ||
+ | SETOUT ofGTSet1 | ||
+ | ELSE | ||
+ | RESOUT ofGTSet1 | ||
+ | ENDIF | ||
+ | IF Asse:posit LT slSet2 | ||
+ | SETOUT ofLTSet2 | ||
+ | ELSE | ||
+ | RESOUT ofLTSet2 | ||
+ | ENDIF | ||
+ | |||
+ | ; | ||
+ | ; Operazioni finali | ||
+ | ; | ||
+ | WAIT 1 | ||
+ | JUMP MAIN | ||
+ | | ||
+ | END | ||
+ | </ | ||
+ | |||