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

Come utilizzare gli 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.

LogicLab (Ptp116)
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]
LogicLab (Ptp116)

Ti è stato utile questo articolo ?

Ultimo aggiornamento: 22 Febbraio 2020