Skip to main content

Interruzione e continuazione dei movimenti

Mentre un gruppo di assi è in movimento, il movimento può essere interrotto. Questo può essere un arresto intenzionale (MC_GroupHalt, MC_GroupStop), o una pausa sul percorso (MC_GroupInterrupt), o un arresto a causa di un errore. In tutti i casi, CODESYS SoftMotion fornisce blocchi funzione per riportare il gruppo di assi sul percorso pianificato e continuarlo.

Fermare un movimento mettendo in pausa

Con l'aiuto dei blocchi funzione MC_GroupInterrupt e MC_GroupInterruptAt puoi mettere in pausa l'esecuzione dei movimenti comandati. Così facendo, MC_GroupInterrupt uno stop istantaneo MC_GroupInterruptAt una sosta in una determinata posizione. Il movimento può quindi più tardi con Gruppo_MCContinua continua.

Il blocco funzione MC_GroupInterruptAt fornisce l'input SMC_GroupInterruptPositionMvtRel. Specifica una posizione di interruzione relativa a un movimento. Il movimento è referenziato dal suo SMC_Movement_Id. La posizione all'interno del movimento è definita da un valore (reale) compreso tra 0 e 1, dove 0 è l'inizio del movimento e 1 è la fine. Una posizione tra i punti B e A viene interpretata esattamente come se non ci fosse fusione. Una posizione tra Pcominciare e B o tra A e Pdestinazione è proiettato sul percorso di fusione.

_sm_img_movement_interrupt_position.png
. Gestione degli errori per MC_GroupInterruptAt
  • Quando l'ID movimento specificato è sconosciuto, il blocco funzione restituisce un errore. Il movimento in corso non viene interrotto.

  • Se lo stato dinamico attuale del gruppo di assi non consente di raggiungere l'arresto prima della posizione di interruzione specificata, allora SMC_GroupInterruptAt si comporta esattamente come MC_GroupInterrupt: l'interruzione viene eseguita immediatamente e il gruppo di assi raggiunge l'arresto da qualche parte dietro la posizione di interruzione comandata.

  • Tutti gli altri errori vengono gestiti esattamente come per MC_GroupInterrupt

. Restrizioni su MC_GroupInterruptAt
  • Un'interruzione in una posizione specifica può essere interrotta con un altro movimento finché il processo di arresto nella posizione di interruzione non è ancora iniziato.

  • È possibile comandare un solo interrupt alla volta in una posizione specifica. Se è stato comandato un interrupt, allora deve essere completato o interrotto in modo che un altro interrupt possa essere accettato.

Quando esegui MC_GroupInterrupt o MC_GroupInterruptAt, dapprima viene eseguito un arresto invariante di percorso, simile a un MC_GroupHalt. Quindi lo stato del gruppo di assi ("continua dati") viene memorizzato in una variabile trasferita dall'utente (tipo SMC_AXIS_GROUP_CONTINUE_DATA). Ora il gruppo di assi è nello stato GroupStandby e può essere utilizzato normalmente. Un tipico esempio potrebbe essere che il gruppo di assi sia in jog.

Puoi venire con me più tardi MC_GroupContinue riprendere l'esecuzione interrotta. A tal fine, trasferire i "Dati continuativi" salvati. Affinché ciò funzioni senza errori, la posizione del gruppo di assi deve corrispondere alla posizione che avrà dopo l'esecuzione MC_GroupInterrupt aveva. (Per favore, riferisci SMC_GroupGetContinuePosition.)

Quando un movimento di tracciamento è stato interrotto (ovvero un movimento che è stato comandato rispetto a un sistema di coordinate dinamico), MC_GroupInterrupt non si ferma assolutamente (come MC_GroupHalt), ma relativamente al sistema di coordinate dinamiche. Ad esempio, se un pezzo viene tracciato su una tavola rotante, MC_GroupInterrupt si ferma rispetto al pezzo. Il gruppo di assi continua a seguire il pezzo. I dati continue devono essere aggiornati SMC_GroupUpdateContinueData se la cinematica ha assi rotanti a più periodi. Successivamente, il movimento può essere continuato con MC_GroupContinue.

Importante

La variabile di tipo SMC_AXIS_GROUP_CONTINUE_DATA non devono essere memorizzati in modo permanente o modificati durante una modifica online.

Suggerimento

Utilizzo del blocco funzione SMC_GroupWait, è possibile attendere sul percorso tra due movimenti per un tempo programmabile.

Arresto del movimento da MC_GroupHalt o MC_GroupStop

Dopo un arresto del movimento attivato da MC_GroupHalt o MC_GroupStop, il movimento del gruppo di assi può essere ripreso come segue senza perdita di informazioni: Richiamare il blocco funzione SMC_GroupSaveContinueData prima di chiamare MC_GroupHalt o MC_GroupStop. Questa POU salva lo stato corrente, la posizione corrente e tutti i movimenti comandati nel momento in cui è stato chiamato il comando di arresto o arresto. Ciò consente di continuare il movimento in seguito esattamente da questa posizione. Nota: questa NON è la posizione che il gruppo di assi aveva dopo aver raggiunto la posizione di arresto.

Comportamento prima della versione 4.12.0.0: The SMC_GroupSaveContinueData il blocco funzione deve essere chiamato nello stesso ciclo in cui MC_GroupHalt o MC_GroupStop è chiamato. In questo momento, devi assicurarti che SMC_GroupSaveContinueData viene chiamato prima MC_GroupHalt o MC_GroupStop. In caso contrario, i movimenti interrotti verranno rimossi dalla coda.

Comportamento dalla versione 4.12.0.0: The SMC_GroupSaveContinueData il blocco funzione può essere richiamato in qualsiasi momento fino al primo movimento successivo al richiamo MC_GroupHalt o MC_GroupStop. La posizione di proseguimento è la posizione attuale del gruppo di assi al momento del primo richiamo del blocco funzionale. Il percorso salvato è costituito da tutti i movimenti che sono stati accettati prima del comando di arresto/arresto.

Per poter continuare il percorso nella posizione in cui il gruppo di assi si è fermato a causa di MC_GroupHalt o MC_GroupStop, SMC_GroupSaveContinueData dovrebbe essere chiamato nel ciclo in cui MC_GroupHalt o MC_GroupStop imposta il Done segnale.

Solo un'istanza di SMC_GroupSaveContinueData può essere chiamato per gruppo di assi.

Suggerimento

Il salvataggio dello stato corrente prima del comando di arresto/stop può richiedere diversi cicli, ma è garantito che le informazioni di stato nel primo ciclo verranno salvate prima di eventuali movimenti interrotti.

Suggerimento

SMC_GroupSaveContinueData può essere chiamato in qualsiasi momento per salvare lo stato corrente, non solo in connessione con la chiamata MC_GroupHalt o MC_GroupStop.

Arresto di un movimento a causa di un errore

Se un movimento viene interrotto a causa di un errore, i singoli assi di un gruppo di assi vengono arrestati singolarmente e commutati nello stato di errore. Nel processo, il TCP lascia il percorso pianificato. Ora è possibile confermare l'errore, ripristinare il gruppo di assi e spostarsi nella posizione in cui è stato rilevato l'errore. Successivamente, è possibile indicare al gruppo di assi di continuare i movimenti pianificati in precedenza.

Con il blocco funzione SMC_GroupEnableResumeAfterError attivare la funzione per riprendere i movimenti programmati dopo un errore. Il blocco deve essere richiamato ciclicamente nel task del ciclo bus. È possibile richiamare solo un'istanza di questo blocco funzione per ogni gruppo di assi.

Se il gruppo di assi rileva un errore e passa allo stato Errorstop, quindi salva i movimenti già accettati e le informazioni di stato necessarie in una variabile di tipo SMC_AXIS_GROUP_CONTINUE_DATA. Quindi questa variabile contiene i "dati continui" e viene passata come input di SMC_GroupEnableResumeAfterError.

Quindi puoi usare i movimenti Gruppo_MCContinua riprendere più tardi. Se gli errori sono causati dai movimenti comandati (esempio: violazioni dell'area di lavoro o raggio dell'arco non valido), non possono essere eliminati in questo modo. Questi errori si ripresenteranno dopo la ripresa del movimento. Il meccanismo è più destinato agli errori di un singolo asse e ad altri eventi esterni che forzano il gruppo di assi all'arresto per errore.

MC_GroupContinue richiede che il gruppo di assi si trovi in una posizione specifica quando il movimento continua. In caso di ripristino dell'errore, questa posizione è la posizione corrente nel momento in cui è stato rilevato l'errore. È possibile utilizzare questa posizione con il modulo funzione SMC_GroupGetContinuePosition Interrogare.

Importante

  • Se un errore del gruppo di assi non consente la continuazione del movimento (come un errore interno durante la scrittura dei dati di continuazione), allora MC_GroupContinue e SMC_GroupGetContinuePosition restituisce il nuovo ID di errore SMC_AXIS_GROUP_CONTINUE_DATA_NOT_WRITTEN.

  • Quando un MC_GroupStop è attivo quando si verifica l'errore, quindi il MC_GroupStop di nuovo attivo anche dopo la ripresa. Il gruppo assale si è già fermato e il MC_GroupStop ha cancellato tutti i movimenti in sospeso, quindi non ha luogo alcun movimento.

  • Quando si verifica un errore del gruppo di assi, l'istanza del blocco funzione del movimento attivo emette l'errore (uscite Active e Busy passa a FALSEe uscita Error passa a TRUE). Anche le istanze dei blocchi funzione di movimenti bufferizzati o combinati, che non sono ancora attivi, generano un errore. Dopo il riavvio, tutte queste istanze di blocchi funzione vengono reimpostate su Busy/Active e le loro uscite si resettano a Error/CommandAborted.