DEVICE ANINP2
1. 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
1.1 Installazione
Dichiarazione del device nella unit di configurazione
Nella unit di configurazione, la sezione BUS deve essere dichiarata in modo tale che siano
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:
;--------------------------------- ; Dichiarazione devices ;--------------------------------- INTDEVICE ... <nome device> ANINP2 Tcamp IChn Type Out1 Out2
dove:
<nome device> | Nome assegnato al 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) |
1.2 Esempio
;--------------------------------- ; Dichiarazione devices ;--------------------------------- INTDEVICE Asse_X ANINP2 2 2.AI01 1 2.OUT01 2.OUT02
1.3 Funzionamento
All'accensione del sistema, il device controlla la corretta dichiarazione del tipo di ingresso da
utilizzare, definito nella unit di configurazione (Type).
Se la diagnostica del canale si conclude con successo, viene eseguito l'aggiornamento dei dati
sulla base del tempo di campionamento. Nel caso vengano riscontrati errori o imprecisioni, lo
stato st_errcfg viene impostato a uno ed il valore della variabile outbit viene forzato a zero.
La conversione del dato in uscita dal device (outbit), nell'unità di misura necessaria per l'applicazione,
viene eseguita ricorrendo a dei fattori di scala (scaleA, scaleB e scaleC) secondo la
formula:
outUm = (scaleA x outbit / scaleB) + scaleC
Oltre a questa uscita aggiornata sulla base del tempo di campionamento del device, è disponibile l'uscita outUmF, filtrata con un tempo di carica programmabile (espresso in ms).
Questa funzionalità permette di filtrare eventuali disturbi e fluttuazioni sovrapposte al segnale utile con la possibilità di personalizzare il tempo di carica del filtro (tfilter). |
---|
1.3.1 Gestione uscite
Il device ha la possibilità di gestire delle comparazioni sullingresso analogico mediato (outUmF)
e variare lo stato delle uscite programmabili in modalità one shot (singola attivazione).
Ogni uscita ha la possibilità di essere gestita nei modi seguenti:
Attivazione al superamento del setpoint con lingresso che si incrementa | |
Disattivazione al superamento del setpoint con lingresso che si incrementa | |
Attivazione al superamento del setpoint con lingresso che si decrementa | |
Disattivazione al superamento del setpoint con lingresso che si decrementa | |
Attivazione al superamento del setpoint con lingresso che si incrementa e disattivazione al superamento del setpoint con lingresso che si decrementa | |
Disattivazione al superamento del setpoint con lingresso che si incrementa e attivazione al superamento del setpoint con lingresso che si decrementa |
1.3.2 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 |
1.4 Gestione errori device
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 dellerrore
Codice | Priorità | Descrizione |
---|---|---|
- | - | - |
Se il device va in errore, per poter riprendere la lavorazione bisogna cancellare lo stato st_error attraverso il comando RSERR.
1.5 Gestione warning device
La presenza di un warning nel sistema camming viene segnalato dallo stato st_warning.
Essendo causato da un evento non grave ed essendo garantita in questa situazione la gestione
dellasse slave, lasse slave continua il suo lavoro.
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.
Codice | Priorità | Descrizione |
---|---|---|
1 | 0 | Comando non eseguito |
Per cancellare lo stato st_warning bisogna inviare il comando RSWRN.
1.6 Tabella comandi e parametri
1.6.1 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
1.6.1.1 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; in caso contrario il comando non viene eseguito.
A
Indica la modalità di accesso.
R = Read (lettura).
W = Write (scrittura).
RW = Read / Write.
1.6.2 Parametri
Nome | D | R | A | Condizioni | Descrizione |
---|---|---|---|---|---|
outbit | W | - | R | Nessuna | Output measure in bits Valore letto dal canale di ingresso compensato dell'Offset. Range valido: 0 ÷ 32767 |
offset | W | R | RW | Nessuna | Offset compensation Offset uscita DAC in bit. Definisce il valore in bit della correzione relativa all'ingresso analogico in modo da compensare l'eventuale deriva del sistema. Range valido: -32768 ÷ 32767 |
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'uscita indicata nel parametro selout1. 0 = L'uscita permane nello stato in cui si trova 1 = Attivazione al passaggio per il setpoint con l'ingresso che si incrementa 2 = Disattivazione al passaggio per il setpoint con il conteggio che si incrementa 3 = Attivazione al passaggio per il setpoint con l'ingresso che si decrementa 4 = Disattivazione passaggio per il setpoint con l'ingresso che si decrementa 5 = Attivazione passaggio per il setpoint con l'ingresso che si incrementa e disattivazione passaggio per il setpoint con l'ingresso che si decrementa 6 = Disattivazione passaggio per il setpoint con l'ingresso che si incrementa e attivazione al passaggio per il setpoint con l'ingresso che si decrementa Range valido: 0 ÷ 6. |
selout1 | B | R | R-W | Nessuna | Output selection1 Indica su quale uscita viene eseguita l'azione della prima comparazione 0 = Out1 1 = Out2 Range valido: 0 ÷ 1. |
setpoint1 | L | R | R-W | Nessuna | Set point 1 Definisce il setpoint della comparazione da eseguire sull'uscita indicata nel parametro selout1. Range valido: -999999 ÷ 999999. |
timer1 | W | R | R-W | Nessuna | Timer 1 Definisce il timer da porre in esecuzione sull'uscita indicata nel parametro selout1. Range valido: 0 ÷ 32767. |
mode2 | B | R | R-W | Nessuna | Function mode 2 Definisce il tipo di comparazione da eseguire sull'uscita indicata nel parametro selout2. 0 = L'uscita permane nello stato in cui si trova 1 = Attivazione al passaggio per il setpoint con l'ingresso che si incrementa 2 = Disattivazione al passaggio per il setpoint con l'ingresso che si incrementa 3 = Attivazione al passaggio per il setpoint con l'ingresso che si decrementa 4 = Disattivazione passaggio per il setpoint con l'ingresso che si decrementa 5 = Attivazione passaggio per il setpoint con l'ingresso che si incrementa e disattivazione passaggio per il setpoint con l'ingresso che si decrementa 6 = Disattivazione passaggio per il setpoint con l'ingresso che si incrementa e attivazione al passaggio per il setpoint con il conteggio che si decrementa Range valido: 0 ÷ 6. |
selout2 | B | R | R-W | Nessuna | Output selection2 Indica su quale uscita viene eseguita l'azione della seconda comparazione 0 = Out1 1 = Out2 Range valido: 0 ÷ 1. |
setpoint2 | L | R | R-W | Nessuna | Set point 2 Definisce il setpoint della comparazione da eseguire sull'uscita indicata nel parametro selout2. Range valido: -999999 ÷ 999999. |
timer2 | W | R | R-W | Nessuna | Timer 2 Definisce il timer da porre in esecuzione sull'uscita indicata nel parametro selout2. Range valido: 0 ÷ 32767. |
1.6.3 Stati
NOME | D | R | A | Condizioni | Descrizione |
---|---|---|---|---|---|
st_errcfg | F | - | R | Nessuna | Configuration error Segnala che è stato rilevato un errore nella configurazione dell'ingresso. 0 = Non è stato rilevato nessun errore. 1 = È stato rilevato un errore. |
st_cmp1 | F | 0 | R | Nessuna | Status of first comparation Segnalazione di comparazione 1. 0 = Comparazione 1 disattiva. 1 = Comparazione 1 attiva. All'accensione per default viene posto a zero. |
st_cmp2 | F | 0 | R | Nessuna | Status of second comparation Segnalazione di comparazione 2. 0 = Comparazione 2 disattiva. 1 = Comparazione 2 attiva. All'accensione per default viene posto a zero. |
st_error | F | 0 | R | Nessuna | Status of device error Indica lo stato di errore nel device. Per la decodifica dell'errore si deve fare riferimento alla variabile errcode ed errvalue. 0 = Errore non presente. 1 = Errore presente. All'accensione per default viene posto a zero. |
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'accensione per default viene posto a zero. |
1.6.4 Comandi
I comandi sono stati ordinati con priorità decrescente. Ad esempio, in caso di contemporaneità dei comandi SETCMP1 ed RESCMP1, viene acquisito per primo il comando SETCMP1.
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. |
1.7 Limitazioni
1.7.1 Scaling
ScaleB deve essere impostato diverso da zero, in caso contrario OutUm viene forzato a 0.
1.7.2 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.
1.7.3 Offset
Il parametro offset viene sommato allingresso analogico acquisito (outbit), non viene eseguito il controllo sulloverflow della somma.
1.7.4 Configurazione
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'ultimo Type dichiarato. |
---|
Una singola risorsa hardware (ogni singolo ingresso) può essere gestita da più device ANINP contemporaneamente, a condizione che il numero identificativo dell'ingresso (Type), inserito nella dichiarazione del device (file di configurazione), sia uguale; in caso contrario l'ingresso analogico viene configurato come l'ultimo device dichiarato nel file di configurazione.
1.8 Esempio applicativo
1.8.1 Unit di configurazione
;************************************************************************************* ; Nome Modulo: Ex_Aninp2.CNF Progetto: Ex_ANINP2 ; Autore: QEM srl Data : 01/05/99 ; Sistema: QMove1 / QCL3 Libreria: 1LIB4001 ; Funzionalità: Esempio gestione ANINP2 Release: 0 ;------------------------------------- Note ------------------------------------------ ; [1] - Applicativo di esempio per utilizzo device ANINP2 ;************************************************************************************* ;------------------------------------------------------------------------------------- ; Definizione Costanti ;------------------------------------------------------------------------------------- CONST ;------------------------------------------------------------------------------------- ; Definizione Variabili SYSTEM ;------------------------------------------------------------------------------------- SYSTEM slSet1 L ;Setpoint 1 slSet2 L ;Setpoint 2 ;------------------------------------------------------------------------------------- ; Definizione Variabili GLOBAL ;------------------------------------------------------------------------------------- GLOBAL ;------------------------------------------------------------------------------------- ; Definizione Variabili TIMER ;------------------------------------------------------------------------------------- TIMER ;------------------------------------------------------------------------------------- ; Definizione DATAGROUP ;------------------------------------------------------------------------------------- DATAGROUP ;------------------------------------------------------------------------------------- ; Configurazione Bus ;------------------------------------------------------------------------------------- BUS 1 1CPUD 01 2 1AI8B 00 3 1MIXA 00 4 . ;------------------------------------------------------------------------------------- ; Definizione Variabili INPUT ;------------------------------------------------------------------------------------- INPUT ifAbilComp F 3.INP01 ;Abilitazione comparazioni ;------------------------------------------------------------------------------------- ; Definizione Variabili OUTPUT ;------------------------------------------------------------------------------------- OUTPUT out301 F 3.OUT01 ;Segnalazione setpoint 1 out302 F 3.OUT02 ;Segnalazione setpoint 2 ;------------------------------------------------------------------------------------- ; Dichiarazione device interni ;------------------------------------------------------------------------------------- INTDEVICE ;Nome Tipo TCamp Contatore Type Asse ANINP 0004 2.AI01 2 3.OUT01 3.OUT02 END
1.8.2 Gestione ANINP2
;************************************************************************************* ; Nome File: TASK_00.MOD ; Progetto: EX_ANINP2 ; Descrizione: Gestione Posizionamento ;************************************************************************************* ;------------------------------------------------------------------------------------- ; Operazioni di Inizializzazione Asse ;------------------------------------------------------------------------------------- Asse:offset = 0 ;Tensione di offset ;------------------------------------------------------------------------------------- ; 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 slSet1 EQ 0 sl Set1 = 1500 ENDIF IF slSet2 EQ 0 sl Set2 = 300 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 ;Attiva out1 se posit>setpoint1 Asse: selout1 = 0 ;e disattiva out1 se posit<setpoint1 Asse: setpoint1 = slSet1 Asse: timer1 = 0 Asse: mode2 = 6 ;Disattiva out2 se posit<setpoint2 Asse: selout2 = 1 ;e attiva out2 se posit<setpoint2 Asse: setpoint2 = slSet2 Asse: timer2 = 0 gfApp01 = 1 gfApp02 = 0 ENDIF ELSE IF NOT gfApp02 Asse:mode1 = 0 RESOUT out201 ;Disattiva out1 Asse: selout1 = 0 Asse: mode2 = 0 RESOUT out202 ;Disattiva out2 Asse: selout2 = 1 gfApp01 = 0 gfApp02 = 1 ENDIF ENDIF ;------------------------------------------------------------------------------------- ; Operazioni finali ;------------------------------------------------------------------------------------- WAIT 1 JUMP MAIN END