Vai al contenuto
PLC Forum

Partecipa anche tu alla Live su Youtube martedì 28/01/2025 per festeggiare i 24 anni di PLC Forum

Per ulteriori informazioni leggi questa discussione: https://www.plcforum.it/f/topic/326513-28012025




Motion Control Con Doppia Retroazione


Messaggi consigliati

Inserito:

Buongiorno a tutti.

Solo recentemente ho "scoperto" il forum e lo trovo molto interessante.

Lavoro come progettista hw/sw presso un'azienda di automazione industriale; in particolare ci occupiamo di motion control (su macchine utensili) utilizzando schede di nostra produzione e software di controllo di nostra implementazione (più precisamente, la nostra scheda si occupa di "chiudere" il loop di spazio mentre il loop di velocità viene gestito dal drive)

Avrei un quesito da sottoporre agli utenti del forum.

Normalmente utilizzo come retroazione l'encoder calettato sull'albero del motore (brushless); in una particolare applicazione il cliente, al fine di ottenere posizionamenti più precisi indipendenti da giochi meccanici dei riduttori e da dilatazioni termiche, ha previsto invece di montare unariga ottica direttamente sulla testa.

Usando il segnale della riga si verificano però delle vibrazioni che non riesco in alcun modo ad attenuare.

Ho utilizzato allora la seguente tecnica: durante il moto chiudo il loop di spazio usando come retroazione l'encoder calettato sul motore (encoder che viene anche utilizzato dall'azionamento); alla fine del profilo (alla fine cioè dei calcoli del mio profilo di moto) controllo l'errore residuo commutando la retroazione sulle righe ottiche. Questo metodo, sino ad ora sembra non aver dato contro indicazioni, desidero conoscere il parere degli altri utenti.

saluti


Inserita:

C'è un motivo "tecnico" per cui non usi sempre il segnale della riga ottica ??

Usando il "nasometro", come lo chiama Livio, mi pare che il commutare di continuo la sorgente del feedback di posizione non sia una soluzione ottimale, perchè avrai probabilmente dei gradini sul valore dell'errore, e questo potrebbe essere la causa delel vibrazioni di cui parli.

Quando dici "...alla fine del profilo...." presumo tu ti riferisca al raggiungimento della soglia di posizione gestita con l'encoder motore. Per come hai fatto le cose, bisogna che questa sia più grande di quella gestita con la riga, altrimenti il software continua a "saltare" da un trasduttore all'altro e.....vibra...

Inserita:

Alcuni chiarimenti per walter.r che ringrazio per aver preso in considerazione il mio quesito.

Le vibrazioni si verificano quando uso "solo" la riga ottica come retroazione.

Il mio controllo calcola, ad intervalli di campionamento di 500us, la quota teorica, la confronta con la quota reale fornita dall'encoder calettato sul motore e, tramite algoritmo PID, fornisco il riferimento di velocità all'azionamento. Quando la quota teorica coincide con la quota target, commuto la retroazione sulla riga ottica e porto l'asse in posizione (eseguendo una correzione di circa 20-30 um).

Adelino Rossi
Inserita:

In due macchine, (taglierine) su cui ho lavorato, avevano il posizionamento con riga ottica lunga 7000mm.

I motori del posizionamento avevano il loro loop di regolazione chiuso e un elettromagnete per lo stop in posizione.

Un computer ricevuto il set di posizione degli avvolgitori da operatore, inviava il set di velocità ai motori del posizionamento leggendo la posizione sulla riga ottica.

La velocità veniva regolata in tre step, veloce, lenta di avvicinamento e di precisione.

Le vibrazioni si verificano quando uso "solo" la riga ottica come retroazione

Non mi è chiaro l'uso della riga ottica come retroazione.

Inserita:

Adelino Rossi chiede:

Non mi è chiaro l'uso della riga ottica come retroazione.

Semplicemente si voglio ottenere precisioni di posizionamento sotto il centesimo; basando il controllo sull'encoder del motore non si possono valutare gli effetti della dilatazione termica;si è dunque reso necessario misurare la posizione direttamente sulla testa.

Inserita: (modificato)

L'aquisizione della quota da encoder e da riga viene fatta nello stesso modo, negli stessi tempi ??

Sembra quasi che la tempistica di "erogazione" del riferimento al driver sia diversa nei due casi.

Hai provato a fare una comparazione di quota letta su encoder e riga nello stesso momento ???

Intendo dire, per ogni istante leggo i due trasduttori e salvo i parametri in un DB o in forma di tabella; poi si può verificare che non vi sia scostamento fra le due letture.

Considera che 20-30 micron sono comunque una quota molto piccola.....

Inoltre, hai controllato che la testina della riga ottica sia montata senza giochi, cioè che non si muova il supporto ??

:offtopic:

Come ho già fatto per Benny, mando il mio più caro saluto ad Adelino per il suo nuovo ruolo nel forum. :clap:

Modificato: da walter.r
Inserita:

walter.r mi chiede:

L'aquisizione della quota da encoder e da riga viene fatta nello stesso modo, negli stessi tempi ??

Sì, con certezza.

Hai provato a fare una comparazione di quota letta su encoder e riga nello stesso momento ???

La differenza fra le due quote è compatibile che i giochi meccanici del riduttore e con le dilatazioni termiche.

Inserita:
La differenza fra le due quote è compatibile che i giochi meccanici del riduttore e con le dilatazioni termiche.

A questo punto posso solo fare delle ipotesi.

Se lavori solo con l'encoder, la vibrazione sparisce ??

Se sì, potrebbe trattarsi di un effetto dovuto alla, probabilmente, diversa risoluzione dei due trasduttori.

Hai provato a verificare se, a parità di spazio percorso, hai lo stesso numero di impulsi dalla riga e dall'encoder ??

Inserita: (modificato)

Il metodo del doppio FeedBack è perfetto quando hai una cinematica che non è dinamicamente

Perfetta.

Intendo dire che ha volte l'attuatore istantaneamente non ha la stessa posizione del corpo finale.

Molte volte questa diversità è solo transitoria, per esempio se la trasmissione

meccanica ha delle parti elastiche tipo cinghie, trasmissioni a vite con flessibilità, etc.

Infatti nei transitori (Accelerazioni e decelerazioni) le parti di trasmissioni possono subire delle

Deformazioni, e la posizione finale non coincide con la posizione dell' attuatore.

Per questo motivo devi tener conto di queste diversità.

Se il profilo di posizione da ottenere deve essere garantito sul corpo finale.

E se tu possiedi un solo anello di spazio con un feedback rilevato sul corpo finale, e molto

probabilmente che tu possa avere delle instabilità sull' attuatore (Motore).

Per evitare ciò devi avere sia un FeedBack sull' attuatore che sul corpo finale.

Poi potresti avere un primo anello di Posizione che garantisca la stabilità cinematica

All' attuatore (Encoder sul Motore).

Ed un secondo anello di posizione che garantisca il profilo sul corpo.

In Cascata dovresti avere questa gerarchia :

1° Anello di Posizione o di Compensazione finale (sul Corpo finale)

2° Anello di Posizione sull' attuatore (encoder Motore)

3° Anello di Velocità sul Drive

4° Anello di Coppia nel Drive

5° Anello di Corrente nel Drive

Per evitare conflitti tra i primi 2 anelli di posizione devi adottare alcuni criteri :

Gerarchia

Analizzare i fattori di instabilità

Tempistica di attuazione

Limiti di validità sul controllo finale (peso per il 1° o 2° Anello di Spazio)

Adottare delle funzioni di correzione del 1° anello verso il 2°

Ad esempio se osservi che tra posizione finale e posizione dell'attuatore, esiste una

notevole differenza devi cercare di correggere la posizione finale verso

Il corretto setpoint, in maniera dolce e non brusca, altrimenti crei delle instabilità.

Se analizzi gli effetti transitori (elasticità cinematica), devi cercare di attuare la correzione.

Con una funzione adeguata (un PID forse non potrebbe essere sufficiente)

Usa una funzione di correzione che tenga conto dell'effetto elastico.

In questo modo avrai una buona stabilità del sistema, e una buona precisione finale.

Poi dipende se devi garantire un posizionamento statico finale, oppure devi garantire

Una precisione in tutti i tratti del profilo di movimento.

Se devi garantire una precisione finale al termine di un posizionamento statico,

il tuo metodo è abbastanza buono.

Se vuoi garantire una precisione assoluta durante tutto un profilo di posizione, devi lavorare

molto sulla funzione di correzione del 1° anello di Posizionamento.

Poi a secondo della tua cinematica dovrai adottare diverse soluzioni, che dovrai sicuramente studiare caso per caso.

Modificato: da Henon
Inserita: (modificato)

Grazie Henon, ha perfettamente compreso il problema.

Nell'applicazione descritta era importante la precisione della quota target. Il metodo che ho adottato non dava controindicazioni e tuttavia non ho potuto svolgere ulteriori test in quanto,come spesso succede nel nostro lavoro, la riga ottica è stata aggiunta il giorno prima della data di consegna della macchina.

Ciò che volevo cercare era di capire come comportarmi in futuro con una applicazione simile dove potrebbe essere importante la precisione anche durante il moto. Avevo già avuto l'intuizione della necessità del doppio anello di spazio, ora con i consigli di Henon mi sento confortato.

Grazie mille

Inoltre walter.r chiede:

Se lavori solo con l'encoder, la vibrazione sparisce ??

Hai provato a verificare se, a parità di spazio percorso, hai lo stesso numero di impulsi dalla riga e dall'encoder ??

Naturalmente no, ho dovuto introdurre un rapporto.

Vorrei comunque sottolineare il fatto che il problema per il quale mi sono rivolto al forum non è tanto la ricerca del perchè delle vibrazioni (che peraltro come in precedenza non posso svolgere ulteriori prove perchè la macchina è già stata consegnata) quanto piuttosto alla ricerca di un metodo alternativo al mio per la gestione della doppia retroazione. Io non conosco i CN standard ma so che la Siemens e la Ge-Fanuc prevedono la doppia retroazione ma non so come venga gestita.

Grazie di tutto a quanti sono intervenuti.

Modificato: da magath66
Inserita:

Beh, io ho sempre usato una sola sorgente per la richiusura dell'anello di posizione, e questa può essere una riga montata direttamente sull'asse da controllare, oppure il trasduttore di posizione interno al motore ( se parliamo di un brushless...), ovviamente non tenendo conto dei giochi e delle dilatazioni in quest'ultimo caso.

Ipotizzando di usare un motore in c.c., quindi senza necessità di encoder sul motore, ti ritrovi con solo un anello di spazio, perchè il drive gestisce solo corrente e velocità del motore.

Se invece usi un brushless, si aggiunge un anello di posizione, perchè un drive brushless tipicamente ha bisogno di conoscere la posizione angolare dell'albero motore per erogare corrente nel modo corretto.

Quindi il drive "usa" un suo anello di posizione interno per regolare velocità e coppia.

Ma questo è diverso dal regolare la posizione finale dell'asse.

L'analisi di Henon riguardo la "cascata di anelli..." ( :) ) è perfetta, il problema è trovare la parametrizzazione corretta per evitare contrasti fra i due anelli di posizione.

Se i guadagni dell'anello di posizione, chiamiamolo così, CN, sono molto diversi da quello interno al drive, puoi effettivamente generare instabilità.

In questo caso è un po' come accordare un chitarra: finchè non trovi i parametri "giusti" difficilmente ti soddisfa il risultato...

Però, ripeto, personalmente non ho ancora capito perchè devi commutare la sorgente del "tuo" anello di posizione.

Io userei solo la riga ottica, cercando quei parametri, nel CN e nel drive, che permettono di raggiungere il risultato ottimale.

Inserita:

Rispondo a sensazione, perchè sarebbe necessario conoscere più dettagli del secondo anello di posizione.

Potrebbe accadere che, con la riga come trasduttore, la taratura dell'anello sia tale che esso assuma una frequenza di taglio troppo vicina a quella dell'anello di velocità. Basterebbe, se così fosse, rallentare il secondo anello di posizione.

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