Vai al contenuto
PLC Forum


Leggere Encoder Assoluto


Tecnosuono

Messaggi consigliati

Buongiorno a tutti. A scopo didattico sto valutando la possibilità di realizzare un sistema che faccia eseguire una rotazione di un giro (o con un po di margine 500°) ad un albero; la velocità sarà molto ridotta, circa un minuto/giro. Immaginate un sistema in grado di far ruotare un alberino verticale e che ruotando mi indichi (tramite una tacchetta) i gradi rispetto al Nord. Io da pannello gli comunico quale grado raggiungere e l'albero si posizionerà nella nuova posizione. Al di la di tutta la catena per muovere l'albero (inverter, motoriduttore asincrono trifase di potenza ridotta), vorrei soffermarmi sull'acquisizione della posizione. Volevo usare un encoder assoluto, in modo da non dover cercare lo zero ad ogni avvio o mancanza di alimentazione. Il 1200 è in grado di acquisire un assoluto? quale "protocollo" di comunicazione mi conviene usare? La risoluzione di 1 grado (1/360 di giro) è più che sufficiente.

Grazie

EB

Link al commento
Condividi su altri siti


Un encoder assoluto ha un'uscita parallela, cioè ha un numero di fili corrispondenti al numero di bits su cui è suddivisa la rotazione completa.

Ammettiamo, per ipotesi, che tu scelga un encoder da 10 bits, significa che suddiviederai i 2 *pi (360 gradi) di una rivoluzione completa in 1023 elementi dicreti.

Avrai 10 uscite dall'encoder a cui dovranno corrispondere 10 ingressi di PLC.

La configurazione di "1" e "0" dei bits seguirà una precisa codifica, stabilita dal costruttore dell'encoder. La codifica più diffusa è il codice "gray riflesso"; solitamente si usa questo codice perchè permette di avere una sola variazionone di un bit alla volta.

Sempre con l'encoder usato come esempio, alla velocità di rotazione da te citata avresti una variazione ogni circa 5.8 ms. Basta usare una normale scheda di ingressi digitali, con filtro Hw avente un tempo di ritardo inferiore; poi bisogna leggere direttamente la periferia ogni 2.5 ms circa.

In alternativa puoi usare un encoder da 9 bits, anche se son più difficili da reperire.

Esistono anche encoders assoluti che, in luogo della classica interfaccia parallela, dispsongono di un'interfaccia a bus di campo: profibus o altro bus. In questo caso basta che il PLC disponga dell'interfaccia profibus e l'encoder è visto come periferia decentrata.

Link al commento
Condividi su altri siti

Sono molto comodi anche quelli codificati in BCD. La maggior parte dei plc (credo nache il 1200 ma non conoscendolo non sono sicuro) ha poi delle funzioni specifiche per trasformare da bcd in binario piuttosto chje in decimale per ciò che devi fare tu.

Link al commento
Condividi su altri siti

Sono molto comodi anche quelli codificati in BCD

Si ma son meno sicuri perchè son più sensibili alle codifiche improprie dovute ai disturbi.

Link al commento
Condividi su altri siti

Grazie delle risposte. Chiaro il concetto della parallela (un po meno il BCD) e giustamente se il sistema ruota a 1 giro/min mi aspetto una variazione ogni 5,8 mS, trovo la frequenza e verifico se necessito di ingressi veloci oppure no. è corretto? Immagino che a livello di programmazione avrò un componente al quale comunico gli ingressi in gioco, tipo di codifica (grey ad es) e mi trova il valore in decimale? Starà a me poi successivamente convertirlo in gradi. Sto ragionando a voce alta.... ditemi se sono fuori strada!!!

Grazie ancora

EB

Link al commento
Condividi su altri siti

Non ti trovi nessun valore in decimale se usi encoder gray ti trovi una configurazione binaria a cui corrrisponde un numero compreso tra 0 e 1023 (fai una ricerca su google per i codici gray e vedrai qualche esempio). Moltiplichi il numero, o lo dividi, per il fattore di scala ed ottieni gradi.

Se invece usi un encoder BCD avrai un numero di fili maggiore perchè per ogni cifra son necessari 4 bits, quindi se il tuo encoder genera, ad esempio, 360 impulsi giro avrai 10 fili; 4 per codificare le unità, 4 per le decine e 2 per le centinaia. Leggi i 10 ingressi e converti il numero BCD in un numero binario, moltiplichi il numero, o lo dividi, per il fattore di scala ed avrai il numero di impulsi corrispondenti ai gradi della posizione.

Link al commento
Condividi su altri siti

Grazie Livio delle risposte. Analizzo i prodotti in commercio e provo a buttarmi nella lettura dei valori. Un ultima informazione: cosa intenti con filtro Hw avente un tempo di ritardo inferiore

CIao o buona giornata!

Link al commento
Condividi su altri siti

Le schede d'ingresso hanno un filtro che equivale ad un ritardo. Questo per evitare che eventuali disturbi siano interpretati come segnali. Il ritardo è specificato sul foglio tecnico della scheda. Tipicamente è 10 ms. Alcune sche de hanno la possibilità di configurarlo, Sw o Hw, su altri valori.

Link al commento
Condividi su altri siti

Mi aggiungo alla discussione perchè la trovo interessante.

Leggendo il post di Livio non mi è chiaro un concetto:

......cioè ha un numero di fili corrispondenti al numero di bits su cui è suddivisa la rotazione completa............

..............un encoder da 10 bits, significa che suddiviederai i 2 *pi (360 gradi) di una rivoluzione completa in 1023 elementi dicreti.........

Premetto che non conosco il codice grey anche se ne ho sentito parlare, sarà mia premura documentarmi, ma ciò che ora non mi è chiaro, se l'encoder è a 10 bit quindi 1023 scalini discreti, quando la sequenza dei 10 bit è terminata e quindi inizia a ripetersi, come si fa a comprendere la posizione dell'encoder?

Link al commento
Condividi su altri siti

Forse nei casi di questi encoder bisogna porre un conteggio relativo al n di rivoluzioni eseguite puó essere? Sentivo parlare anche di assoluti multigiro, che permettono es di discriminare 1023 posizioni per 1023 giri.

Puo essere o dico una castroneria?

Link al commento
Condividi su altri siti

Forse nei casi di questi encoder bisogna porre un conteggio relativo al n di rivoluzioni eseguite puó essere

Forse ho compreso ciò che vuoi dire, mai il mio dubbio è questo: se ho un encoder che è a 10 bit 1023 scalini discreti per giro, so esattamente la posizione dell'asse in qul giro. Potrei ad ogni giro incrementare un accumulatore, ma non avrebbe senso, sparirebbe il concetto di assoluto.

Link al commento
Condividi su altri siti

Credo che la differenza sia proprio nel fatto che mentre un monogiro sa esattamente la posizione di 1 giro perche ad esempio lo divide per 1023 riferimenti discreti, un multigiro conosca esattamente la posizione di es 1023 giri perche divide a sua volta ogni giro in 1023 posizioni... In questo modo si avrebbero 1023x1023=1046529 riferimenti discreti. Con gli opportuni calcoli matematici poi si capisce quale posizione di quale giro stiamo leggendo. La parola agli esperti

Link al commento
Condividi su altri siti

Non sono un esperto, ma presumo che l'assoluto multigiro abbia un codice in uscita per indicare a quale giro siamo e un codice per indicare la posizione giro, altrimenti si perderebbe la caratteristica di assoluto...

buon lavoro

Link al commento
Condividi su altri siti

Gli encoder assoluti sono, in genere, mono giro; la funzione multigiro è dovuta ad una demoltiplica tra albero e codificatore. Quindi dal codice numerico, sia esso Binario, BCD o gray, si conosce la posizione del codificatore e, dal rapporto di riduzione che è un dato di macchina, si risale alla posizione dell'albero in numero di rivoluzioni e sue frazioni.

Esistono anche i dispositivi inversi, molto più complicati per avere una maggior risoluzione sul giro.

In questo caso si usano più codificatori con differenti rapporti di moltiplicazione. Si parte dal più pesante, con rapporto 1:1 e via a scendere in peso con crescente rapporto di moltiplicazione.

Faccio un esempio per chiarire meglio.

Encoder con uscita BCD.

Prima decade, la più pesante, con codificatore diretto sull'asse; il giro è diviso in 10 parti.

Seconda decade con rapporti 1:10, rispetto alla prima; ogni variazione equivale a un centesimo di posizione dell'albero, Il codice sarà ripetuto per 10 volte in un giro.

Terza decade con rapporti 1:10, rispetto alla seconda; ogni variazione equivale a un millesimo di posizione dell'albero, Il codice sarà ripetuto per 100 volte in un giro.

E così via, sino al limite meccanico.

Ricordo che agli inizi della mia carriera lavorativa, l'azienda dove ero impigato disponeva di un encoder simile, in grado di dividere una rotazione in 20.000 parti, e lo si usava per misurare il livello in serbatoi ptroliferi di altezza sino a 20 m, con risoluzione di 1 mm.

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...