Einachsbewegungen unterbrechen
Unterbrechung während der Bremsphase
Einachsbewegungen, wie zum Beispiel MC_MoveAbsolute, können jederzeit durch andere Bewegungen unterbrochen werden. Dies kann eine Bewegung zu einer anderen Position oder eine Änderung der Geschwindigkeit oder Beschleunigung sein. Grundsätzlich wird die Unterbrechung der Bewegung durch eine andere so umgesetzt, dass kein Sprung in der Geschwindigkeit stattfindet. Bei allen Rampentypen außer trapezoid findet außerdem auch kein Sprung in der Beschleunigung statt. Bei Verwendung der Rampentypen sin² und quadratisch (geglättet) kann es bei Unterbrechung zu einer Umkehr kommen, die auf den ersten Blick nicht notwendig scheint (siehe Erklärung). Die neue Zielposition wird dann überfahren werden, obwohl sie nicht vor der alten Zielposition liegt. Dies kann in folgenden Situationen auftreten:
Wenn für die abbrechende Bewegung ein kleinerer Maximalwert für die Bremsung gesetzt wird, als vorher. In diesem Fall wird der zur Verfügung stehende Bremsweg zur neuen Zielposition unter Umständen zu kurz (bei allen Rampentypen)
Entsprechend auch bei den Rampentypen quadratisch und quadratisch (geglättet), wenn ein kleinerer Maximalwert für den Ruck gesetzt wird.
Falls diese Maximalwerte aber gleich bleiben (oder größer gewählt werden), dann gelten folgende Regeln:
Bei Rampentyp trapezoid und quadratisch kommt es nie zu einem Überfahren.
Beim Rampentyp sin² kommt es nicht zu einem Überfahren, wenn die neue Zielposition sowie die Grenzwerte für Bremsung und Beschleunigung gleich den alten sind.
In allen anderen Fällen kann es mit Rampentyp sin² und quadratisch (geglättet) zu einem Überfahren kommen.
Siehe auch
Erklärungen zum Überfahren der Zielposition (Rampentyp sin²)
Beim Start einer Einachsbewegung wird anfangs das Bewegungsprofil errechnet, d.h. die Phasen, in welchen beschleunigt, mit konstanter Geschwindigkeit gefahren oder gebremst wird. Im Falle des Rampentyps sin² wird über die Beschleunigungs-/Bremsphasen eine sin²-Kurve gelegt. Die sin²-Kurve hat die Eigenschaft, dass die Beschleunigung am Anfang und am Ende null ist und somit ein stetiger Übergang zu anderen Phasen erreicht wird.
Ein spezielles Verhalten ergibt sich, wenn eine Bewegung während einer sin²-Kurve unterbrochen wird. Ist die aktuelle Beschleunigung ungleich null, dann kann keine sin²-Kurve gestartet werden, da es erforderlich ist, mit Beschleunigung 0 zu starten.
Da das sin²-Kurvenprofil dem Anwender einen stetigen Beschleunigungsverlauf garantiert, rampt der Trajektoriengenerator deshalb zunächst die Beschleunigung auf den Wert 0 herunter. Dazu verwendet er den Jerk-Eingang des Bausteins und, falls dieser 0 ist, den in der Steuerungskonfiguration eingestellten Jerk-Wert (fRampJerk ).
Folgende Aufzeichnung zeigt das Unterbrechungsverhalten: Von oben nach unten sind die Signale von Position, Geschwindigkeit, Beschleunigung und von Execute des unterbrechenden Bausteins dargestellt. Beginnend mit der steigenden Flanke von Execute wird die Beschleunigung linear auf 0 reduziert, bevor ein neues sin²-Profil angeschlossen wird (Phase zwischen den vertikalen Markierungsstrichen).
Info
Ist der Jerk-Wert im Verhältnis zur Beschleunigung zu klein gewählt, kann diese Phase sehr lang werden und der Baustein führt eine scheinbar unkontrollierte Fahrt aus. Man sollte den Jerk-Wert so wählen, dass das Abrampen der Beschleunigung nur wenige Millisekunden dauert, z.B. Maximalbeschleunigung 10.000 u/s2, Ruck 1.000.000 u/s3, dadurch dauert diese Phase höchstens 10ms.
Eine Bewegung von Position 0 auf Position 1 wurde gestartet mit gewissen Geschwindigkeits- (1 u/s) und Beschleunigungswerten (10 u/s2). Kurz vor Erreichen der Zielposition, wenn die Bremsung bereits eingeleitet ist, unterbricht ein neuer Bewegungsbefehl mit einer neuen Zielposition von 1.01. Durch die Beschleunigungsabrampphase direkt nach dem Start der zweiten Bewegung legt die Achse eine Strecke zurück, die bewirkt, dass die Achse über das Ziel hinausfährt und zurückbewegt werden muss.