Questo blocco funzione esegue la lettura di un contatore, è prevista la gestione del reset valore di conteggio e della inversione conteggio. In base alla definizione di Mode è possibile gestire conteggio su fronte positivo, negativo o su entrambi i fronti dell'ingresso clock. Se il modulo che gestisce il contatore lo prevede è possibile anche definire comandi hardware (Ingressi logici) di reset conteggio e di inversione conteggio.
Function block
CODESYS: Non disponibile
LogicLab: eLLabXUnified12Lib
Address (USINT) Occorre specificare l'indirizzo di modulo da cui eseguire l'acquisizione (Range da 0 a 255). Il valore 0 indica il primo modulo di estensione, 1 il secondo e così di seguito. L'indirizzo 255 indica il modulo CPU.
Channel (USINT) Occorre specificare l'indirizzo del canale sul modulo (Range da 0 a 15).
Mode (UDINT) Modo acquisizione, espresso su 32 bit secondo lo schema riportato.
![]() |
||
Clock | Input Mode |
Definisce ingresso logico da utilizzare come clock 0:Conta su fronte salita, 1:Conta su fronte discesa, 2:Conta su entrambi i fronti |
Reset | Input Mode |
Definisce ingresso logico da utilizzare come reset 0:Non è utilizzato ingresso di reset, 1:Reset counter se ingresso attivo, 2:Reset counter se ingresso non attivo |
Reverse | Input Mode |
Definisce ingresso logico da utilizzare come inversione conteggio 0:Non è utilizzato ingresso di reverse, 1:Inverte conteggio counter se ingresso attivo, 2:Inverte conteggio counter se ingresso non attivo |
Per calcolare il valore di mode si applica la formula:
((Reverse mode)*2097152)+((Reverse input)*65536)+((Reset mode)*8192)+((Reset input)*256)+((Clock mode)*32)+(Clock input)
RCount (BOOL) Reverse counting, attivando questo ingresso Value viene decrementato ad ogni variazione di conteggio.
Reset (BOOL) Attivando questo ingresso si ha il reset del valore di conteggio Value.
Done (BOOL) Dato acquisisto, viene attivato per un loop di programma al termine della acquisizione.
Fault (BOOL) Errore di acquisizione, viene attivato in caso di errore nella sequenza di gestione.
Value (UDINT) Valore contatore.
Errori
In caso di errore si attiva l'uscita Fault, eseguendo immediatamente dopo la funzione SysGetLastError è possibile rilevare il codice di errore. Fare riferimento alla tabella seguente per la descrizione.
Informazioni
Questo FB opera solo sui moduli che implementano la gestione hardware del contatore, di seguito una tabella riassuntiva.
Esempi
ST_SysGetCounter: Viene eseguita l'acquisizione del contatore 0 dal modulo CPU di SlimLine, il valore di conteggio è trasferito nella variabile Value. Attivando da debug RCount si inverte il conteggio ad ogni variazione dell'ingresso di clock viene decrementato il valore in uscita. Attivando da debug Reset viene eseguito il reset del conteggio.
ST_SpeedCalculation: Viene eseguito il calcolo della velocità di rotazione di un albero acquisendo gli impulsi generati da una ruota fonica che genera 10 impulsi al giro.
PROGRAM ST_SysGetCounter VAR Value : UDINT; (* Counter value *) CInp : SysGetCounter; (* Counter acquisition *) END_VAR // ***************************************************************************** // PROGRAM "ST_SysGetCounter" // ***************************************************************************** // This program acquires a counter from the CPU module. // ----------------------------------------------------------------------------- // ------------------------------------------------------------------------- // COUNTER ACQUISITION // ------------------------------------------------------------------------- // Acquires counter 0 by CPU module. CInp.Address:=255; //Module address CInp.Channel:=0; //Module channel CInp.Mode:=16#00000000; //Acquisition mode CInp(); //Counter acquisition IF (CInp.Done) THEN Value:=CInp.Value; END_IF; // [End of file]
Ultimo aggiornamento: 22 Febbraio 2020