Vai al contenuto
PLC Forum


Posizionamento Asse Circolare


Messaggi consigliati

Inserito:

Devo gestire il posizionamento di una piattaforma rotante.

Il motore è asincrono ed è gestito da un inverter di cui comando l'analogica da plc e ho un encoder collegato all'abero del motore che mi rileva la posizione che azzero ogni volta che una camma occupa un proximity induttivo (zero asse).

Questa gira ad una velocità (variabile) e ad un certo punto dato un segnale di start dovrei gestire il rallentamento fino a fermarmi ad una quota ben precisa.

A seconda della velocità (e della dinamica della macchina) il rallentamento può impiegare fino a 3 giri (molta inerzia).

Ho fatto svariate applicazioni dove gestisco assi lineari con anche con interpolazione (lineare) ma differenzia molto dalle esigenze attuali.

Ho tentato varie soluzioni ma mi scontro sempre con problemi dovuti alla differenza di quota per arrivare a destinazione (di conseguenza la velocità di comando inverter e relativo arresto).

Come quota trasformo gli impulsi encoder in circonferenza anello (esterna) l'unico problema è che 1 impulso prima dello zero la mia quota vale quasi 8mt, 1 impulso dopo solo qualche mm...

Se qualcuno può darmi qualche dritta Vi sarei grato. Non voglio un blocchetto già fatto ma capire come scrivermelo...

Grazie a tutti.


Inserita:

Scusa ma non iesco a capire le difficoltà!

Soprattutto non cpaisco questo:

l'unico problema è che 1 impulso prima dello zero la mia quota vale quasi 8mt, 1 impulso dopo solo qualche mm...

Inoltre sarebbe più costruttivo se tu avessi già spiegato con quale sistema, PLC, CNC, embedded, altro, stai controllando l'asse rotante.

Vediamo di ricapitolare per capire..se ho capito.

Hai un sistema rotante con un encoder calettato sull'albero.

Tu azzeri il conteggio ad ogni passaggio per lo zero, in modo da avere sempre il conteggio relativo alla rivoluzione in corso.

Prima osservazione.

Sarebbe molto più preciso azzerare il conteggio tramite la marca di zero dell'encoder, anzi bisognerebbe non azzerare mai il conteggio sino a posizionamento terminato. Così come fai c'è il rischio, non remoto, di accumulare errori.

Se hai gestito posizionamenti lineari non dovresti avere difficoltà, il sistema è identico.

Ti calcoli la quota di ralllentamento in funzione dell'accelerazione possibile e della velocità di alvoro, in modo identico ad un asse lineare. La quota la calcoli in numero d'impulsi di encoder. Che questi impulsi valgano 1 giro, mezzo giro, o 36 giri non ha alcuna importanza, basta contare gli impulsi.

  • 2 weeks later...
Inserita:

Livio, grazie per l'interessamento e scusami per la poca chiarezza.

Il sistema è un plc Siemens 314 2DP

Quanto descrivi è corretto ma l'asse è sempre circolare e ruota sempre in senso antiorario.

La lunghezza della circonferenza totale è di 7890 mm.

Il problema è che se devo andare da 1000mm a 7000mm o viceversa l'asse gestito come un asse lineare fa la strada più lunga. Per evitare ciò ho calcolato la l'angolo che separa i 2 punti (posizione attuale e destinazione) e calcolato il relativo seno: questo mi dà il senso di rotazione desiderato per compiere il percorso più breve per cui passando per il sensore di zero (dove faccio l'inizializzazione della quota).

Ora il problema è calcolare la distanza poiché passando per lo zero non è una sempre una sottrazione, devo distinguere questo caso e sommare la differenza tra la quota interessata e la circonferenza massima. Anche questo con un po di righe di codice l'ho calcolato e gestito.

L'ultimo problema è che nello stesso punto (quindi a parità di posizione attuale) posso trovarmi in 3 casi diversi (visto che nel mio caso possono servire fino a 3 giri per arrestare l'asse dalla velocità max di 70rpm) a seconda della velocità attuale.

Per ovviare a questo problema ho sperimentato diverse soluzioni che calcolavano la distanza in base alla velocità, ma non ho trovato un modo "pulito" per eseguirlo ho dovuto adattare il mio posizionatore a fare quanto segue: quando arriva il segnale di posizionamento trasferisco subito all'inverter la velocità alla quale è sufficente arrestare in mezzo giro e durante questa fase la marcia avanti resta forzata, quando la velocità scende al di sotto di questa soglia (rilevata in modo empirico) allora attivo il posizionatore vero e proprio che mi porta l'asse in posizione.

Premesso tutto questo e precisato che adesso il sistema funziona chiedo un parere a chi è sicuramente più esperto ed accetto eventuali consigli.

Quello che non mi "piace" è il fatto che a seconda di quando viene dato l'impulso di posizionamento l'asse può compiere fino ad un giro completo alla velocità (bassa) di arresto, perché se il suo valore (mi sono tirato dentro l'informazione analogica direttamente dall'inverter) a 180° dall'arresto è appena superiore al valore di soglia e scende al di sotto di questo valore dopo 10° allora l'asse compie altri 350° fino al raggiungimento del prossimo 180° dive il valore della velocità sarà sufficiente a fermarmi nello spazio utile.

Grazie ancora, ciao.

Inserita:

Forse sarà la vecchiaia ma non vedo il problema.

In funzione della velocità di lavoro hai una distanza di rallentamento ben precisa; questo è indipendente dal fatto che l'asse sia lineare o rotante. Questa distanza puà essere espressa in unità mks, cgs, etc, o anche in numero di impulsi di encoder.

Ti calcoli il numero di impulsi di encoder necessari per arrivare a velocità di approssimazione lenta, lo dividi per il numero di impulsi per giro ed hai la quantità di giri da percorrere, a cui sommi il resto della divisione in numero d'impulsi. Il numero di impulsi, resto della divisione lo compari con il punto di stop per ricavare la posizione di inizio rallentamento.

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