Acquisendo i segnali da un encoder rotativo (vedi i FB SysGetEncoder e IOEncoder), si ottiene un valore di impulsi espresso su di una variabile a numero di bits definito. Ma l’encoder connesso ad un motore può dover conteggiare un numero di impulsi superiore alla capacità della variabile di conteggio che raggiunto il suo valore massimo và in overflow e si azzera. Ecco quindi la necessità di dover gestire il conteggio su variabili con numero di bits maggiori di quella della FB di acquisizione.
Fornendo al FB in ingresso su Encoder il valore di conteggio ritornato dal FB di acquisizione ed indicando in BitNr il numero di bits su cui è espresso il conteggio, verrà ritornata su Pulses la differenza espressa in numero di impulsi tra due esecuzioni successive. Nel calcolo viene considerato l’overflow del valore Encoder in ingresso sia nell’incremento di quota quindi il passaggio dal valore massimo a 0 che nel decremento di quota quindi il passaggio da 0 al valore massimo.
Descrizione
Encoder (UDINT) Valore impulsi encoder ritornati dalla FB di acquisizione.
BitNr (USINT) Numero di bits su cui è espresso il valore Encoder, il valore massimo è 31 bits.
Pulses (DINT) Numero impulsi encoder dalla esecuzione precedente.

Esempi
Come utilizzare gli esempi
ST_EncoderPulses: Viene acquisito un encodere incrementale dal un modulo di estensione ed il valore acquisito espresso su variabile a 16 bits viene calcolato su una variabile quota a 32 bits.