Pausieren und Fortsetzen von Bewegungen

 

Mit Hilfe der Bausteine MC_GroupInterrupt und MC_GroupContinue ist es möglich, die Ausführung der kommand­ierten Bewegungen zu pausieren und später fortzusetzen.

Durch Ausführung von MC_GroupInterrupt wird zunächst, ähnlich wie bei einem MC_GroupHalt, ein bahntreuer Halt ausgeführt. Dann wird der Zustand der Achsgruppe in einer vom Anwender übergebenen Variable (vom Typ SMC_AXIS_GROUP_CONTINUE_DATA) gespeichert. Jetzt ist die Achsgruppe im Zustand GroupStandby und kann ganz normal verwendet werden. Typisch wäre zum Beispiel, dass die Achs­gruppe gejoggt wird.

Später kann der Anwender dann mit MC_GroupContinue die unterbro­chene Ausführung wieder aufnehmen. Dazu übergibt er die gespe­icherten Daten (vom Typ SMC_AXIS_GROUP_CONTINUE_DATA). Damit dies ohne Fehler funktioniert, muss die Position der Achsgruppe mit der Position übereinstimmen, die sie nach Ausführung von MC_GroupInterrupt hatte. (Siehe SMC_GroupGetContinuePosition.)

Wenn eine Tracking-Bewegung unterbrochen wurde, also eine Bewe­gung die relativ zu einem dynamischen Koordinatensystem kommand­iert wurde, dann hält MC_GroupInterrupt anders als MC_GroupHalt nicht absolut an, sondern relativ zum dynamischen Koordinatensystem. Wird zum Beispiel ein Werkstück auf einem Rundtisch getrackt, dann hält MC_GroupInterrupt bahntreu bezüglich des Werkstücks an. Die Achsgruppe folgt dem Werkstück weiter. Vor dem Fortsetzen mit MC_GroupContinue muss dann auch dieselbe Position bezüglich des Werkstücks wieder erreicht sein.

Einschränkung: derzeit wird die Unterbrechung einer PTP Tracking-Bewegung (also MC_MoveDirectAbsolute oder MC_MoveDirectRelative) noch nicht unterstützt.

Hinweis

Die Variable vom Typ SMC_AXIS_GROUP_CONTINUE_DATA darf nicht persistent gespeichert werden.