Jump to content
PLC Forum


Operational Amplifier

Asse Morbido

Recommended Posts

Operational Amplifier

Ho un asse orizzontale movimentato da un motore brushless e relativo encoder con corsa utile di 250mm, questo asse movimenta un carico verticale (per capirci la struttura meccanica) con installato un motore asincrono che ha lo scopo di asportare materiale.

I'asse deve mantenere costante l'assorbimento del motore asincrono, nel senso che se spingo l'asse deve cedere, se mi ritiro l'asse deve cercare.

Attualmente ho implementato una regolazione proporzionale all'errore e devo dire che quando l'asse deve cedere il tutto va bene, il problema nasce quando devo cercare, il sistema va a scatti perché durante lo spostamento sente la corrente che aumenta (dovuto alla vibrazione del movimento), di conseguenza l'errore diminuisce e rallenta poi accelera...insomma una porcheria.

Si accettano consigli...:lol:

Link to comment
Share on other sites


Livio Orsini

Non è che ce molto da fare se non filtrare la lettura della corrente o ridurre di molto il guadagno proporzionale dell'asse, però così facendo la risposta diventa lenta. (ma nache filtrare la lettura della corrente in pratica rallenta l'azione).

 

Una trentina di anni fa automatizzai alcune macchine che avevano un funzione analoga, però il controllo era in analogico.

Link to comment
Share on other sites

Operational Amplifier

Grazie Livio per la risposta,

Attualmente lavoro con regolazione proporzionale all'errore quando l'asse deve cedere, poi se vedo che l'errore è > di una tolleranza lancio l'asse alla ricerca con accelerazione e decelerazione diverse, appena raggiungo la soglia (Trovato il carico) ritorno con il proporzionale.

 

Così non sembra male.

 

Secondo te Livio dovrei aggiungere anche una Regolazione Integrale...? A me così non dispiace.

Link to comment
Share on other sites

Livio Orsini
9 minuti fa, Operational Amplifier scrisse:

Secondo te Livio dovrei aggiungere anche una Regolazione Integrale...?

 

Se l'asse avanza, o retrocede, sino a che l'errore rientra nella banda morta non necessiti di integrale; teoricamente non necessiti nemmeno di proporzionale perchè potrebbe bastare una vlocità minima fissa.

Link to comment
Share on other sites

Sandro Calligaro

Non ho capito se la regolazione che hai realizzato è di velocità o di posizione (e se è di posizione, se avviene tramite anello annidato di velocità).

 

Inoltre non mi è chiaro cosa sia l'errore di cui parli.

Mi spiego meglio...

All'inizio dici che devi mantenere costante lo sforzo sull'asincrono, quindi immaginavo che l'errore fosse calcolato come la differenza tra un valore di riferimento e la corrente/coppia sull'asincrono.

Poi, però, dici che

15 ore fa, Operational Amplifier scrisse:

il problema nasce quando devo cercare, il sistema va a scatti perché durante lo spostamento sente la corrente che aumenta (dovuto alla vibrazione del movimento), di conseguenza l'errore diminuisce e rallenta poi accelera

e qui sembra che la corrente che vai a monitorare/regolare sia quella del brushless...

... o è sempre quella dell'asincrono? Ma perché la corrente dell'asincrono aumenta quando vai alla ricerca? Perché sei già in contatto con il materiale da lavorare?

 

Se fosse vera l'ultima cosa che ho scritto, mi sembra di capire che il solo proporzionale è ottimale.

Se ho capito il senso del controllo, la posizione in cui dovresti lavorare (cioè quella che idealmente garantisce lo sforzo voluto) non è costante, ma varia perché varia la superficie del materiale e/o lo spessore della "fresa".

Usare un proporzionale presuppone che la forza da applicare sia proporzionale alla distanza rispetto ad un punto di "zero". Ma quel punto di zero, se ho capito bene, è variabile.

 

Forse potrebbe bastare un controllo di coppia, ossia spingi tanto quanto serve ad ottenere lo sforzo voluto sull'asincrono, indipendentemente dalla posizione.

E' molto simile a ciò che si farebbe manualmente (penso ad un levigatore che vuole levigare una superficie curva).

 

Sempre che io c'abbia capito qualcosa! :)

Link to comment
Share on other sites

Operational Amplifier

Ciao Sandro Calligaro,

Ti confermo che la corrente che leggo è quella del motore asincrono e non quella del brushless.

Quote

Ma perché la corrente dell'asincrono aumenta quando vai alla ricerca? Perché sei già in contatto con il materiale da lavorare?

Il materiale non è a contatto ma il motore asincrono montato sulla struttura sente che si sta muovendo il brushless in avanti aumentando leggermente la sua corrente, di conseguenza diminuisce l'errore (diminuendo poi aumentando ecc.).

Quote

Forse potrebbe bastare un controllo di coppia, ossia spingi tanto quanto serve ad ottenere lo sforzo voluto sull'asincrono, indipendentemente dalla posizione.

E' molto simile a ciò che si farebbe manualmente (penso ad un levigatore che vuole levigare una superficie curva).

Attualmente il brushless non è diretto alla vite ma passa tramite un riduttore, di conseguenza la mia sensibilità diminuisce notevolmente...potrei provarlo nella prossima applicazione perchè l'asse verrà montato direttamente sulla vite. 

Link to comment
Share on other sites

Livio Orsini
2 ore fa, Sandro Calligaro scrisse:

Non ho capito se la regolazione che hai realizzato è di velocità o di posizione (e se è di posizione, se avviene tramite anello annidato di velocità).

 

E' un controllo tipico di alcune macchine come le rettifiche.

SOlitamente si lavora sulla coppia del motore che aziona l'utensile.

Con gli azionamenti cc si faceva propio quelle che tu ipotizzi: si regola la velocità di avanzamento in "y" del carro porta utensile in funzione della differenza tra il valore di corrente letta e quella corrispondente alla coppia voluta. Entro la banda morta di corrente letta, la velocità di avanzamento è zero.

 

In questo caso mi sembra di capire che l'azioamento dell'utensile èsemplicemente il motore asincrono pilotato direttamente da rete.

L'assorbimento del motore corrisponde grossolonamente allo sforzo dell'utensile quindi, regolando la posizione dell'utensile rispetto al pezzo in lavorazione, si ottiene una corrente compresa entro un valore minimo ed uno massimo.

Sempre se ho capito bene l'utensile lavora in asse "z"; in un senso sembra che la variazione di corrente sia abbastanza regolare mentre lo è molto memno nell'altro senso, da qui i problemi che lamenta l'autore della discussione.

Sempre da come interpreto io la descrizione sembra un mandrino verticale.

In pratica è un anello di posizione sui generis, in cui il trasduttore di posizione è costituito dall'assorbimento del motore asincrono.

 

Operational Amplifier dovrebbe spiegare un poco meglio come è costituita la macchina, però se ha queste oscillazioni di corrente non c'è molto da fare per migliorare il sistema se non filtrarle o rallentare il controllo.

 

Link to comment
Share on other sites

Sandro Calligaro

Se ho capito bene, c'è un controllo simile anche per le spazzole degli autolavaggi automatici, che seguono approssimativamente il profilo dell'auto.

 

25 minuti fa, Operational Amplifier scrisse:

Attualmente il brushless non è diretto alla vite ma passa tramite un riduttore, di conseguenza la mia sensibilità diminuisce notevolmente...potrei provarlo nella prossima applicazione perchè l'asse verrà montato direttamente sulla vite. 

Non vedo un problema di sensibilità: più spingi in avanti, più l'utensile si muove in avanti (su questo penso ci siano pochi dubbi).

La misura per il feedback di sforzo la puoi comunque prendere dalla corrente dell'asincrono, come è adesso.

La forza imposta dal brushless è in realtà la variabile di controllo, cioè quella con cui agisci sull'utensile, per aumentarne o diminuirne lo sforzo.

La forza sarà poi in realtà proporzionale (con un certo errore, dovuto principalmente alla meccanica) alla corrente di asse q del brushless (in pratica alla corrente, perché non dovrebbe esserci corrente di asse d, a meno di non andare oltre la velocità nominale).

La corrispondenza tra corrente e forza non sarebbe cruciale (per questo non vedo un problema di sensibilità): la vera compensazione avverrebbe tramite il feedback sulla corrente dell'asincrono.

 

Quello che cambia, però, è che non ti serve creare (come fai adesso, se ho capito bene) un riferimento di posizione, visto che il brushless lavorerebbe con riferimento di forza (->coppia -> corrente, visto che sono approssimativamente proporzionali tra loro).

 

Sarà magari necessaria una strategia particolare per quando si arriva a fine corsa o si deve iniziare la lavorazione, cioè quando il pezzo da lavorare non è presente.

 

In alternativa, si può pensare che il regolatore, basandosi sullo sforzo dell'asincrono, vada a generare una variazione di posizione, rispetto a quella attuale, che potrebbe essere anche solo proporzionale all'errore.

Se la variazione per ogni periodo di aggiornamento è limitata ad un certo valore ti assicuri che la velocità sia limitata, ed eviti comunque di agire rispetto ad una posizione predefinita, che non è necessariamente legata alla posizione dove inizia il contatto.

Link to comment
Share on other sites

Livio Orsini
47 minuti fa, Sandro Calligaro scrisse:

La forza imposta dal brushless è in realtà la variabile di controllo, cioè quella con cui agisci sull'utensile, per aumentarne o diminuirne lo sforzo

 

Sandro forse non hai mai visto in pratica un'applicazione simile.

Non è proprio così semplice come pensi.

Lo sforzo dell'utensile non è solo proporzionale alla forza con cui è spinto contro il materiale.

 

Rinnovo l'invito a Operational Amplifier affinchè desciva con maggior dettaglio la macchina.

Link to comment
Share on other sites

Sandro Calligaro
22 minuti fa, Livio Orsini scrisse:

Lo sforzo dell'utensile non è solo proporzionale alla forza con cui è spinto contro il materiale.

Giusto, Livio, altrimenti Operational Amplifier non avrebbe chiesto un consiglio.:)

Anche se fosse fortemente non-lineare, non è detto che non lo si possa controllare.

Immagino anche che il feedback sia una misura dell'ampiezza di corrente, che magari è molto filtrata, e quindi quello sarà un forte limite alla dinamica di controllo.

 

Non ho la "sensibilità" per dire se e quanto una soluzione di controllo o un'altra siano applicabili, ma riesco ad immaginare se la logica ha senso o meno.

 

 

1 ora fa, Livio Orsini scrisse:

Con gli azionamenti cc si faceva propio quelle che tu ipotizzi: si regola la velocità di avanzamento in "y" del carro porta utensile in funzione della differenza tra il valore di corrente letta e quella corrispondente alla coppia voluta. Entro la banda morta di corrente letta, la velocità di avanzamento è zero.

Rileggendo, vedo che questo (velocità proporzionale all'errore di sforzo) corrisponde esattamente ad impostare una variazione di posizione proporzionale all'errore sullo sforzo (come proponevo sopra).

 

Impostando invece una posizione proporzionale all'errore di sforzo, si otterrebbe un risultato buono solo se lo zero della posizione fosse esattamente dove lo sforzo è quello voluto.

Invece, non ho capito come è stato scelto il riferimento (lo zero) della posizione imposta al drive.

 

Se il mandrino fosse verticale, la forte differenza di comportamento tra un verso e l'altro si potrebbe spiegare anche con il peso.

Link to comment
Share on other sites

Livio Orsini

Pensa ad una rettifica che rettifichi un cilindro.

Il cilindro è orizzontale e fatto ruotare tra punta e contropunta come se fosse su di un tornio.

In luogo dell'utensile del tornio c'è una mola fatta ruotare da un motore. Il tutto è posto su un carello che trasla sull'asse "x" parallelo al cilindro e sull'asse "y" perpendicolare al cilindro.

 

Se voglio mantenere costante la coppia erogata dal motore della mola, leggo la corrente assorbita dal motore (motore in cc quindi corrente <==> coppoia) ed in base a l suo valore, confrontato con il valore di riferimento, avanzo o retrocedo con l'asse "y".

In pratica fisso una banda morta e poi con un coefficiente proporzionale all'errore genero un riferimento di velocità per l'azionamento dell'asse "y".

 

Questo se voglio mantenere costante lo sforzo dell'utensile (mola).

 

Se invece voglio mantenere costante la pressione dell'utensile sul materiale eseguirò il controllo di coppia sul motore dell'asse "y".

 

Secondo il tupo di lavorazione, su questo tupo di macchine, si usa la prima o la seconda regolazione.

 

C'è poi una terza regolazione per compensare il decentramento dovuto al consumo dell'utensile, ma questa è un'altra storia.

Link to comment
Share on other sites

Operational Amplifier

Intanto grazie per l' interesse dimostrato.

Quote

Rinnovo l'invito a Operational Amplifier affinchè desciva con maggior dettaglio la macchina.

La macchina non è particolarmente complicata (a livello meccanico), c'è un basamento (un parallelepipedo per intenderci) alto circa 500 mm, lungo circa 600mm e largo 400mm, all'interno c'è una vite a ricircolo di sfere con agganciato un riduttore con motore brushless (in testa alla vite), la corsa della vite è 250mm, il movimento è orizzontale.

Sopra questo basamento c'è una struttura metallica alta circa 1000mm che viene traslata dalla vite a ricircolo di sfere, verso l' estremità di questa struttura c'è un motore asincrono con montato un utensile di alesatura (che asporta materiale).

 

Il sistema ideale dovrebbe mantenere costante la corrente del motore asincrono.

 

Nel mio programma leggo la corrente del motore asincrono, poi tramite un semplice regolatore P che consiste nel classico [(SP - PV)  * K]  genero una variazione di posizione dell'asse, spero di aver chiarito l'aspetto generale della macchina.  

Link to comment
Share on other sites

Sandro Calligaro
3 ore fa, Operational Amplifier scrisse:

genero una variazione di posizione dell'asse

Da quanto ho immaginato io e, soprattutto, da quanto dice Livio (vista la sua esperienza, gli darei più credito io stesso :)), sembra che imporre una velocità invece che una posizione sia una scelta molto più oculata.

In quel modo, se non altro, si evita di avere una sola posizione nella quale l'errore sullo sforzo (cioè sulla corrente letta dall'asincrono) è nullo.

 

In pratica si sfrutta l'intrinseca relazione integrale che lega velocità e posizione, per ottenere errore nullo a regime.

 

Si dovrebbe anche evitare il problema che descrivevi nel primo post, in cui appena la corrente sale, si retrocede, mentre ci si dovrebbe solamente avvicinare più lentamente.

 

PS: come viene ottenuta, di preciso, la misura di corrente sull'asincrono, quella che arriva come feedback al PLC? L'asincrono è trifase, collegato direttamente alla rete?

Link to comment
Share on other sites

ken

è una dinamica simile (ma più complessa) a macchine che faccio. devono spazzolare della lamiera che scorre per eliminare la polvere di carbonio in eccesso. in questo caso ho un inverter che fa girare una spazzola; da questo inverter leggo la coppia attuale. blocco puramente proporzionale che genera un errore e quindi il riferimento di velocità dell'inveter che regola la penetrazione. ho risolto alcune problematiche come diceva Livio nella sua prima risposta, abbassando il guadagno proporzionale. lo abbassavo in alcune condizioni e modi di lavoro ben specifici.

c'è da dire che la mia applicazione ha isteresi molto grosse; un più o meno 10% sulla coppia non creano problemi quindi il regolatore è abbastanza tranquillo e facile da tarare.

 

a livello meccanico sei messo bene? importante è non sottovalutare il rapporto di riduzione. così a naso hai un rapporto molto piccolo e quindi in ricerca del punto ottimale vai a scatti perché ad una piccola variazione non corrisponde un piccolo movimento.

Link to comment
Share on other sites

Livio Orsini
11 ore fa, Sandro Calligaro scrisse:

In pratica si sfrutta l'intrinseca relazione integrale che lega velocità e posizione, per ottenere errore nullo a regime.

 

Esattamente.

14 ore fa, Operational Amplifier scrisse:

spero di aver chiarito l'aspetto generale della macchina.  

 

Si è tutto molto più chiaro.

Quello che non capisco è l'aumento di corrente dell'asincrono quando retrocedi; retrocedendo l'utensile torna su posizioni dove ha già asportato materiale, quindi la corrente dovrebbe diminimuire o rimanere costante.

Link to comment
Share on other sites

Operational Amplifier

Buongiorno a tutti,

La dinamica ed il tipo di macchina è molto simile (se non uguale) a quella descritta da Ken, io dall' inverter non leggo la coppia ma la corrente.

 

Quote

a livello meccanico sei messo bene? importante è non sottovalutare il rapporto di riduzione. così a naso hai un rapporto molto piccolo e quindi in ricerca del punto ottimale vai a scatti perché ad una piccola variazione non corrisponde un piccolo movimento.

 

Rapporto di Riduzione i:7

Link to comment
Share on other sites

Livio Orsini
10 minuti fa, Operational Amplifier scrisse:

io dall' inverter non leggo la coppia ma la corrente.

 

ma il motore è pilotato da inveter?

se si è a controllo scalare (V/f) o vettoriale?

Link to comment
Share on other sites

Operational Amplifier
Quote

ma il motore è pilotato da inveter?

se si è a controllo scalare (V/f) o vettoriale?

Confermo che il motore asincrono è pilotato da Inverter ed il controllo è di tipo vettoriale.

Link to comment
Share on other sites

Sandro Calligaro

Ci sono quindi almeno un paio di cose che, secondo me, faresti bene a verificare:

  • confrontare la corrente totale con la corrente "di coppia" (Iq) o la coppia. Il nome del parametro e le unità di misura potrebbero essere varie (%, Arms, Nm), ma se ti interessa regolare l'effettivo sforzo del motore, la misura di corrente non è affidabile. In un controllo vettoriale, infatti, la corrente "di campo" (Id) potrebbe essere piuttosto rilevante, e falsare la lettura quando sei a carico basso. A basso carico, ad esempio, mi aspetto che la sensibilità della corrente totale rispetto alla coppia meccanica sia molto bassa.
  • il valore della corrente (ma anche della coppia ecc) che viene dal drive sarà filtrato passa-basso. Sarebbe bene, controllare se è accessibile (e modificabile) il parametro che la banda (o la costante di tempo) del filtro. Infatti quel filtraggio è proprio sul tuo segnale di feedback, perciò impone una limitazione secca della banda di regolazione dello sforzo nel sistema complessivo. Avere la possibilità di modificarlo sarebbe un grado di libertà molto utile.
Link to comment
Share on other sites

Livio Orsini

Sono completamente d'accordo con Sandro Calligaro.

 

Questo spiegherebbe anche l'incremento momentaneo di assorbimento di corrente nella fase di allontanamento.

Meglio, molto meglio, leggere il valore della coppia.

Link to comment
Share on other sites

Operational Amplifier
Quote

Questo spiegherebbe anche l'incremento momentaneo di assorbimento di corrente nella fase di allontanamento.

Meglio, molto meglio, leggere il valore della coppia.

 

Quindi mi confermate che sarebbe meglio controllare la coppia e non la corrente del motore asincrono durante la regolazione....?  :worthy:

Link to comment
Share on other sites

Livio Orsini

Sino a quando non hai esplicitamente dichiarato che il motore asincrono è pilotato da inverter in modalità controllo vettoriale, io ero convinti che stessi usando un motore alimentato da rete (l'ho anche scritto), altrimenti ti avrei subito scritto di usare la misura di coppia.

 

Com ha spiegato Sandro Calligaro (che è molto esperto in questo tipo di controlli) "..... se ti interessa regolare l'effettivo sforzo del motore, la misura di corrente non è affidabile. "

Hai un'uscita analogica e un parametro proporzionale alla coppia erogata dal motore, quindi usa quel valore.

 

La regolazione ideale sarebbe dare una velocità di avanzamento che porti il motore ad erogare una coppia molto vicina a quella ideale, usando poi l'errore di coppia misurata per correggere in +/- il riferimento diretto.

Link to comment
Share on other sites

Operational Amplifier

Ok...Domani prelevo dall' Inverter il valore di coppia, poi vi tengo aggiornati....:) 

Link to comment
Share on other sites

Operational Amplifier

Buongiorno a tutti,

Ho prelevato la coppia per effettuare la regolazione, diciamo che effettivamente va meglio ma riscontro ancora il problema quando il motore asincrono si stacca dal materiale, nel senso che lui avanza ma lo vorrei più veloce.

 

Ho provato ad utilizzare due guadagni (uno per la ricerca ed uno per quando cede) con banda morta ma il sistema oscilla...per ora la soluzione migliore che ho trovato è quella di mettere una soglia di errore (naturalmente controllata mentre sta regolando), quando questa soglia viene superata lancio l'asse alla ricerca del contatto con velocità proporzionale al gain impostato, appena il contatto avviene decelero e rientro in regolazione.

 

 

Link to comment
Share on other sites

Livio Orsini

Nelle applicazioni che feci io lavanzamnto era continuo e l'errore di coppia serviva per far avanzare più o meno velocemente l'asse.

Da quello che ho capito dalla tua descrizione si tratta di una alesatrice verticale, è corretto?

 

Se è così potresti ipotizzare una soluzione simile alla mia.

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...