Differenze
Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.
| Prossima revisione | Revisione precedente | ||
| software:devices:aninp2 [2014/10/23 15:12] – modifica esterna 127.0.0.1 | software:devices:aninp2 [2025/01/21 11:23] (versione attuale) – [1.8.1 Unit di configurazione] qem218 | ||
|---|---|---|---|
| Linea 1: | Linea 1: | ||
| + | ====== DEVICE ANINP2 ====== | ||
| + | |||
| + | |||
| + | ====== - Introduzione ====== | ||
| + | |||
| + | * Il device gestisce la lettura ed elaborazione di un ingresso analogico. | ||
| + | * Il dato letto è una word a 16 bit con segno alla quale è possibile sommare un offset, inserire un fattore di scala ed attivare un filtro software passa basso del tipo RC. | ||
| + | * Le specifiche di risoluzione dellingresso vengono riportate nel fascicolo hardware della scheda. | ||
| + | * Le uscite sono programmabili per eseguire comparazioni sullingresso analogico | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | ===== - Installazione ===== | ||
| + | |||
| + | Dichiarazione del device nella unit di configurazione | ||
| + | Nella unit di configurazione, | ||
| + | presenti le risorse hardware necessarie allimplementazione del device ANINP2. Deve essere | ||
| + | presente almeno un ingresso analogico con risoluzione massima di 16 bit.\\ | ||
| + | Nella sezione INTDEVICE della unit di configurazione deve essere aggiunta la seguente definizione: | ||
| + | |||
| + | <code QCL> | ||
| + | ; | ||
| + | ; Dichiarazione devices | ||
| + | ; | ||
| + | INTDEVICE | ||
| + | ... | ||
| + | <nome device> | ||
| + | </ | ||
| + | |||
| + | dove: | ||
| + | |<nome device> | ||
| + | |ANINP2|Parola chiave che identifica il device ingresso analogico| | ||
| + | |Tcamp|Tempo campionamento device (1÷255 ms)| | ||
| + | |IChn|indirizzo ingresso ADC| | ||
| + | |Type|Numero indentificativo tipo di ingresso (fare riferimento alla scheda tecnica hardware)| | ||
| + | |Out1|Indirizzo uscita 1 di comparazione (per evitare che il device utilizzi questa risorsa inserire il carattere X.X)| | ||
| + | |Out2|Indirizzo uscita 2 di comparazione (per evitare che il device utilizzi questa risorsa inserire il carattere X.X)| | ||
| + | |||
| + | ===== - Esempio ===== | ||
| + | |||
| + | <code QCL> | ||
| + | ; | ||
| + | ; Dichiarazione devices | ||
| + | ; | ||
| + | INTDEVICE | ||
| + | Asse_X | ||
| + | </ | ||
| + | |||
| + | ===== - Funzionamento ===== | ||
| + | |||
| + | All' | ||
| + | utilizzare, definito nella unit di configurazione (Type).\\ | ||
| + | Se la diagnostica del canale si conclude con successo, viene eseguito l' | ||
| + | sulla base del tempo di campionamento. Nel caso vengano riscontrati errori o imprecisioni, | ||
| + | stato // | ||
| + | La conversione del dato in uscita dal device (// | ||
| + | viene eseguita ricorrendo a dei fattori di scala (// | ||
| + | formula: | ||
| + | |||
| + | //**outUm = (scaleA x outbit / scaleB) + scaleC**// | ||
| + | |||
| + | Oltre a questa uscita aggiornata sulla base del tempo di campionamento del device, è disponibile | ||
| + | l' | ||
| + | |||
| + | ^: | ||
| + | |||
| + | {{: | ||
| + | |||
| + | ==== - Gestione uscite ==== | ||
| + | |||
| + | Il device ha la possibilità di gestire delle comparazioni sullingresso analogico mediato (// | ||
| + | e variare lo stato delle uscite programmabili in modalità one shot (singola attivazione).\\ | ||
| + | Ogni uscita ha la possibilità di essere gestita nei modi seguenti: | ||
| + | |||
| + | |{{: | ||
| + | |{{: | ||
| + | |{{: | ||
| + | |{{: | ||
| + | |{{: | ||
| + | |{{: | ||
| + | |||
| + | ==== - Isteresi ==== | ||
| + | |||
| + | Il device ha la possibilità di gestire le comparazioni delle uscite con un interesi.\\ | ||
| + | Ogni volta che il device varia lo stato di un uscita, la comparazione viene disabilitata finché | ||
| + | lingresso non si discosta dal punto del setpoint del valore di isteresi.\\ | ||
| + | Nello specifico la comparazione si ri-arma quando lingresso assume i valori riportati negli esempi | ||
| + | a seguito:\\ | ||
| + | |Mode = 1|outUmF = setpoint - hysteresis| | ||
| + | |Mode = 2|outUmF = setpoint - hysteresis| | ||
| + | |Mode = 3|outUmF = setpoint + hysteresis| | ||
| + | |Mode = 4|outUmF = setpoint + hysteresis| | ||
| + | Se si utilizzano i modi 5 e 6, luscita si comporterà nel modo seguente: | ||
| + | | |Attivazione|Disattivazione| | ||
| + | |Mode = 5|outUmF = setpoint|outUmF = setpoint - hysteresis| | ||
| + | |Mode = 6|outUmF = setpoint - hysteresis|outUmF = setpoint| | ||
| + | |||
| + | ===== - Gestione errori device ===== | ||
| + | |||
| + | La presenza di un errore nel device viene segnalato dallo stato // | ||
| + | Quando st_error è uguale a 1, troviamo presente sulla variabile //errcode// il tipo di errore intervenuto | ||
| + | (vedi tabella) e nella variabile // | ||
| + | |||
| + | ^Codice^Priorità^Descrizione^ | ||
| + | |-|-|-| | ||
| + | |||
| + | Se il device va in errore, per poter riprendere la lavorazione bisogna cancellare lo stato // | ||
| + | |||
| + | ===== - Gestione warning device ===== | ||
| + | |||
| + | La presenza di un warning nel sistema camming viene segnalato dallo stato // | ||
| + | Essendo causato da un evento non grave ed essendo garantita in questa situazione la gestione | ||
| + | dellasse slave, lasse slave continua il suo lavoro.\\ | ||
| + | Quando // | ||
| + | intervenuto (vedi tabella) e nella variabile // | ||
| + | il warning. | ||
| + | |||
| + | ^Codice^Priorità^Descrizione^ | ||
| + | |1|0|Comando non eseguito| | ||
| + | |||
| + | Per cancellare lo stato // | ||
| + | |||
| + | ===== - 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 indica 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.\\ | ||
| + | |||
| + | ==== - Parametri ==== | ||
| + | |||
| + | ^Nome^D^R^A^Condizioni^Descrizione^ | ||
| + | |outbit|W|-|R|Nessuna|**Output measure in bits**\\ Valore letto dal canale di ingresso compensato dell' | ||
| + | |offset|W|R|RW|Nessuna|**Offset compensation**\\ Offset uscita DAC in bit. Definisce il valore in bit della correzione relativa all' | ||
| + | |scaleA|W|R|RW|Nessuna|**Scale A**\\ Valore intero parametro A formula di scaling.\\ Range valido: -32768 ÷ 32767| | ||
| + | |scaleB|W|R|RW|Nessuna|**Scale B**\\ Valore parametro B utilizzato nella formula di scaling. Deve essere necessariamente diverso da zero.\\ Range valido: -32768 ÷ 32767| | ||
| + | |scaleC|W|R|RW|Nessuna|**Scale C**\\Valore parametro C utilizzzato nella formula di scaling.\\ Range valido: -32768 ÷ 32767| | ||
| + | |outUm|L|-|R|Nessuna|**Output measure in unity**\\ Uscita derivata dalla formula di scaling.\\ Range valido: -32768 ÷ 32767| | ||
| + | |tfilter|W|R|RW|Nessuna|**Filter time**\\ Tempo di carica del filtro RC. Se tfilter < = Tcamp device, il filtro è disattivato. Valore espresso in unità ms.\\ Range valido: 0 ÷ 32767| | ||
| + | |outUmF|L|-|R|Nessuna|**Filtered output in unity of measure**\\ Uscita in unità di misura, filtrata.\\ Range valido: -32768 ÷ 32767| | ||
| + | |hysteresis|L|R|RW|Nessuna|**Comparation hysteresis**\\ Isteresi delle comparazioni per la gestione delle uscite. Vedi capitolo dedicato.\\ Range valido: -32768 ÷ 32767| | ||
| + | |mode1|B|R|R-W|Nessuna|**Function mode 1**\\ Definisce il tipo di comparazione da eseguire sull' | ||
| + | |selout1|B|R|R-W|Nessuna|**Output selection1**\\ Indica su quale uscita viene eseguita l' | ||
| + | |setpoint1|L|R|R-W|Nessuna|**Set point 1**\\ Definisce il setpoint della comparazione da eseguire sull' | ||
| + | |timer1|W|R|R-W|Nessuna|**Timer 1**\\ Definisce il timer da porre in esecuzione sull' | ||
| + | |mode2|B|R|R-W|Nessuna|**Function mode 2**\\ Definisce il tipo di comparazione da eseguire sull' | ||
| + | |selout2|B|R|R-W|Nessuna|**Output selection2**\\ Indica su quale uscita viene eseguita l' | ||
| + | |setpoint2|L|R|R-W|Nessuna|**Set point 2**\\ Definisce il setpoint della comparazione da eseguire sull' | ||
| + | |timer2|W|R|R-W|Nessuna|**Timer 2**\\ Definisce il timer da porre in esecuzione sull' | ||
| + | |||
| + | |||
| + | ==== - Stati ==== | ||
| + | |||
| + | ^NOME^D^R^A^Condizioni^Descrizione^ | ||
| + | |st_errcfg|F|-|R|Nessuna|**Configuration error**\\ Segnala che è stato rilevato un errore nella configurazione dell' | ||
| + | |st_cmp1|F|0|R|Nessuna|**Status of first comparation**\\ Segnalazione di comparazione 1.\\ **0** = Comparazione 1 disattiva.\\ **1** = Comparazione 1 attiva.\\ All' | ||
| + | |st_cmp2|F|0|R|Nessuna|**Status of second comparation**\\ Segnalazione di comparazione 2.\\ **0** = Comparazione 2 disattiva.\\ **1** = Comparazione 2 attiva.\\ All' | ||
| + | |st_error|F|0|R|Nessuna|**Status of device error**\\ Indica lo stato di errore nel device.\\ Per la decodifica dell' | ||
| + | |st_warning|F|0|R|Nessuna|**Status of device warning**\\ Indica lo stato di warning nel device.\\ Per la decodifica del warning si deve fare riferimento alla variabile wrncode e wrnvalue.\\ **0** = Warning non presente.\\ **1** = Warning presente\\ All' | ||
| + | |||
| + | ==== - Comandi ==== | ||
| + | |||
| + | I comandi sono stati ordinati con priorità decrescente. Ad esempio, in caso di contemporaneità dei comandi //SETCMP1// ed // | ||
| + | |||
| + | ^Nome^Descrizione^Descrizione^ | ||
| + | |SETCMP1|Nessuna|**Set of comparation 1**\\ Attiva lo stato st_cmp1.| | ||
| + | |RESCMP1|Nessuna|**Reset of comparation 1**\\ Azzera lo stato st_cmp1.| | ||
| + | |SETCMP2|Nessuna|**Set of comparation 2**\\ Attiva lo stato st_cmp2.| | ||
| + | |RESCMP2|Nessuna|**Reset of comparation 2**\\ Azzera lo stato st_cmp2.| | ||
| + | |RSERR|Nessuna|**Reset error**\\ Azzera lo stato st_error.| | ||
| + | |RSWRN|Nessuna|**Reset warning**\\ Azzera lo stato st_warning.| | ||
| + | |||
| + | |||
| + | ===== - Limitazioni ===== | ||
| + | |||
| + | ==== - Scaling ==== | ||
| + | |||
| + | //ScaleB// deve essere impostato diverso da zero, in caso contrario //OutUm// viene forzato a 0. | ||
| + | |||
| + | ==== - Filtro ==== | ||
| + | |||
| + | Il tempo di carica del filtro RC //tfilter// deve essere impostato maggiore o uguale al tempo di | ||
| + | campionamento del device (Tcamp), in caso contrario viene disattivato il filtro ed il parametro | ||
| + | //OutUmF// viene aggiornata con lo stesso valore di //OutUm//. | ||
| + | |||
| + | ==== - Offset ==== | ||
| + | |||
| + | Il parametro //offset// viene sommato allingresso analogico acquisito (// | ||
| + | il controllo sulloverflow della somma. | ||
| + | |||
| + | ==== - Configurazione ==== | ||
| + | |||
| + | ^:info:^Nel caso che un singolo canale venga gestito da più device ANINP aventi //Type// diversi, il compilatore non rileva errori e il canale viene impostato con l' | ||
| + | |||
| + | Una singola risorsa hardware (ogni singolo ingresso) può essere gestita da più device ANINP contemporaneamente, | ||
| + | a condizione che il numero identificativo dell' | ||
| + | dichiarazione del device (file di configurazione), | ||
| + | viene configurato come l' | ||
| + | |||
| + | |||
| + | ===== - Esempio applicativo ===== | ||
| + | |||
| + | ==== - Unit di configurazione ==== | ||
| + | |||
| + | <code QCL> | ||
| + | ; | ||
| + | ; Nome Modulo: Ex_Aninp2.CNF | ||
| + | ; Autore: QEM srl Data : 01/05/99 | ||
| + | ; Sistema: QMove1 / QCL3 Libreria: 1LIB4001 | ||
| + | ; Funzionalità: | ||
| + | ; | ||
| + | ; [1] - Applicativo di esempio per utilizzo device ANINP2 | ||
| + | ; | ||
| + | |||
| + | ; | ||
| + | ; Definizione Costanti | ||
| + | ; | ||
| + | CONST | ||
| + | |||
| + | ; | ||
| + | ; Definizione Variabili SYSTEM | ||
| + | ; | ||
| + | SYSTEM | ||
| + | slSet1 | ||
| + | slSet2 | ||
| + | |||
| + | ; | ||
| + | ; Definizione Variabili GLOBAL | ||
| + | ; | ||
| + | GLOBAL | ||
| + | |||
| + | ; | ||
| + | ; Definizione Variabili TIMER | ||
| + | ; | ||
| + | TIMER | ||
| + | |||
| + | ; | ||
| + | ; Definizione DATAGROUP | ||
| + | ; | ||
| + | DATAGROUP | ||
| + | |||
| + | ; | ||
| + | ; Configurazione Bus | ||
| + | ; | ||
| + | BUS | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | |||
| + | ; | ||
| + | ; Definizione Variabili INPUT | ||
| + | ; | ||
| + | INPUT | ||
| + | ifAbilComp | ||
| + | |||
| + | ; | ||
| + | ; Definizione Variabili OUTPUT | ||
| + | ; | ||
| + | OUTPUT | ||
| + | out301 | ||
| + | out302 | ||
| + | |||
| + | ; | ||
| + | ; Dichiarazione device interni | ||
| + | ; | ||
| + | INTDEVICE | ||
| + | ;Nome Tipo TCamp Contatore Type | ||
| + | Asse | ||
| + | |||
| + | END | ||
| + | </ | ||
| + | |||
| + | ==== - Gestione ANINP2 ==== | ||
| + | |||
| + | <code QCL> | ||
| + | ; | ||
| + | ; Nome File: TASK_00.MOD | ||
| + | ; Progetto: EX_ANINP2 | ||
| + | ; Descrizione: | ||
| + | ; | ||
| + | |||
| + | ; | ||
| + | ; Operazioni di Inizializzazione Asse | ||
| + | ; | ||
| + | Asse:offset = 0 ; | ||
| + | |||
| + | ; | ||
| + | ; Fattore di scala: (scaleA * outbit / scaleB) + scaleC | ||
| + | ; outUm minima = (4 * 0 / 8 ) + 3 = 3 | ||
| + | ; outUm massima = (4 * 4095 / 8) + 3 = 2050 | ||
| + | ; | ||
| + | Asse: scaleA = 4 ;Fattore di scala A | ||
| + | Asse: scaleB = 8 ;Fattore di scala B | ||
| + | Asse: scaleC = 3 ;Fattore di scala C | ||
| + | Asse: tfilter = 10 ;Tempo del filtro di acquisizione | ||
| + | Asse: hysteresis = 0 ;Isteresi delluscita | ||
| + | |||
| + | IF | ||
| + | | ||
| + | ENDIF | ||
| + | IF | ||
| + | | ||
| + | ENDIF | ||
| + | |||
| + | MAIN: | ||
| + | ; | ||
| + | ; Comparazioni sul conteggio solo se ifAbilComp attivo, altrimenti le uscite | ||
| + | ; sono disattive | ||
| + | ; ----------------------------- variabili utilizzate -------------------------------- | ||
| + | ; slSet1: Quota di comparazione per uscita 2.OUT01 | ||
| + | ; slSet1: Quota di comparazione per uscita 2.OUT02 | ||
| + | ; | ||
| + | |||
| + | IF ifAbilComp | ||
| + | IF NOT gfApp01 | ||
| + | Asse: mode1 = 5 ; | ||
| + | Asse: selout1 = 0 ;e disattiva out1 se posit< | ||
| + | Asse: setpoint1 = slSet1 | ||
| + | Asse: timer1 = 0 | ||
| + | Asse: mode2 = 6 ; | ||
| + | Asse: selout2 = 1 ;e attiva out2 se posit< | ||
| + | Asse: setpoint2 = slSet2 | ||
| + | Asse: timer2 = 0 | ||
| + | | ||
| + | | ||
| + | ENDIF | ||
| + | ELSE | ||
| + | IF NOT gfApp02 | ||
| + | | ||
| + | | ||
| + | Asse: selout1 = 0 | ||
| + | Asse: mode2 = 0 | ||
| + | | ||
| + | Asse: selout2 = 1 | ||
| + | | ||
| + | | ||
| + | ENDIF | ||
| + | ENDIF | ||
| + | |||
| + | ; | ||
| + | ; Operazioni finali | ||
| + | ; | ||
| + | WAIT 1 | ||
| + | JUMP MAIN | ||
| + | END | ||
| + | </ | ||
| + | |||