Controllo del movimento

Concetto di task

Il controller esegue l'applicazione utente in cui i blocchi funzione di controllo movimento vengono chiamati in un task separato dal task di movimento in tempo reale in cui sono calcolati i profili di movimento e si verifica la comunicazione Sercos. Questi due task possono avere tempi di ciclo diversi. Il tempo di ciclo del task dell'applicazione utente è in genere di 10 ms, ma sono possibili tempi di ciclo più brevi fino a 1 ms. Il task in tempo reale opera con tempi di ciclo di 1 ms, 2 ms o 4 ms, in base al tempo di ciclo Sercos e alla configurazione della macchina (tipo di controller, numero di assi, e così via).

Questa separazione garantisce un numero di vantaggi in termini di aumento delle prestazioni. L'applicazione utente può essere eseguita lentamente come richiesto, ad esempio, per consentire le operazioni del file system o la comunicazione di rete. Gestione evento, processo decisionale ed elaborazione dei comandi dell'applicazione (in genere meno critici dal punto di vista dei tempi) possono essere eseguiti in questo task potenzialmente più lento. Tuttavia, le modifiche al profilo di movimento possono essere eseguite alla velocità massima eseguendo e inserendo nel buffer i blocchi funzione in anticipo.

Questo approccio comprovato viene inoltre utilizzato dai sistemi Schneider Electric PacDrive.

I programmatori che ben conoscono i sistemi come SoftMotion (che esegue l'applicazione utente nel processo in tempo reale) e la programmazione standard PLCopen devono riconsiderare varie pratiche comuni per portare questo approccio al suo massimo potenziale. Un tipico approccio alla programmazione PLCopen è attendere che un blocco funzione “finisca” (ad esempio, le uscite Done, inVelocity, EndOfProfile, InGear) e utilizzi i segnali corrispondenti per eseguire il successivo blocco funzione.

Per ottenere il movimento previsto senza balzi improvvisi (specialmente con valori di velocità e/o accelerazione non uguali a zero alla fine di un job di movimento), i blocchi funzione devono essere eseguiti in anticipo con MC_Buffer_Mode impostato a Buffered. In questo modo, il profilo di movimento di un blocco funzione diventa attivo nello stesso ciclo in tempo reale in cui finisce il precedente blocco funzione.

Se si attiva l'avvio (Execute) del successivo blocco funzione tramite, ad esempio, il segnale EndOfProfile del blocco funzione precedente invece di inserirlo nel buffer, può verificarsi uno o più cicli di ritardo in cui nessun blocco funzione è attivo e l'asse rimane fermo finché il successivo ciclo di task dell'applicazione avvia il successivo blocco funzione.

Axis_Ref

Come definito da PLCopen, si utilizza un Axis_Ref come ingresso dei blocchi funzione di controllo movimento per specificare l'asse da utilizzare come master o slave per tale blocco funzione.

Il Modicon M262 Motion Controller fornisce tre tipi di implementazioni per Axis_Ref:

oAsse di azionamento

Un asse di azionamento fornito dall'azionamento LXM32S o dall'oggetto dispositivo Azionamento Sercos generico. È possibile accedervi tramite, ad esempio, DRV_X.Axis. Un asse di azionamento può essere utilizzato come asse master o asse slave per qualsiasi blocco funzione con l'ingresso corrispondente. I valori di posizione, velocità e/o accelerazione di un asse di azionamento sono in genere valori di destinazione. La sola eccezione è nelle situazioni in cui il Modicon M262 Motion Controller non controlla il movimento dell'asse (ad esempio, durante homing, uno stop effettuato in modo autonomo dall'azionamento o quando lo stadio di potenza dell'azionamento è disabilitato). In tali condizioni, la posizione dell'asse è la posizione di feedback e velocità/accelerazione sono calcolate in base alla posizione di feedback. Un asse slave può ancora seguire un asse master anche quando quest'ultimo non è controllato correntemente dal Modicon M262 Motion Controller.

oAsse virtuale

Un asse virtuale rappresenta, ad esempio, un albero di macchina virtuale, oppure qualsiasi altro asse intermedio per relazioni complesse tra assi master e slave. È possibile creare un asse virtuale dichiarando un VAR di tipo FB_ControlledAxis ovunque nell'applicazione. Un asse virtuale può essere utilizzato come asse master o asse slave per qualsiasi blocco funzione con l'ingresso corrispondente.

Il Modicon M262 Motion Controller non limita il numero di assi virtuali. Tuttavia, tenere presente che un asse virtuale ha un impatto sulle prestazioni della CPU del Modicon M262 Motion Controller paragonabile a quello di asse di azionamento.

oAsse ingresso encoder

Un asse ingresso encoder è fornito dall'ingresso encoder onboard del Modicon M262 Motion Controller. È possibile utilizzare un asse ingresso encoder solo come asse master, non come asse slave. Quando utilizzato come asse master, i valori di feedback forniti dall'encoder vengono utilizzati come posizione dell'asse master.

Se un asse master diventa indisponibile (ad esempio, l'encoder è scollegato o non è operativo), qualsiasi asse slave che segue questo master passa allo stato operativo PLCopen ErrorStop. Se si desidera che in tale situazione gli slave si arrestino in modo sincrono, implementare un asse virtuale intermedio tra gli assi:

Se l'asse master diventa indisponibile, l'asse virtuale intermedio passa allo stato operativo PLCopen ErrorStop. Gli assi che seguono l'asse intermedio rimangono nello stato operativo PLCopen SynchronizedMotion e continuano a seguire l'asse virtuale intermedio durante la rampa di decelerazione.

Configurazione dell'asse

Il Modicon M262 Motion Controller supporta entrambi i tipi di asse previsti da PLCopen:

oasse modulo

oasse lineare/finito (con o senza limiti di movimento)

Un asse viene configurato richiamando il metodo corrispondente di Axis_Ref.

Il modulo di un asse definito come asse modulo viene osservato indipendentemente dallo stato dell'asse o job (ad esempio, anche quando l'asse è disabilitato).

Non esiste necessariamente alcuna relazione tra il modulo asse e il periodo dell'applicazione camma (né nella direzione X né in Y), anche se la camma è avviata in modalità assoluta. Per i dettagli, consultare la descrizione del blocco funzione.

La posizione di riferimento e la posizione effettiva sono sullo stesso lato del salto modulo, ossia, ad esempio, nel caso di un asse che si sposta in avanti con modulo 360, la posizione effettiva può avere un valore di -2 (invece di 358) quando la posizione di riferimento è 1.

Posizione assoluta, homing e movimenti assoluti

Dopo aver spento e riacceso il sistema, un asse dell'azionamento o dell'encoder in genere ripristina la propria posizione assoluta dalla posizione encoder memorizzata, moltiplicando la posizione dell'encoder con la scalatura dell'azionamento e correlando il valore alla posizione del modulo, se si utilizza un asse del modulo. Tuttavia, il controller non può verificare la correttezza di tale posizione assoluta ripristinata. La posizione potrebbe non essere corretta se, ad esempio, la posizione meccanica è stata modificata (ad esempio, sostituzione di motore, encoder, e/o trasmissione, oppure sono stati eseguiti movimenti manuali durante lo spegnimento). Inoltre, l'intervallo di movimento dell'asse deve essere limitato meccanicamente in modo che risulti minore di un overflow dell'encoder. Il rapporto di trasmissione e/o il fattore di scalatura dell'azionamento deve essere poi selezionato in modo che la posizione dell'encoder del periodo dell'encoder possa essere risolta in un multiplo intero del periodo dell'applicazione.

Per evitare di avere condizioni con posizioni assolute non corrette, il Modicon M262 Motion Controller ripristina la posizione assoluta, ma non considera automaticamente l'asse o gli assi da riportare alla posizione iniziale. Un asse viene considerato in posizione iniziale solo dopo che il blocco funzione MC_Home  o il blocco funzione MC_SetPosition è stato eseguito correttamente o se il flag isHomed è stato impostato a TRUE dall'applicazione del PLC.

Warning_Color.gifAVVERTIMENTO

FUNZIONAMENTO ANOMALO DELL'APPARECCHIO

oVerificare che l'asse sia stato riportato alla posizione iniziale correttamente dopo ogni spegnimento/accensione e dopo ogni intervento manuale prima di eseguire altri movimenti.

oVerificare che l'asse sia stato riportato correttamente alla posizione iniziale prima di eseguire qualsiasi tipo di movimento assoluto.

oNon impostare il flag isHomed a TRUE nell'applicazione del PLC a meno che non sia stato assolutamente verificato e confermato con mezzi idonei che la posizione assoluta ripristinata è corretta.

oLeggere a fondo e completamente tutta la documentazione pertinente di software e apparecchiature utilizzati nell'applicazione/nel processo.

Il mancato rispetto di queste istruzioni può provocare morte, gravi infortuni o danni alle apparecchiature.

Intervallo movimento e calcolo della posizione con numeri in virgola mobile

Il Modicon M262 Motion Controller utilizza numeri in virgola mobile per le posizioni assolute dell'asse. È caratteristica dei numeri in virgola mobile che la risoluzione (in termini assoluti) diminuisca più i numeri sono lontani da zero. La posizione di un azionamento, d'altra parte, è rappresentata da numeri reali (incrementi encoder) in modo che la risoluzione sia sempre la stessa, a prescindere dalla distanza del numero da zero. Nel tempo, ciò porta a una ridotta precisione del controllo e infine a un arresto dell'asse a seguito di un errore rilevato anche se la risoluzione in virgola mobile è ancora sufficiente.

Warning_Color.gifAVVERTIMENTO

FUNZIONAMENTO ANOMALO DELL'APPARECCHIO

oUtilizzare il modulo di tipo asse per un asse che si sposta solo in una direzione e aumenta continuamente la propria posizione, ad esempio l'asse di un trasportatore.

oUtilizzare il tipo di asse lineare/finito solo per gli assi con intervalli di movimento fisicamente limitati, ad esempio, per mezzo di finecorsa.

Il mancato rispetto di queste istruzioni può provocare morte, gravi infortuni o danni alle apparecchiature.