Skip to main content

Sincronizzazione con un sistema di coordinate in movimento

La funzione di tracciamento integrata consente la programmazione di movimenti relativi a un sistema di coordinate in movimento. Un tipico caso d'uso è prelevare un prodotto da un nastro trasportatore e posizionarlo su un altro nastro trasportatore. Dopo aver definito un sistema di coordinate dinamico per ciascun nastro, l'utente può semplicemente fornire le posizioni target per i movimenti relativi a questi sistemi di coordinate. CODESYS SoftMotion si occupa di sovrapporre il movimento comandato del gruppo assi e il movimento del nastro.

Un tipico movimento di tracciamento è costituito da tre fasi:

  • Tracking in: spostamento da un altro sistema di coordinate al sistema di coordinate dinamico. Dopo che la posizione di destinazione è stata raggiunta, il gruppo di assi seguirà il movimento del sistema di coordinate dinamico.

  • Movimento di tracciamento: spostamento in una posizione diversa all'interno dello stesso sistema di coordinate dinamico. Il movimento comandato e il movimento del sistema di coordinate dinamico saranno sovrapposti.

  • Tracking out: passaggio dal sistema di coordinate dinamico a un sistema di coordinate diverso. Una volta raggiunta la posizione di destinazione, il movimento del gruppo di assi non sarà più influenzato dal movimento del sistema di coordinate dinamico.

Definizione di un sistema di coordinate dinamico

Il primo passaggio dell'implementazione di un'applicazione di tracciamento dinamico è la definizione di un sistema di coordinate dinamico. CODESYS SoftMotion fornisce quattro blocchi funzione per la definizione di sistemi di coordinate dinamici:

  • MC_TrackConveyorBelt: un blocco funzione di facile utilizzo per il caso d'uso comune di tracciamento di un nastro trasportatore. Un riferimento alla cintura effettiva viene fornito tramite il ConveyorBelt input, che prevede un asse SoftMotion di tipo AXIS_REF_SM3.

  • MC_TrackRotaryTable: un blocco funzione di facile utilizzo per il caso d'uso comune di tracciamento di una tavola rotante. Un riferimento alla tavola rotante effettiva viene fornito tramite il RotaryTable input, che prevede un asse SoftMotion di tipo AXIS_REF_SM3.

  • MC_SetDynCoordTransform: Il blocco funzione funziona in modo simile a MC_TrackConveyorBelt e MC_TrackRotaryTable, ma, invece di essere controllato da un singolo asse, è controllato da un intero gruppo di assi. Ciò consente di implementare un sistema di coordinate dinamico con un massimo di sei gradi di libertà.

  • SMC_SetDynCoordTransformEx: Il blocco funzione consente di implementare un sistema di coordinate dinamico completamente personalizzato.

Ciascuno dei quattro blocchi funzione ha un CoordSystem input che essenzialmente consente di dare un nome al sistema di coordinate PCS_1 o PCS_2. Quando si comanda un movimento, il sistema di coordinate viene indicato con questo nome.

Comando di un movimento verso una posizione in un sistema di coordinate dinamico

Dopo aver definito un sistema di coordinate dinamico, è facile comandare un movimento verso una posizione in questo sistema di coordinate. Ogni blocco funzione di movimento, ad esempio MC_MoveLinearAbsolute, ha un CoordSystem ingresso. Questo input deve essere impostato sul nome (PCS_1 o PCS_2) dato al sistema di coordinate dinamico. Il Position l'input può quindi essere impostato sulla posizione desiderata rispetto all'origine del sistema di coordinate dinamico. L'esecuzione del blocco funzione movimento porterà a un movimento verso la posizione all'interno del sistema di coordinate in movimento. Una volta raggiunta la posizione di destinazione, il gruppo di assi seguirà il sistema di coordinate dinamico rimanendo in questa posizione relativa.

L'uscita "InUse" dei blocchi funzione del sistema di coordinate dinamico

Ciascun blocco funzione del sistema di coordinate dinamico (MC_TrackConveyorBelt, MC_TrackRotaryTable, MC_SetDynCoordTransform, e SMC_SetDynCoordTransformEx) ha un InUse produzione. Il riavvio di un blocco funzione mentre il sistema di coordinate è ancora in uso non è consentito e provocherà l'errore SMC_AXIS_GROUP_PCS_STILL_IN_USE. Un sistema di coordinate dinamico entrerà in uso non appena viene comandato un movimento verso una posizione nel sistema di coordinate. Rimarrà in uso fino al raggiungimento di una posizione target in un diverso sistema di coordinate.

Limiti dell'asse per i movimenti di tracciamento

I limiti dell'asse devono tenere conto sia del movimento del sistema di coordinate sia del movimento comandato relativo al sistema di coordinate. Se è richiesta un'elevata dinamica dell'asse per seguire il sistema di coordinate, il movimento relativo al sistema di coordinate potrebbe essere lento o non essere affatto possibile. Se il gruppo di assi è vicino a una singolarità della cinematica, ciò può accadere anche con un sistema di coordinate in movimento relativamente lento.

Per ulteriori informazioni, vedere: Scheda: Generale

Dinamica del percorso dei movimenti CP durante il tracciamento

Una considerazione speciale deve essere data alle dinamiche del percorso dei movimenti CP. Ciò include il Velocity, Acceleration, Deceleration, E Jerk ingressi di MC_MoveLinearAbsolute, MC_MoveLinearRelative, MC_MoveCircularAbsolute, E MC_MoveCircularRelative. Se la posizione iniziale e quella di destinazione si trovano nello stesso sistema di coordinate dinamiche, la dinamica del percorso sarà relativa a questo sistema di coordinate. Tuttavia, se la posizione iniziale e finale si trovano in sistemi di coordinate diversi, le dinamiche del percorso vengono combinate dalla dinamica relativa al primo sistema di coordinate alla dinamica relativa al secondo sistema di coordinate. È importante che la dinamica del percorso sia impostata su un valore superiore al valore assoluto della differenza di dinamica tra i due sistemi di coordinate. In particolare, quando si passa da un sistema di coordinate statico a uno dinamico, la dinamica del percorso dovrebbe essere impostata su un valore superiore al valore assoluto della dinamica del sistema di coordinate.

Importante

La velocità vettoriale non può essere monitorata con SMC_GroupReadPathDynamics quando ci si sposta tra sistemi di coordinate (tracking in, out o tra diversi sistemi di coordinate dinamici).

SMC_GroupReadPathDynamics calcola la dinamica del percorso rispetto a un sistema di coordinate specificato. Nel caso di tracciamento in entrata o in uscita o spostamento tra sistemi di coordinate dinamici, si tratta di un movimento che dipende da due sistemi di coordinate (i sistemi di coordinate di partenza e di destinazione differiscono). Di conseguenza, il SMC_GroupReadPathDynamics il blocco funzione non è adatto per calcolare la dinamica del percorso per questi casi.

Evitare gli errori SMC_AXIS_GROUP_MAX_AXIS_LAG_EXCEEDED, SMC_AXIS_GROUP_MAX_POSITION_LAG_EXCEEDED o SMC_AXIS_GROUP_MAX_ORIENTATION_LAG_EXCEEDED.

Gli errori SMC_AXIS_GROUP_MAX_AXIS_LAG_EXCEEDED, SMC_AXIS_GROUP_MAX_POSITION_LAG_EXCEEDED, O SMC_AXIS_GROUP_MAX_ORIENTATION_LAG_EXCEEDED vengono segnalati se non è possibile seguire il percorso comandato senza violare i limiti dell'asse configurati o la dinamica del percorso. Se si verifica questo errore, è necessario verificare innanzitutto se i limiti dell'asse e la dinamica del percorso sono configurati secondo le due sezioni precedenti. La deviazione del percorso può essere monitorata con le uscite PositionLag E OrientationLag del MC_GroupReadStatus blocco funzione.

Le possibili soluzioni sono le seguenti:

  • Aumentare i limiti dell'asse.

  • Aumenta la dinamica del percorso dei movimenti CP durante il tracciamento in un sistema di coordinate dinamico.

  • Ridurre la dinamica del sistema di coordinate.

  • Evitare movimenti vicini a una singolarità della cinematica, ad esempio riposizionando il robot.

Se il sistema di coordinate dinamico è controllato dall'uscita di un encoder rumoroso, potrebbe essere utile filtrare il segnale dell'encoder utilizzando un asse logico. Per ulteriori informazioni, vedere Scheda: Assi logici.

È possibile configurare una tolleranza accettabile per il ritardo di posizione e orientamento utilizzando il SMC_GroupSetPathTolerance blocco funzione.