Jump to content
PLC Forum


Sign in to follow this  
emanuele.croci

Moto Interpolato Con Plc

Recommended Posts

emanuele.croci
ora invece hai di mezzo la meccanica (leggi riduttore) che introduce probabilmente un po di gioco meccanico.

Forse è per questo che hai dovuto abbassare i guadagni.

Su questo punto siamo d'accordo al 100%.

Hai provato a verificare l'andamento delle parte proporzionale e parte integrale della correzzione? Hai provato un anticipo sulla reazione?

Livio, per ora sto cercando di capire quanta di questa instabilità è data dal PID del plc (su cui posso agire come mi pare) e quanta è data dal PID dell'inverter (su cui non ho potere, posso solo variare i guadagni).

Eventualmente -se ben capisco il tuo consiglio- potrei abbassare la parte proporzionale ed introdurre una "quota equivalente o quasi" di componente integrale, in modo da avere all'incirca:

LA REGOLAZIONE DI PRIMA + UN FILTRO PASSA BASSO

Ho inteso correttamente?

Grazie, Ciao, Emanuele

P.S. Comunque diciamo che queste modifiche non sono nè urgenti nè fondamentali, in quanto si propongono solo come migliorie della soluzione base "controllo interpolato fatto in casa e basato su PLC", che ha già provato la sua validità.

E' che adesso sto facendo delle macchine veramente particolari e intriganti, quindi mi piace provarle un po' tutte....

Share this post


Link to post
Share on other sites

Livio Orsini

Forse sono stato un po troppo sbrigativo nel post precedente.

Analizzando il sistema a distanza, quindi le mie sono mere supposizioni, mi smebra che le riduzioni dei guadagni siano solo apparenti. Sarebbe necessario comparare le due catene cinematiche e verificara quanto vale un impulso di encoder, in termini di radianti, nei due casi.

Io cercherei, per prima cosa, di ottimizzare la risposta dell'inverter. Può essere che, con i giochi introdotti spostando l'encoder, sia quasi impossibile ottimizzarne la risposta.

Una volta sicuro della stabilità dell'anello di velocità andrei a verificare l'anello di spazio. La prima verifica da farsi è l'entità della correzione integrale. E' necessario che si riesca a mantenerla molto bassa in ogni condizione, agendo magari sul feed forward. Poi cercherei di inserire un anticipo di reazione al posto del derivativo. Così si ottiene un incremento della velocità di reazione insensibile alle variazioni di riferimento.

Share this post


Link to post
Share on other sites
walter.r

Ciao ragazzi, scusate l'assenza ma....sono un po' vagabondo in questo periodo. :ph34r: :ph34r:

Dovessi automatizzare una fresa, l'840 potrebbe essere papabile
...e avessi mano libera, proprio non monterei l'840

Nemmeno io, Lucios, te lo garantisco!!! Era per dire..... ;)

Io, conoscendo la MIA situazione, ritengo di aver trovato una soluzione buona, economica e pure SPICCIA (perché lo è, ti garantisco che è molto SPICCIA....) per risolvere il MIO problema.

Bravissimo, Emanuele, apprezzo molto quello che hai fatto.

In fondo la mia è solo un po' di invidia, perchè a me il tempo di sviluppare e inventare...non lo lasciano quasi mai !!! :lol:

Io cercherei, per prima cosa, di ottimizzare la risposta dell'inverter. Può essere che, con i giochi introdotti spostando l'encoder, sia quasi impossibile ottimizzarne la risposta.

Credo che in questa frase di Livio stia in nocciolo del tuo attuale problema.

I giochi di inversione sono delle brutte bestie, anche se usi i CN....

Per come è fatta la tua macchina, hai la possibilità di "mascherare" la quantità di gioco all'inversione??

Come dire : blocco il calcolo del PID fino a quando non vedo di nuovo variare il contatore encoder.

Se il tipo di ciclo che devi svolgere te lo permette, forse così potresti arrivare ad una soluzione, o magari anche solo limitare la quantità di errore che si viene a creare.

Non so se può essere per te una buona idea, ma visto che stai facendo esperimenti..... :rolleyes:

Share this post


Link to post
Share on other sites
emanuele.croci

Ciao,

per la cronaca, vi faccio un resoconto finale dei vari tipi di inverter che abbiamo provato:

- Siemens Micromaster440: è un inverter per applicazioni generiche, è il ns. standard ed è quello che abbiamo usato all'inizio, ma è nettamente il meno performante

- Vacon NXP e Siemens Sinamics G-120: sono 2 inverter molto performanti, le loro prestazioni sono all'incirca equivalenti

- Toshiba VF-AS1: un ottimo inverter, molto più performante del 440 ma più scarso di Vacon e Sinamics

Visto che dobbiamo fare una scelta a brevissimo, vi chiedo quindi le vs. opinioni su VACON NXP- SINAMICS G120 - TOSHIBA....

Ciao e Buona Pasqua a tutti!

Emanuele

Share this post


Link to post
Share on other sites
Livio Orsini

Io proverei anche Mitsubishi e Yaskawa (Omron); a parer mio sono tra i più performanti ed affidabili

Share this post


Link to post
Share on other sites
emanuele.croci

Una cosa che mi piacerebbe molto provare (ma sicuramente per questo ROUND non ne avrò il tempo) è:

Encoder sull'albero lento collegato al PLC (con trucchi sul PID all'inversione...) +

inverter vettoriale in anello aperto (quindi senza necessità di encoder)

I tecnici TOSHIBA ad esempio erano molto sicuri sulla bontà del loro algoritmo di controllo sensorless... poteva essere un test interessante... cosa sarà meglio, un pessimo encoder derivato o un ottimo sensorless??

Ciao, Emanuele

Share this post


Link to post
Share on other sites
Livio Orsini
...cosa sarà meglio, un pessimo encoder derivato o un ottimo sensorless??

Sicuramente un sensorless

Share this post


Link to post
Share on other sites
bricklayer

La cosa è fattibile , dipende dalla precisione del controllo , potresti interpolare anche usando l' analogica a 12 bit.

La difficoltà e comunque il controllo drive-motore , vettoriale Ok , ma con che caratteristiche . In commercio ormai spacciano

quasi tutti i drive come vettoriali .

Accertati di quanti sensori di corrente hanno , è importante al fine di un controllo preciso alle basse velocità.

Per il resto se non pretendi elevate prestazioni puoi tranquillamente sviluppare una macchina interpolata a 2 assi .

importante il ciclo programma PLC deve essere leggero.

La irsoluzione dell' encoder minimo 2048 IG per una regolazione PID ottima ( altrimenti vedi l' effetto sul pezzo lavorato).

Se usi un protocollo di comunicazione prifibus o meglio can la cosa è più semplice.

occhio la qualita del risultato è nella scelta del drive e del motori .

altrimenti ci sono in commercio sistemi che integrano plc/motion , dove il plc risponde in un ciclo di programma in circa 1 ms ( 5micro sec per 1000 line di prog)

ciao

Share this post


Link to post
Share on other sites
emanuele.croci

Ciao,

torno sull'argomento perché tra 10gg dovrei procedere alla messa in servizio della famosa fresa.

Si tratta di una fresa a portale di grosse dimensioni che lavora parti di nostre macchine in produzione (abbiamo l'officina interna).

Viene usata per fresare piani lavorati e per effettuare fori; tipica lavorazione: pezzi di 6metri x 1 metro x 1 metro, i pezzi che lavora sono comunque molto variabili nelle dimensioni e non necessitano di precisioni esagerate, un errore di qualche decimo va più che bene!

...per ora, quindi, non produrremo bielle per la Ferrari o pezzi della Stazione Spaziale Internazionale... ;)

La meccanica è molto vecchia, penso almeno 40 anni, mentre l'impianto elettrico è stato rifatto da noi credo 10-15 anni fa.

Adesso il mio obiettivo è:

- sostituire le motorizzazioni brushless dei 4 assi con asincroni + encoder + inverter Sinamics, sostituire il plc S5 con un S7, sostituire il PC con uno nuovo (+ l'applicativo che usiamo di solito sulle ns. macchine di serie)

- applicare dei trasduttori di posizione che rilevino la posizione esatta degli assi, per eliminare i giochi meccanici che sono piuttosto grandi; a tale scopo abbiamo acquistato dei sensori magnetici MSK5000 della Siko che leggono bandelle adesive che applicheremo sulla macchina; i sensori hanno uscita analoga ad un encoder incrementale: 2 canali push-pull a 24VDC, con risoluzione di qualche micron

- i sensori SIKO saranno collegati agli ingressi veloci del plc; gli inverter invece regoleranno ad anello chiuso tramite un encoder calettato sul motore

La domanda è:

Come effettuare la regolazione dell'anello di posizione nel plc ? In particolare all'inversione del moto, quando potrei avere una situazione anomala (nel senso che "spingo" ma la posizione non varia).

Ritengo che il fatto di essere a VELOCITA' ZERO all'inversione sia per me un vantaggio, dato che spesso l'errore di posizione è "abbastanza proporzionale" alla velocità, quindi in queste fasi di inversione del moto (prevedibili dal mio software) posso addormentare un po' il sistema abbassando il Kp ed eventualmente eliminando la parte integrale...

Siete d'accordo?

Altri suggerimenti?

Grazie, Ciao,

Emanuele

Share this post


Link to post
Share on other sites
Livio Orsini

Vediamo se ho capito.

Caso assi indipendenti.

Raggiunta una posizione l'utensile deve tornare indietro, magari traslando prima la posizione dell'asse ortogonale o dell'asse "Z". In questo caso nessun problema. Quando l'errore di posizione è <= errore minimo si aggiorna la quota targhet con una nuova quota, che sarà minore o di segno inverso, ed il posizionatore effettua il suo lavoro.

Caso di asse coordinato con altro asse.

Qui la quota è smpre aggiornata in modo dinamico ed il posizionatore fa sempre il suo lavoro. (ammesso che tutto funzioni correttamente :rolleyes: )

Io non modificherei dinamicamente i guadagni. Inoltre l'anello di posizione dovrebbe essere solo P o, al massimo, PD. L'errore di posizione non si integra.

Share this post


Link to post
Share on other sites
emanuele.croci

OK, Livio, tutto chiaro.

La prossima settimana me ne starò al mare in Sardegna, quindi PURTROPPO :rolleyes: non potrò occuparmi della cosa.

La settimana dopo ci lavorerò sopra e vi farò sapere...

Ciao, Emanuele

Share this post


Link to post
Share on other sites
emanuele.croci

Ciao,

ieri stavo facendo le prime prove di movimento sulla FRESA, ho 4 assi, per ora ho provato solo il pilotaggio in velocità.

3 assi vanno benissimo, mentre uno è più "problematico" (lo sapevamo già).

Si tratta di una tavola portapezzo, che costituisce anche l'Asse X della fresa.

Il suo peso è di circa 10 ton e può lavorare un pezzo che pesa altrettanto.

Adesso abbiamo installato per provare un motore 4 poli, 9.2 kW (lo avevamo a magazzino e non ci costava niente...)

La velocità max di X è circa 7000mm/min, cioè 2800 rpm, 100 Hz al mio motore, no problem.

La velocità minima dovrebbe essere di 10 mm/min, cioè 4 rpm, 0.15 Hz al mio motore.

Con la configurazione attuale installata (Sinamics G120 in anello chiuso di velocità, encoder 1024 impulsi sul motore, motore 4 poli) lavoro abbastanza bene fino a circa 0.3 Hz e vorrei qualche consiglio per migliorare la cosa fino a 0.15 Hz.

Le mie idee (in ordine di importanza) sono:

- usare un motore 8 poli, di pari potenza (raddoppio la coppia fino a 700 giri e ho pure un miglior controllo ai bassissimi giri)

- aumentare la risoluzione dell'encoder

- aumentare la frequenza di switching (ho provato a metterla a 16kHz, un po' è migliorato...)

Il motore non è "impiccato" (leggo sull'inverter una coppia erogata di circa 35 Nm, la nominale del motore è circa 70), ovviamente la sua criticità è lavorare a velocità così basse....

Che ne pensate?

Ciao, Emanuele

Share this post


Link to post
Share on other sites
Livio Orsini

Uhm mettere un 4 poli migliori in basso ma poi devi andare a 200 Hz per avere il medesimo rapporto di velocità, rischi di non avere coppia a sufficienza in alto. Ora dici di usare metà della coppia disponibile, a 100Hz (con il motore attuale) sei al limite, salendo a 200Hz con un 4 poli a 2800 rpm ne avresti 12,5 di Nm.

Io penserei magari ad un inverter un po' più performante :) nel controllo di coppia in basso

Share this post


Link to post
Share on other sites
emanuele.croci
Io penserei magari ad un inverter un po' più performante smile.gif nel controllo di coppia in basso

Omron? ABB?

una prova la farei volentieri, sono curioso...

I venditori di INVERTER PERFORMANTI in genere sono abbastanza sicuri di sè, però poi quando gli dici cose tipo "OK, allora andiamo a spostare 20 tonnellate a 0.1 Hz!", beh, mi è capitato che impallidissero un tantino... ;)

Ciao, Emanuele

Share this post


Link to post
Share on other sites
nguyenphong

Can u write by english, cause i am vietnamese , i don't understand what u write . I cry :" huhuhuhuhuhuhuhuhuhuhuhu "

Share this post


Link to post
Share on other sites
Livio Orsini

Sorry, but this is an italian forum and in Italia the official language is italian not english

Share this post


Link to post
Share on other sites
emanuele.croci

Ciao,

approfitto di questa "simpatica" risposta del vietnamita per aggiornarvi sulla situazione:

Abbiamo montato un motore 8 poli, 7.5 kW sulla fresa, e va molto bene. Posso lavorare senza nessun problema a 10mm/min (=4 giri/min,= 0.3 Hz).

Ho provato anche a 5 mm/min (cioè 0.15 Hz) e funziona, anche se un po' a scatti ....comunque la cosa è puramente teorica perché la minima velocità richiestami è di 10-15 mm/min

Ho provato a far lavorare la fresa in movimento interpolato bi-asse e devo dire che funziona molto bene (l'errore è < 0.1mm); ad esempio abbiamo provato a fresare un cerchio su una lamiera... perfetto!, gli operatori erano sbalorditi, non potevano credere ai loro occhi!!

Grazie alle righe magnetiche abbiamo recuperato tutti i giochi (enormi) della macchina e il PID di controllo non presenta "nervosismo" all'inversione....

Adesso, la mia prossima idea è quella di creare un sistema di programmazione SEMPLIFICATO (un po' tipo il linguaggio LOGO di una volta) che permetta all'operatore di combinare semplici "figurine" di base per creare programmi anche complessi.

Finora gli ho messo a disposizione solo le "figurine" (a video, in base al programma scelto, compare un cerchio, o un arco, o una diagonale, o una "greca" di spianatura, dove l'operatore deve solo inserire le quote notevoli), mi manca adesso il modo di combinarle...

Ciao, Emanuele

Share this post


Link to post
Share on other sites
Livio Orsini

Ottimo, Emanuele! Questi aggiornamenti sono interessanti ed aprono una finestra su applicazioni realizzate senza appiattirsi sul conformismo delle soluzioni "facili"

Share this post


Link to post
Share on other sites
floppydisco

Salve a tutti, non so se è giusto riprendere questa interessante discussione o aprirne una nuova, proviamo qui...

Devo realizzare una applicazione affine alla prima di emanuele:

Ho un asse (master) che ha un suo movimento, su cui non devo intervenire. E' un brushless che fa movimenti avanti-indietro tra due quote. Devo ancora decidere se installare un encoder addizionale o utilizzare un segnale di emulazione encoder in uscita dal drive (sew movidrive).

Poi ho un secondo asse, che deve assumere posizioni che sono funzione dell'asse sopracitato. Il target di posizione dello slave calcolato, potrebbe avere un andamento ad onda "triangolare", o addirittura a gradino. Cioè la velocità istantanea potrebbe passare da zero alla velocità di moto (e viceversa) senza rampe.

Ora, sto facendo delle prove a banco:

- CPU 314

- tic del loop 10ms

- Motore asincrono comandato da inverter in V/F in velocità ad anello aperto (uscita analogica dal plc).

- Encoder 240 imp/giro (in realtà è 60 ma nel contatore veloce uso il modo x4) sull'albero del motore,

- A banco non ho il master, quindi genero via sw un profilo di posizione (in impulsi) appunto triangolare, da 0......2000 con incrementi (velocità) di 20 pulses ogni 10ms,

- regolatore sw che mi comanda l'analogica.

Premetto che mi sono letto e riletto il tutorial-bibbia di Livio.

Allora. nel regolatore ho previsto KP, chi, e FF.

Non mi è molto chiaro questo passaggio (dal post del 23/5/2005):

Ho usato come feedforward, banalmente... Vfeed y= Vx * (dy/dx),

dove Vx è la velocità dell'asse X misurata ogni 100 ms leggendo gli impulsi encoder, mentre dy/dx è la derivata della funzione setpoint(x), cioè sin(x).

Io ho fatto così:

-ad ogni tic, calcolo la velocità del target come (targ_attuale - Targ_al_tic_precedente) poi la moltiplico per un nr in modo da ottenere un valore di ff circa il 90% del riferimento che andrò a dare al inverter.

- Dalle prime prove, ho ottenuto i risultati migliori senza utilizzare Integrale.

Aggiustando ff e Kp, nel tratto a velocità costante, ho un errore di posizione che oscilla tra 0 e 4 impulsi encoder (prove a varie velocità da 5 a 40 Hz) però senza usare integrale, noto che è MOLTO influenzato dal valore del ff.

Ciò che non mi piace è che alle partenze e agli arresti il comportamento non è bello. Allo start, ho, per alcuni istanti errori di pos di circa 300-400. Agli arresti, il motore ha un overshooting, cioè si arresta poi ritorna indietro per circa 1-2 giri. Tutto questo credo perchè in pratica non ho rampe.

Quindi:

- Come faccio a gestire e/o introdurre delle rampe?

- Potrebbe essere utile introdurre una banda morta sull'errore di posizione?

- Nella ipotesi di utilizzare integrale, per limitare overshooting, sarebbe opportuno limitare il valore del integrale nel caso l'uscita fosse gia saturata dall'azione proporzionale? (così è nei pid siemens FB41).

- Ancora, i progettisti meccanici, sono più propensi ad utilizzare Brushless in luogo del asincrono anche sull'asse slave, questo potrebbe aiutare?

Grazie e ancora complimenti a tutti coloro che hanno partecipato a questa interessante discussione. (quindi anche a me? :rolleyes: )

Edited by floppydisco

Share this post


Link to post
Share on other sites
Livio Orsini
...Tutto questo credo perchè in pratica non ho rampe.

No, è perchè l'azionamento asincrono non è abbastanza rapido per seguire il master. Eventualmente le rampe vanno fatte sul master.

Ancora, i progettisti meccanici, sono più propensi ad utilizzare Brushless in luogo del asincrono anche sull'asse slave, questo potrebbe aiutare?

Questo risolverebbe il problema precedente.

Aggiustando ff e Kp, nel tratto a velocità costante, ho un errore di posizione che oscilla tra 0 e 4 impulsi encoder (prove a varie velocità da 5 a 40 Hz) però senza usare integrale, noto che è MOLTO influenzato dal valore del ff.

E' ovvio che il ff influenzi l'errore a velcoità costante in assenza di integrale. In effetti il ff tende a minimizzare o, in via teorica, ad annullare la necessità dell'azione integrale. Tanto che si può sfruttare la correzione integrale per autocorreggere il ff.

Il miglior metodo di generazione di ff per lo slave è dare il medesimo riferimento del master moltiplicato per il rapporto m/s

Share this post


Link to post
Share on other sites
floppydisco

Livio grazie per le risposte.

- Non posso fare le rampe sul master, in quanto lui è un oggetto che si sposta continuamente avanti-indietro tra due quote e non posso modificarne il moto. E' lo slave che per certe porzioni della corsa del master dovrà spostarsi. La mia idea era quella di suddividere il tragitto del master in "settori", ad ogni settore, corrisponde una quota dello slave. Però così ho che il profilo di posizione dello slave sarà triangolare o trapezoidale, ma la velocità un profilo a gradini. E' ammissibile anche per un brushless?

E se introducessi da sw delle rampe sulla velocità, correrei il rischio di errori di inseguimento?

Share this post


Link to post
Share on other sites
Livio Orsini

Più le due velocità sono identiche, minore è l'errore di spazio. Se inserisci una rampa sul riferimento di velocità dello slave avrai un errore di posizione tende ad aumentare, per poi essere,forse recuperato.

Fai attenzione che lo slave, per recuperare l'errore di spazio, deve andare in sovra velocità rispetto al master. maggiore è l'errore maggiore sarà la sovra velocità necessaria, o maggiore saràil tempo necessario al recupero. Dipende tutto dalle esigenze e dalle possiibilità della macchina. Ci sono processi in cui non è possiible avere sovra velocità.

Share this post


Link to post
Share on other sites
Supertony

Dopo aver letto con ESTREMO interesse la discussione (ed essermi ripromesso di rileggerla ancora molte altre volte, così come l'utilissimo tutorial di Livio sui PID), volevo solo dare un'opinione-risposta a quanti insistono sul fatto che "c'è Tizio e Caio che ti fornisce un pacchetto che fa tutto"... ebbene, nella nostra azienda, molto tempo fa abbiamo messo a punto, in S7-300, un bel blocchetto FB che gestisce il posizionamento di un motore senza nemmeno scomodare un PID, nel senso che il posizionamento avviene come semplice proporzione tra la quota di destinazione e quella attuale; il risultato poi viene "trattato" matematicamente in modo da generare una curva vagamente a "S" che porti l'asse a destinazione in modo "elegante" ma al tempo stesso "deciso", gestendo eventuali correzioni in una direzione o l'altra. In pratica si lavora solo con una specie di feedforward, avendo cura che la velocità minima passata all'inverter sia comunque sufficiente a muovere l'asse. Orbene, con questa semplicissima e banale implementazione abbiamo venduto CENTINAIA di incartonatrici in grado di raggiungere 13-14 cicli di pick-and-place al minuto, quando con brushless (sulla stessa meccanica) ne raggiungiamo tuttalpiù 16. Il prossimo passo sarà sicuramente quello di accostare un PID al posizionatore, in modo da controllare l'effettivo posizionamento... resta comunque il fatto che E' VALSA ASSOLUTAMENTE LA PENA, allora, di sviluppare tali blocchi di software!!! in questo modo abbiamo inoltre tenuto la totale compatibilità elettrica con la macchina standard, nella quale i 2 motori (X e Y) lavorano semplicemente a finecorsa avanti-indietro e alto-basso... praticamente, con 2 encoder e quattro bit in croce da abilitare la macchina raddoppia il rendimento... e viene venduta moooooooooooooooooooooooolto più cara! :thumb_yello:

Share this post


Link to post
Share on other sites
walterword

ciao Emanuele

Mi piacerebbe riaprire questa discussione .

Credo che da un punto di vista tecnologico un plc possa interpolare due assi .

Per esempio un taglio al volo ....uno dei due assi mantiene una velocità costante .

L'altro asse deve inseguire il punto di taglio e tagliare perpendicolarmente il pezzo che sia .

Con le leggi della cinematica si puo' calcolare quanto pezzo uscirà al tempo x vista la velocità costante .Il tempo di taglio della lama e' conosciuto e da qui si puo' calcolare quanto lineramente si sposti il pezzo prima di essere completamente tagliato .

Per il sincronismo , cioe' il fatto che la lama insegua e mantenga la stessa velocità del pezzo potremmo rifarci alle formule interpolatorie di Livio :)

A vista o con strumenti tipo squadra o altro , si può da subito capire se la lama era sincronizzata durante il taglio oppure no . se il taglio e' obliquo in uno dei due lati formando un trapeziode vuol dire che la lama era piu lenta e piu veloce del pezzo .

Pensi che sia un'applicazione fattbile ?

Share this post


Link to post
Share on other sites
emanuele.croci

Buongiorno Walter,

Leggo ora per caso questa risposta (per svariati anni avevo "cambiato mestiere" e avevo abbandonato il forum... adesso ho ripreso il lavoro di prima).

Ritengo che l'applicazione sia fattibile... l'unica limitazione può essere la dinamica

Cioè, avere un BASSO errore di inseguimento con una ALTA velocità.

"Grosso modo" fai conto che con PLC + Motori AC puoi avere un tempo di chiusura anello di posizione sui 10ms.

Quindi "grosso modo" il tuo errore di inseguimento massimo potrebbe essere dato da S=v* 10ms , in cui V è la velocità di avanzamento del materiale.

Se per te questo errore è accettabile, non ci sono problemi!

Sono a disposizione

Ciao , Emanuele  

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  

×
×
  • Create New...