Pausieren und Fortsetzen von Bewegungen
Mit Hilfe der Bausteine MC_GroupInterrupt und MC_GroupContinue ist es möglich, die Ausführung der kommandierten 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 Achsgruppe gejoggt wird.
Später kann der Anwender dann mit MC_GroupContinue die unterbrochene Ausführung wieder aufnehmen. Dazu übergibt er die gespeicherten 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 Bewegung die relativ zu einem dynamischen Koordinatensystem kommandiert 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.