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:aninp2 [2017/01/18 16:39] – [8.14. Funzionamento] qem103 | 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 | ||
+ | </ | ||
+ | |||