Vai al contenuto

Acquisizione encoder da scheda estensione I/O

Home Forum Controllori SlimLine e Netsyst (LogicLab) Acquisizione encoder da scheda estensione I/O

Stai visualizzando 4 post - dal 1 a 4 (di 4 totali)
  • Autore
    Post
  • #35677
    Armando
    Partecipante

    Dovendo sin qui gestire frequenze ridotte ho utilizzato con profitto il FB IOEncoder sul PLC cortex M7, ora con velocità di rotazione maggiore dell’encoder ho una sfasatura della posizione, se ho capito bene il FB SysGetEncoder posso utilizzarlo per leggere gli ingressi veloci di un modulo senza che il PLC si blocchi come succede se puntiamo al PLC stesso.

    Se si, ho a disposizione il modulo PCB124B500 ma non mi è ben chiaro il manuale hardware, leggo che gli ingressi 12,13,14 e 15 sono veloci, come vanno distribuite le fasi A e B dell’encoder? Nella FB come indico il canale corretto ?

    #40020
    Sergio Bertana
    Amministratore del forum

    Il FB IOEncoder permette di gestire il conteggio in quadratura di un encoder in modo software campionando i due ingressi di fase, quindi occorre che il FB e l’acquisizione degli ingressi (Con il FB SysGetPhrDI) avvengano in un tempo inferiore alla durata dei segnali di fase. Ipotizzando di eseguire le operazioni nella task Fast ad 1 mS potremo acquisire segnali in uyscita da un encoder alla frequenza massima di 500 Hz.

    Se si utilizzano gli ingressi presenti sul modulo CPU (La cui acquisizione è molto veloce) è possibile anche ridurre il tempo di esecuzione della task Fast portandolo anche al minimo di 100 uS (Naturalmente dipende da quante operazioni si svolgono nella task). In questo modo la frequenza massima sale a 5 KHz.

    Il campionamento software è certo una soluzione di ripiego, per acquisire encoders è meglio affidarsi ad un campionamento hardware, i moduli di estensione I/O PCB124*000, PCB129*000, PCB129*100 implementano il circuito hardware di quadratura encoder (Possono acquisisre encodrrs fino a 50 KHz). Purtroppo il circuito non è presente nel modulo PCB124B500 che hai tu, il quale ha il circuito di ingresso veloce ma non ha il circuito hardware di quadratura.

    Per la connessione dell’encoder agli ingressi puoi riferirti al manuale della scheda (Fase A:Di14, Fase B:Di15, Tacca di zero:Di12). Il circuito hardware gestisce l’encoder autonomamente gestendo un valore di quota su una variabile intera 16 bits. Il FB SysGetEncoder, a cui devi passare l’indirizzo di scheda ed il canale encoder (I moduli ad oggi gestiscono un solo canale encoder quindi Channel=0) ritorna il valore di conteggio.

    E’ evidente che per non perdere valori di conteggio occorre eseguire una acquisizione almeno ogni metà valore contatore (16#7FFF, 32767) che alla massima frequenza di 50KHz corrispondono ad un tempo di 650 mS. Il valore di quota non è azzerabile ma ci sono tecniche per gestire sia l’azzeramento che la quota su variabili UDINT (Vedi topic).

    #40021
    Armando
    Partecipante

    Assegnando al programma il task Fast ho un lieve miglioramento nella velocità limite di acquisizione in modo “software”, in realtà fatti due calcoli prevedevo una frequenza limite più alta, l’encoder legge 800 impulsi a giro (letti dalla FB IOEncoder), poco oltre un giro al secondo comincio a perdere impulsi ( per ora mi mantengo al di sotto di questa soglia). E’ in previsione un rilascio firmware che permetterà l’utilizzo di SysGetEncoder con gli ingressi del PLC Cortex m7 ?

    Grazie mille della tempestività, questo è uno strumento preziosissimo…

    #40022
    Sergio Bertana
    Amministratore del forum

    Non mi tornano i conti… tu dici che dal FB IOEncoder leggi 800 Impulsi/Giro, il FB eseguendo la quadratura moltiplica per 4 gli impulsi, quindi il tuo encoder genera 200 Impulsi/Giro. Ad 1 giro al secondo la frequenza è di 200 Hz, eseguendo il FB in task Fast ogni 1 mS dovresti poter acquisire frequenze fino a 500 Hz, vuol dire che il tuo encoder può girare fino ad oltre 2 giri al secondo senza perdere impulsi. Quindi non mi spiego perchè tu dica che poco oltre 1 giro al secondo inizi a perdere impulsi…

    La rotazione dell’encoder è stabile ? Non è che subisce accelerazioni e rallentamenti nel giro (Tipico esempio è quando si fà ruotare l’encoder con le dita) ?

    Sulla disponibilità della gestione hardware della quadratura sul modulo CPU Cortex M7 e quindi la possibilità di utilizzare il FB SysGetEncoder non abbiamo ancora date certe.

Stai visualizzando 4 post - dal 1 a 4 (di 4 totali)
  • Devi essere connesso per rispondere a questo topic.