Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

Entrambe le parti precedenti la revisione Revisione precedente
Prossima revisione
Revisione precedente
software:devices:aninp [2017/01/18 16:35] – [8.3. Introduzione] qem103software:devices:aninp [2020/07/13 15:01] (versione attuale) qem103
Linea 1: Linea 1:
 +====== DEVICE ANINP ======
 +
 +
 +====== - 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 dell’ingresso vengono riportate nel fascicolo hardware della scheda.\\ I cablaggi e collegamenti dell’apparecchiatura descritta nel presente manuale, devono rispettare la Normativa Europea EN60204-1.
 +
 +{{ :software:devices:aninp:aninp_01.png?nolink500 |}}
 +
 +^:info:^Nota:\\ Le specifiche di risoluzione dell'ingresso sono riportare nel fascicolo con la descrizione hardware della scheda (o dello strumento) che si sta utilizzando.^
 +
 +===== - Installazione =====
 +
 +==== - Dichiarazione 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 all’implementazione del device ANINP. 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>  ANINP  Tcamp  IChn  Type
 +</code>
 +dove:
 +|<nome device>|Nome assegnato al device|
 +|NINP|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)|
 +
 +^:important:^Attenzione:\\ è necessario che tutte le voci di definizione siano presenti sulla stessa linea.^
 +
 +==== - Esempio ====
 +
 +<code QCL>
 +;---------------------------------
 +; Dichiarazione devices
 +;---------------------------------
 +INTDEVICE
 +AnSensor    ANINP 2   2.AI01 1
 +</code>
 +
 +===== - 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 //tfilter// programmabile (espresso in ms).
 +
 +^:info:^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//).^
 +
 +{{:software:devices:aninp:aninp_02.png?nolink500|}}
 +
 +==== - Configurazione ====
 +
 +Una singolo ingresso può essere gestito da più device ANINP contemporaneamente, a condizione che il numero identificativo dell'ingresso //Type//, inserito nella dichiarazione del device, sia uguale; in caso contrario l'ingresso analogico viene configurato come l'ultimo device dichiarato nel file di configurazione.
 +
 +===== - 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 dell’inizializzazione del device
 +mantiene lo stato precedentemente definito), oppure lo stato che assume al momento
 +dell’inizializzazione del device.\\
 +Se il device non necessita di inizializzazione il campo “R” indica il valore che il parametro o stato
 +assume all’accensione della scheda.\\
 +R = Ritentivo\\
 +0 = Al momento dell’inizializzazione del device il valore viene forzato a zero.\\
 +1 = Al momento dell’inizializzazione del device il valore viene forzato a uno.\\
 +- = Al momento dell’inizializzazione 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 l’accettazione del parametro: se vengono
 +introdotti dei valori esterni ai limiti impostati, il dato viene comunque accettato; pertanto devono
 +essere previsti opportuni controlli dell’applicativo tali da garantire il corretto funzionamento.\\
 +Per l’esecuzione 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.
 +
 +===== - Tabella 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|
 +
 +===== - Tabella 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.|
 +
 +===== - 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 all’ingresso analogico acquisito (//outbit//), non viene eseguito
 +il controllo sull‘overflow 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'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.
 +
 +===== - Esempio applicativo =====
 +
 +==== - Unit di configurazione ====
 +
 +<code QCL>
 +;*************************************************************************************
 +; Nome Modulo: Ex_Aninp.CNF                 Progetto: Ex_ANINP
 +; Autore: QEM srl                           Data : 01/05/99
 +; Sistema: QMove1 / QCL3                    Libreria: 1LIB3B04
 +; Funzionalità: Esempio gestione ANINP      Release: 0
 +;------------------------------------- Note ------------------------------------------
 +; [1] - Applicativo di esempio per utilizzo device ANINP
 +;*************************************************************************************
 +;-------------------------------------------------------------------------------------
 +; Definizione Costanti
 +;-------------------------------------------------------------------------------------
 +CONST
 +;-------------------------------------------------------------------------------------
 +; Definizione Variabili SYSTEM
 +;-------------------------------------------------------------------------------------
 +SYSTEM
 +slSet1                                  ;Setpoint 1
 +slSet2                                  ;Setpoint 2
 +;-------------------------------------------------------------------------------------
 +; Definizione Variabili GLOBAL
 +;-------------------------------------------------------------------------------------
 +GLOBAL
 +;-------------------------------------------------------------------------------------
 +; Definizione Variabili TIMER
 +;-------------------------------------------------------------------------------------
 +TIMER
 +;-------------------------------------------------------------------------------------
 +; Definizione DATAGROUP
 +;-------------------------------------------------------------------------------------
 +DATAGROUP
 +
 +;-------------------------------------------------------------------------------------;
 + Configurazione Bus
 +;-------------------------------------------------------------------------------------
 +BUS
 +    1   1CPUB   02
 +    2   1AI8B   00
 +    3   1MIXA   00
 +    4   .
 +    
 +;-------------------------------------------------------------------------------------
 +; Definizione Variabili INPUT
 +;-------------------------------------------------------------------------------------
 +INPUT
 +
 +;-------------------------------------------------------------------------------------
 +; Definizione Variabili OUTPUT
 +;-------------------------------------------------------------------------------------
 +OUTPUT
 +ofGTSet1     3.OUT01                    ;Segnalazione superamento setpoint 1->
 +ofLTSet2     3.OUT02                    ;Segnalazione superamento setpoint 2<-
 +
 +;-------------------------------------------------------------------------------------
 +; Dichiarazione device interni
 +;-------------------------------------------------------------------------------------
 +INTDEVICE
 +;Nome   Tipo   TCamp   Contatore Type
 +Asse    ANINP  0004    2.AI01 2
 +
 +END
 +</code>
 +
 +==== - Gestione ANINP ====
 +
 +<code QCL>
 +;*************************************************************************************
 +; Nome File: TASK_00.MOD
 +; Progetto: EX_ANINP
 +; 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
 +
 +IF slSet1 EQ 0
 + slSet1 = 1500
 +ENDIF
 +IF slSet2 EQ 0
 + slSet2 = 300
 +ENDIF
 +;-------------------------------------------------------------------------------------
 +; Comparazioni sull'ingresso analogico
 +;-------------------------------------------------------------------------------------
 +; Variabili utilizzate
 +; slSet1 : Quota di comparazione per uscita ofGTSet1 (da impostare con Qview)
 +; slSet2 : Quota di comparazione per uscita ofLTSet2 (da impostare con Qview)
 +;-------------------------------------------------------------------------------------
 +
 +MAIN:
 +  IF Asse:outUmF GT slSet1                     ;Se l'ingresso analogico è > del setpoint 1
 +    SETOUT ofGTSet1                            ;Attiva l'uscita ofGTSet1
 +  ELSE
 +    RESOUT ofGTSet1                            ;Disattiva l'uscita ofGTSet1
 +  ENDIF
 +  
 +  IF Asse:outUmF LT slSet2                     ;Se l'ingresso analogico è < del setpoint 2
 +    SETOUT ofLTSet2                            ;Attiva l'uscita ofLTSet2
 +  ELSE
 +    RESOUT ofLTSet2                            ;Disattiva l'uscita ofLTSet2
 +  ENDIF
 +
 +  WAIT 1
 +  JUMP MAIN
 +
 +END
 +</code>
 +