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 collaudato viene utilizzato anche 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 blocco funzione successivo.

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, si verificano uno o più cicli di ritardo in cui nessun blocco funzione è attivo e l'asse rimane fermo finché il successivo ciclo del task dell'applicazione avvia il blocco funzione successivo.

Axis_Ref

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

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

  • Asse di azionamento

    Un asse di azionamento fornito, ad esempio, dall'azionamento LXM32S o dall'oggetto dispositivo Azionamento Sercos generico. È possibile accedervi, ad esempio, tramite DRV_X.Axis. Un asse di azionamento può essere utilizzato come asse master o asse subordinato 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 finale 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 subordinato può ancora seguire un asse master anche quando quest'ultimo non è controllato correntemente da Modicon M262 Motion Controller.

  • Asse virtuale

    Un asse virtuale rappresenta, ad esempio, un albero di macchina virtuale o qualsiasi altro asse intermedio per relazioni complesse tra assi master e assi subordinati. È 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 subordinato per qualsiasi blocco funzione con l'ingresso corrispondente.

    Il Modicon M262 Motion Controller non limita il numero di assi virtuali. Tenere tuttavia presente che un asse virtuale ha un impatto sulle prestazioni del Modicon M262 Motion Controller paragonabile a quello di asse di azionamento.

  • Asse ingresso encoder

    Un asse di ingresso encoder è fornito dall'ingresso encoder integrato del Modicon M262 Motion Controller. È possibile utilizzare un asse ingresso encoder solo come asse master, non come asse subordinato. I valori di feedback forniti dall'encoder sono utilizzati come posizione dell'asse master.

Quando un asse master diventa indisponibile (ad esempio, l'encoder è scollegato o non è operativo), qualsiasi asse subordinato che segue questo master passa allo stato operativo PLCopen ErrorStop. Se si desidera che in tale situazione gli assi subordinati 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 asse

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

  • asse modulo

  • asse 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 si trovano sullo stesso lato del salto modulo. Perciò, ad esempio, nel caso di un asse che si sposta in avanti con modulo 360, la posizione 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 (con Relative = FALSE) è stato eseguito correttamente o se il flag isHomed è stato impostato a TRUE dall'applicazione del controller.

 AVVERTIMENTO
FUNZIONAMENTO ANOMALO DELL'APPARECCHIATURA
  • Verificare che l'asse sia stato riportato alla posizione iniziale correttamente dopo ogni spegnimento/accensione e dopo ogni intervento manuale prima di eseguire altri movimenti.
  • Verificare che l'asse sia stato riportato correttamente alla posizione iniziale prima di eseguire qualsiasi tipo di movimento assoluto.
  • Non impostare il flag isHomed a TRUE nell'applicazione del controller a meno che non sia stato assolutamente verificato e confermato con mezzi idonei che la posizione assoluta ripristinata è corretta.
  • Leggere 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 interi (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.

 AVVERTIMENTO
FUNZIONAMENTO ANOMALO DELL'APPARECCHIATURA
  • Utilizzare 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.
  • Utilizzare 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.