Vai al contenuto
PLC Forum


Fare Lo Zero Con Encoder Incrementale Senza Sensori - è impossibile oppure no?


Messaggi consigliati

Inserito:

Ciao a tutti,

ho un asincrono

un encoder incrementale (contaimpulsi semplice 1giro=1impulso)

un modulo lineare collegato al motore (transformo il movimento rotatorio in movimento lineare)

è possibile portare l'asse in posizione di zero senza utilizzare sensori di finecorsa? so che sarebbe necessario avere un sensore di home per rilevare quando il modulo è arrivato in posizione di zero, ma quello che vi chiedo è: posso farlo via software in assenza di sensori? quali sono le possibili soluzioni?

ecco a cosa ho pensato:

  • io ho pensato immediatamente ad un temporizzatore, lo mando indietro per un certo tempo ma il problema è che l'asse può trovarsi in qualunque posizione, soluzione bocciata.

  • poi ho pensato a una comparazione tra gli impulsi, mentre piloto il rientro in posizione di home guardo gli impulsi, quando non arrivano più impulsi continui per un certo tempo allora sono arrivato, ma questa soluzione mi sembra laboriosa.. come la implemento in ladder?.. dovrei buttare i valori consecutivi dentro un array FIFO e valutare che l'ultimo arrivato sia uguale al precedente.. ma come?

grazie


Inserita:

Manda l'asse in battuta meccanica; metti un relè amperometrico che rileva l'asse in battuta. Poi inverti il moto e sul primo impulso di encoder fai lo zero. Precisione +/- 3 spanne, ma tanto hai un solo impulso al giro :)

Inserita:

grazie livio ma.... il relè amperometrico è un sensore!! :D

sto cercando un ingegno per farlo senza nessun tipo di sensore, solo via software..

Inserita:
è possibile portare l'asse in posizione di zero senza utilizzare sensori di finecorsa?

Forse con un encoder assoluto ma con un incrementale o con un semplice sensore di rotazione come quello che usi tu certamente no! Devi sempre valutare l'ipotesi che possa mancare l'alimentazione in qualunque momento: sia quando l'asse si sposta in fase di lavoro, sia in fase di azzeramento". Una calibrazione senza una posizione di riferimento data da un sensore, non ti può dare la certezza di avere un punto zero sempre costante.

In alcuni casi si potrebbero utilizzare un finecorsa di extracorsa e la tacca di zero dell'encoder incrementale: si sposta l'asse fino a toccare il sensore di limite, poi si ritorna indietro fino a leggere la tacca zero dell'encoder.

Inserita:

Ciao Tony, Livio ha detto: " metti un relè amperometrico che rileva l'asse in battuta."

come vedi questo relè viene impiegato per "rilevare" quindi a tutti gli effetti è impiegato da sensore.

altre alternative?

Inserita:

Ma da cosa nasce questa esigenza di non aggiungere assolutamente nulla?

Comunque, la soluzione più semplice è quella alla quale hai già accennato nel tuo primo post: rilevare quando non arrivano più impulsi.

Per fare questo non hai bisogno di registri FIFO o simili. Ti basta rilevare che il conteggio non varia più. Aggiungi un timer, ed è fatta.

Per poter percorrere questa strada però, devi essere sicuro che tutto il sistema sia in grado di sopportare la spinta contro la battuta meccanica senza danneggiare nulla.

In questa fase se, come immagino, hai un inverter, potresti far lavorare il motore a velocità ridotta e con limite di coppia.

Inserita:

ok batta si sono d'accordo con te :D

il sistema purtroppo non ha un inverter ma un "invertitore" di fase. Il sistema è a inerzia trascurabile, a dinamica molto lenta e il riduttore ha un rapporto molto elevato: il modulo lineare fa 1 mm ogni 30 giri.

"Per fare questo non hai bisogno di registri FIFO o simili. Ti basta rilevare che il conteggio non varia più. Aggiungi un timer, ed è fatta."

Rilevare quando non arrivano più impulsi significa monitorare un valore analogico che cambia nel tempo (il contatore di impulsi), quindi per vedere quando questo valore rimane fermo devo sapere quanto vale all'istante di tempo precedente e fare una comparazione con il valore attuale.. ciò significa che mi serve almeno una memoria per salvare lo stato precedente (più ovviamente un timer).

batta, esiste un modo più semplice rispetto a quello che ho pensato io?

Inserita:
...devi essere sicuro che tutto il sistema sia in grado di sopportare la spinta contro la battuta meccanica senza danneggiare nulla.

Questo è il motivo del relè amperometrico!

Per ottenere certi risultati bisogna usare gli attrezzi adatti. Se vuoi andare in bicicletta devi avere almeno le gomme gonfie.

Inserita:

ciao Livio, la tua è senza dubbio la soluzione migliore, ma qui si sta discutendo su quanto possiamo spingerci a limite utilizzando un hardware limitato.

Inserita:
Rilevare quando non arrivano più impulsi significa monitorare un valore analogico che cambia nel tempo (il contatore di impulsi), quindi per vedere quando questo valore rimane fermo devo sapere quanto vale all'istante di tempo precedente e fare una comparazione con il valore attuale.. ciò significa che mi serve almeno una memoria per salvare lo stato precedente (più ovviamente un timer).

Si tratta di rilevare un valore, ma definirlo analogico è sbagliato: è sempre un valore digitale.

Al di là di questo, è difficile darti altri consigli, visto che non sappiamo nemmeno come leggi gli impulsi.

Tanto per cominciare, sono sufficientemente lenti da poter utilizzare un ingresso normale, oppure usi un contatore veloce?

Se gli impulsi sono lenti e hai la possibilità di leggerli da programma, invece del confronto tra valori puoi rilevare i fronti di salita e/o discesa del sensore.

Se questo non è possibile, non vedo cosa ci sia di complicato nel fare il confronto tra due variabili (valore attuale e valore precedentemente memorizzato), e poi memorizzare il valore per il successivo controllo.

Sono veramente poche e banali righe di codice.

il sistema purtroppo non ha un inverter ma un "invertitore" di fase. Il sistema è a inerzia trascurabile, a dinamica molto lenta e il riduttore ha un rapporto molto elevato: il modulo lineare fa 1 mm ogni 30 giri.

Qui la vedo molto dura. Non c'è inerzia, ma con rapporto di riduzione elevato se mandi il movimento in battuta meccanica, senza modo di limitare la coppia, potresti sollecitare meccanicamente il sistema oltre i suoi limiti.

Solo tu puoi sapere se è possibile o meno andare in battuta meccanica con tutta la coppia e senza rompere nulla.

Ma un misero finecorsa proprio non si può mettere?

Inserita:
..ma qui si sta discutendo su quanto possiamo spingerci a limite utilizzando un hardware limitato.

No si sta cercando di fare cose tecnicamente non semplicemente discutibili, ma certamente non corrette.

Fare un posizionamento in battuta meccanica senza fine corsa, senza limiti di coppia, senza alcun rivelatore di soglia di sforzo è da.........ometto il termine che vorrei scrivere.

Inserita:

ciao batta, grazie

scusa per l'imprecisione analogico/digitale.

Si tratta di un modulo contatore veloce FM350-2 (il manuale lo devo ancora spulciare), mica sapete in che formato mi tira fuori i valori? una PIW che dovrò scalare con lo SCALE o un semplice numero crescente/decrescene? se qualcuno lo sa mi farebbe un grosso favore poiché l'attrezzatura non è ancora arrivata ma devo comunque programmarla un po' alla cieca.

Il codice è banale ok proverò a farlo funzionare tarandolo sul mio sistema.

Il misero finecorsa è una soluzione che cercheremo di utilizzare soltanto se fallisce il tentativo di fare l'azzeramento via software poiché siamo in un ambiente MOLTO caldo e vorremmo evitare sensoristica a bordo che potrebbe danneggiarsi (sensore o cavo..). ecco la ragione principale di tutte queste menate :)

Inserita:

Se hai l'encoder sulla meccanica a valle del rapporto di riduzione o se hai la possibiltà di metterlo in quel punto della meccanica puoi, se ne hai la possibiltà, tentare di conteggiare le tacche di "zero". Il datore di impulsi potrebbe essere sufficientemente "lento" da essere intercettato da un ingresso PLC, alla peggio potresti utilizzare un ingresso veloce. E' necessario costruire poi la logica che si occupa di incrementare o decrementare un registro di conteggio in accordo con la direzione del moto. Lo zero dovrebbe essere offsettato dell'errore di arresto dovuto al ritardo di ricezione dell'ingresso, dell'elaborazione del conteggio e dall'inerzia del sistema. I drive che io utilizzo hanno la funzione chiamata "arresto su puntalino" che richiama la funzione che accennava Livio. Si impone un valore di coppia oltrepassato il quale l'asse può considerarsi in battuta su un riscontro, poi la scelta può essere quella di considerare l'asse in home oppure si può intercettare la prima tacca di "zero" disponibile.

Omar

Inserita:
Si tratta di un modulo contatore veloce FM350-2 (il manuale lo devo ancora spulciare), mica sapete in che formato mi tira fuori i valori? una PIW che dovrò scalare con lo SCALE o un semplice numero crescente/decrescene? se qualcuno lo sa mi farebbe un grosso favore poiché l'attrezzatura non è ancora arrivata ma devo comunque programmarla un po' alla cieca.

Modulo con 8 contatori veloci 20kHz.

Spero non sia per un conteggio solo.

Se fosse il modulo FM350-1 potresti anche leggere direttamente il valore corrente sulla (mi pare) prima PED del modulo.

Non ho mai avuto l'occasione di utilizzare l'FM350-2, ma di sicuro ci sarà da richiamare una FC dedicata per poter gestire gli otto conteggi disponibili.

Dal modulo leggerai semplicemente il numero di impulsi contati. La scalatura ti potrebbe servire per trasformare il numero di impulsi in mm (o altra unità di misura, secondo le tue necessità).

siamo in un ambiente MOLTO caldo e vorremmo evitare sensoristica a bordo che potrebbe danneggiarsi

Per curiosità, quanto caldo?

Inserita:

2000 gradi ma la sensoristica non è proprio sulla fiamma, ma diciamo abbastanza vicino.

si FM350-2 per otto unità-

scusa batta ti ricordi in che formato mi arriva il conteggio degli impulsi dal FM350-2? Word,real,int?? giusto per capire..

ah poi ho anche dei moduli SM338 di altro tipo per encoder assoluti, mica mi sapresti dire anche lì se sono numeri interi o con la virgola e cosa rappresentano? lì dovrò leggere dei PED immagino siano numeri reali..?

Inserita:

Ciao,

potresti specificare meglio la meccanica e i componenti che usi, mi sembra di aver capito che usi un "encoder" con risoluzione 1 imp/giro.

Tipo Motore: 2/4/6/8 Poli

Rapporto di riduzione ?

Velocità massima di avanzamento ?

CIao

Inserita:

ciao gabri,

motore asincrono a tensione di rete

encoder 1 impulso a giro

collegato ad un martinetto

rapporto di riduzione 1:30

30 giri motore = 1 mm di spostamento lineare del martinetto

Inserita: (modificato)
2000 gradi ma la sensoristica non è proprio sulla fiamma, ma diciamo abbastanza vicino.

Ma questo che centra con il relè amperometrico? Lo inserisci in serie alla linea di alimentazione, nel quadro elettrico!

A me sembra solo un tentavo per risparmiare una decina di € (magari spendendone molti di più poi )

Modificato: da Livio Orsini
Inserita: (modificato)

siamo d'accordo. ma quanto costa 1 relè amperometrico? ho 6 motori trifase, quanti me ne servirebbero?

Modificato: da avafab
Inserita:
scusa batta ti ricordi in che formato mi arriva il conteggio degli impulsi dal FM350-2? Word,real,int?? giusto per capire..

Dai moduli di conteggio leggi solo dei... conteggi.

Non puoi incrementare/decrementare un conteggio di 0.358 impulsi (numero a caso). Un conteggio lo puoi incrementare/decrementare sempre e solo di una unità.

Sia che si tratti di FM350 con encoder incrementale, sia che si tratti di SM338 con encoder assoluto, non leggerai mai valori in virgola mobile, ma solo ed esclusivamente interi.

Poi, che il formato sia INT (o DINT) oppure WORD (o DWORD) è solo una diversa interpretazione della stessa cosa.

Prendiamo un byte, e impostiamo il valore 01101010.

Se lo consideri come INT leggerai 106 (in decimale), se lo consideri in formato Word leggerai 6A (in esadecimale).

6A in esadecimale è 106 in decimale, ed è 01101010 in binario. E' solo un modo diverso di visualizzare sempre la stessa cosa.

Inserita:

Grazie batta :D

si un numero intero ovviamente. mi chiedevo solo se fosse a 16 (INT-WORD) o 32 bit (DINT-DWORD), sto cercando nel manuale.

Inserita:
siamo d'accordo. ma quanto costa 1 relè amperometrico?

Sicuramente meno che sfasciare tutto ad ogni azzeramento.

ho 6 motori trifase, quanti me ne servirebbero?

Se sono sei sistemi come quello descritto, ti servono sei relé amperometrici.

In linea puramente teorica potresti escogitare sistemi di commutazione per utilizzare un solo relé amperometrico, ma ne risulterebbe un orrore degno di vincere il premio Nobel dei bestiari: oltre a rendere complicata una cosa semplice, oltre a introdurre vincoli operativi (i motori dovrebbero tassativamente essere uguali e non potresti fare più azzeramenti contemporaneamente), avresti bisogno di più spazio nel quadro e spenderesti pure di più.

Inserita: (modificato)

costo unitario?

ps. ho comunque dei termici di protezione per ogni motore.

Modificato: da avafab
Inserita:
ps. ho comunque dei termici di protezione per ogni motore.

La protezione termica, oltre ad essere comunque poco efficace in alcune condizioni, interviene solo ed esclusivamente per evitare di surriscaldare il motore perchè assorbe un valore di corente troppo elevato.

Se la protezione termica è installata correttamente sarà tarata con soglia d'intervento a aprtire dalla corrente nominale del motore. In pratica si comporta come un fusibile.

Se il motore in battuta assorbe, per esempio, 1.1*In il protettore termico intervverrà dopo parecchie decine di minuti.

Il relè amperometrico può intervenire istantaneamente al superamento della soglia impostata.

Andando in battuta ad ogni azzeramento, senza controllo di coppia, si sottopongoni giunti e ingranaggi del riduttore a sforzi eccessivi che in breve provocano danni irreversibili.

Il relè lo puoi tarare a soglia inferiore alla corrente nominale, è suffciente che la soglia sia maggiore del valore di corrente necessario alla traslazione in condizioni normali.

In quanto al costo, per la taglia di motori usati, non dovrebbe essere proibitivo. Basta che tu controlli qualche listino di produttori elettromeccanici. Ci sono anche prodotti nazionali a costi contenuti.

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...