SysGetEncoder, get encoder input

  1. Home
  2. Knowledge Base
  3. Manualistica
  4. Programmazione IEC 61131-3
  5. Gestione periferiche
  6. SysGetEncoder, get encoder input

Gli encoder sono apparati elettromeccanici che convertono la posizione in un segnale elettrico digitale composto da due onde quadre fuori fase di 90°. Opportuni circuiti hardware disponibili sulle schede di I/O permettono di contare questi impulsi determinando in base alla differenza di fase il senso di rotazione.

Questo blocco funzione esegue la lettura di un canale encoder (Utilizzabile solo sui moduli che hanno la gestione della quadratura encoder hardware), è prevista la gestione della tacca di zero e la possibilità di acquisire valori di quota all'interno di un segnale logico di gate. Non è da confondere con il FB IOEncoder che esegue la lettura con un algoritmo software e con cui è possibile utilizzare qualsiasi ingresso logico.

Function block
CODESYS: eCDSS8CoreMng
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).

RCount (BOOL) Reverse counting, attivando questo ingresso si inverte l'incremento di quota EQuote in funzione della direzione di rotazione encoder.

ZeroEn (BOOL) Attivando questo ingresso si ha il reset della quota EQuote al passaggio della tacca di zero encoder.

GateEn (BOOL) Attivando questo ingresso sul fronte di variazione dell'ingresso di Gate viene trasferito il valore di EQuote in GQuote.

RGate (BOOL) Attivando questo ingresso viene gestito il fronte di disattivazione dell'ingresso Gate.

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.

ZeroD (BOOL) Tacca di zero encoder acquisita, viene settata su acquisizione tacca di zero encoder, si resetta disattivando l'ingresso ZeroEn.

GateD (BOOL) Segnale di gate acquisito, viene attivato per un loop alla acquisizione del segnale Gate.

GQuote (UINT) Quota di gate, valore di quota encoder EQuote memorizzata sul fronte selezionato del segnale Gate.

EQuote (UINT) Quota encoder, valore di quota encoder, al raggiungimento del valore minimo o massimo viene eseguito il roll over.

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.

Esempi

Come utilizzare gli esempi.

ST_SysGetEncoder, IL_SysGetEncoder: Viene eseguita l'acquisizione dell'ingresso encoder dal canale 0 del modulo 0, il valore di quota encoder è trasferito nella variabile Value.

ST_EQuoteManage: Il FB SysGetEncoder ritorna la lettura del contatore hardware a16 bits presente sulla scheda di acquisizione encoder, di cui non è possibile eseguire nè il reset né il preset. Nella gestione della quota acquisita da un encoder molte volte è necessario gestire un valore di quota espresso su variabile a 32 bits e/o poter gestire anche il reset o il preset del valore.
Tutte queste operazioni sono possibili con semplici operazioni matematiche sul valore di quota ritornato dal FB. Il programma calcola il numero di impulsi acquisiti dall'encoder tra due esecuzioni (Può essere un valore positivo se o negativo in base alla direzione di rotazione). Il valore di impulsi viene sommato al valore di quota che è una variabile UDINT. In questo modo abbiamo una quota espressa su 32 bit ed il valore della variabile Quote può essere modificato da programma (Resettato o presettato) come si desidera.

LogicLab (Ptp116)
PROGRAM ST_SysGetEncoder
VAR
    Value : UINT; (* Encoder value *)
    EInp : SysGetEncoder; (* Encoder acquisition *)
END_VAR

// *****************************************************************************
// PROGRAM "ST_SysGetEncoder"
// *****************************************************************************
// This program acquires an encoder from the extension module 0.
// -----------------------------------------------------------------------------

    // -------------------------------------------------------------------------
    // ENCODER ACQUISITION
    // -------------------------------------------------------------------------
    // Acquires encoder 0 from the extension module 0.

    EInp.Address:=0; //Module address
    EInp.Channel:=0; //Module channel
    EInp(); //Encoder acquisition
    IF (EInp.Done) THEN Value:=EInp.EQuote; END_IF;

// [End of file]
LogicLab (Ptp116)
LogicLab (Ptp116)

Ti è stato utile questo articolo ?

Ultimo aggiornamento: 22 Marzo 2020