Synchronisation mit einem beweglichen Koordinatensystem
Die integrierte Tracking-Funktion ermöglicht die Programmierung von Bewegungen relativ zu einem beweglichen Koordinatensystem. Ein typischer Anwendungsfall ist das Aufnehmen eines Produkts von einem Förderband und das Ablegen auf ein anderes Förderband. Nach der Definition eines dynamischen Koordinatensystems für jedes Band können Sie einfach Zielpositionen für Bewegungen in diesem Koordinatensystem angeben. CODESYS SoftMotion kümmert sich um die Überlagerung der kommandierten Bewegung der Achsgruppe und der Bewegung des Bandes.
Eine typische Tracking-Bewegung besteht aus drei Phasen:
Eintracken: Bewegen von einem anderen Koordinatensystem in das dynamische Koordinatensystem. Nach Erreichen der Zielposition folgt die Achsgruppe der Bewegung des dynamischen Koordinatensystems
Tracking-Bewegung: Bewegung zu einer anderen Position innerhalb desselben dynamischen Koordinatensystems. Die kommandierte Bewegung und die Bewegung des dynamischen Koordinatensystems werden überlagert.
Austracken: Bewegung vom dynamischen Koordinatensystem zu einem anderen Koordinatensystem. Nach Erreichen der Zielposition wird die Bewegung der Achsgruppe nicht mehr durch die Bewegung des dynamischen Koordinatensystems beeinflusst.
Definition eines dynamischen Koordinatensystems
Der erste Schritt bei der Implementierung einer dynamischen Tracking-Anwendung ist die Definition eines dynamischen Koordinatensystems. CODESYS SoftMotion bietet vier Funktionsbausteine zur Definition dynamischer Koordinatensysteme:
MC_TrackConveyorBelt
: Ein einfach zu verwendender Funktionsbaustein für den häufigen Anwendungsfall des Trackings eines Förderbandes. Eine Referenz auf das eigentliche Band wird über den EingangConveyorBelt
bereitgestellt, der eine SoftMotion-Achse vom TypAXIS_REF_SM3
erwartet.MC_TrackRotaryTable
: Ein einfach zu verwendender Funktionsbaustein für den häufigen Anwendungsfall des Trackings eines Drehtisches. Die Referenz auf den eigentlichen Drehtisch wird über den EingangRotaryTable
bereitgestellt, der eine SoftMotion-Achse vom TypAXIS_REF_SM3
erwartet.MC_SetDynCoordTransform
: Der Funktionsbaustein funktioniert ähnlich wieMC_TrackConveyorBelt
undMC_TrackRotaryTable
, wird jedoch nicht von einer einzelnen Achse, sondern von einer ganzen Achsgruppe gesteuert. Dies ermöglicht die Implementierung eines dynamischen Koordinatensystems mit bis zu sechs Freiheitsgraden.SMC_SetDynCoordTransformEx
: Der Funktionsbaustein ermöglicht die Implementierung eines vollständig benutzerdefinierten dynamischen Koordinatensystems.
Jeder der vier Funktionsbausteine hat einen Eingang CoordSystem
, der es im Wesentlichen ermöglicht, dem Koordinatensystem einen Namen zu geben, entweder PCS_1
oder PCS_2
. Wenn eine Bewegung kommandiert wird, wird das Koordinatensystem durch diesen Namen referenziert.
Kommandieren einer Bewegung zu einer Position in einem dynamischen Koordinatensystem
Nachdem ein dynamisches Koordinatensystem definiert wurde, ist es einfach, eine Bewegung zu einer Position in diesem Koordinatensystem zu kommandieren. Jeder Bewegungsfunktionsbaustein, beispielsweise MC_MoveLinearAbsolute
, hat einen Eingang CoordSystem
. Dieser Eingang muss auf den Namen (PCS_1
oder PCS_2
) des dynamischen Koordinatensystems gesetzt werden. Der Eingang Position
kann dann auf die gewünschte Position bezogen auf den Ursprung des dynamischen Koordinatensystems gesetzt werden. Die Ausführung des Bewegungsfunktionsbausteins führt zu einer Bewegung zu der Position innerhalb des beweglichen Koordinatensystems. Sobald die Zielposition erreicht ist, folgt die Achsgruppe dem dynamischen Koordinatensystem und bleibt dabei an dieser relativen Position.
Der "InUse"-Ausgang von Funktionsbausteinen für dynamische Koordinatensysteme
Jeder Funktionsbaustein für dynamische Koordinatensysteme (MC_TrackConveyorBelt
, MC_TrackRotaryTable
, MC_SetDynCoordTransform
und SMC_SetDynCoordTransformEx
) hat einen Ausgang InUse
. Ein Neustart eines Funktionsbausteins, während das Koordinatensystem noch in Verwendung ist, ist nicht zulässig und führt zu dem Fehler SMC_AXIS_GROUP_PCS_STILL_IN_USE
. Ein dynamisches Koordinatensystem wird in Verwendung genommen, sobald eine Bewegung zu einer Position im Koordinatensystem kommandiert wird. Das Koordinatensystem bleibt so lange in Verwendung, bis eine Zielposition in einem anderen Koordinatensystem erreicht wird.
Achsgrenzen für Tracking-Bewegungen
Die Achsgrenzen für Geschwindigkeit, Beschleunigung, Verzögerung und Ruck müssen so eingestellt werden, dass sie die Bewegung des Koordinatensystems als auch die kommandierte Bewegung relativ zum Koordinatensystem berücksichtigen. Wenn eine hohe Achsendynamik erforderlich ist, um dem Koordinatensystem zu folgen, ist die Bewegung relativ zum Koordinatensystem möglicherweise nur langsam oder gar nicht möglich. Befindet sich die Achsgruppe in der Nähe einer Singularität der Kinematik, kann dies sogar bei einem relativ langsam bewegten Koordinatensystem der Fall sein.
Für weitere Informationen siehe: Registerkarte: Allgemein
Bahndynamik von CP-Bewegungen während des Trackings
Der Bahndynamik von CP-Bewegungen muss besondere Aufmerksamkeit gewidmet werden. Dies betrifft die Eingänge Velocity
, Acceleration
, Deceleration
, und Jerk
von MC_MoveLinearAbsolute
, MC_MoveLinearRelative
, MC_MoveCircularAbsolute
und MC_MoveCircularRelative
. Befinden sich Start- und Zielposition im selben dynamischen Koordinatensystem, so ist die Bahndynamik relativ zu diesem Koordinatensystem. Befinden sich Start- und Zielposition jedoch in unterschiedlichen Koordinatensystemen, so wird die Bahndynamik von der Dynamik relativ zum ersten Koordinatensystem in die Dynamik relativ zum zweiten Koordinatensystem überführt. Es ist wichtig, dass die Bahndynamik höher eingestellt wird als der absolute Wert der Differenz der Dynamik zwischen den beiden Koordinatensystemen. Insbesondere beim Übergang von einem statischen zu einem dynamischen Koordinatensystem sollte die Bahndynamik höher angesetzt werden als der Absolutwert der Dynamik des Koordinatensystems.
Wichtig
Die Bahngeschwindigkeit kann nicht mit SMC_GroupReadPathDynamics
überwacht werden, wenn zwischen Koordinatensystemen gewechselt wird (Eintracken, Austracken oder Bewegung zwischen verschiedenen dynamischen Koordinatensystemen).
SMC_GroupReadPathDynamics
berechnet die Bahndynamik relativ zu einem angegebenen Koordinatensystem. Im Falle des Eintrackens oder Austrackens oder der Bewegung zwischen dynamischen Koordinatensystemen handelt es sich um eine Bewegung, die von zwei Koordinatensystemen abhängt (Start- und Zielkoordinatensystem sind unterschiedlich). Daher ist der Funktionsbaustein SMC_GroupReadPathDynamics
nicht geeignet, um die Bahndynamik für diese Fälle zu berechnen.
Vermeiden der Fehler SMC_AXIS_GROUP_MAX_AXIS_LAG_EXCEEDED, SMC_AXIS_GROUP_MAX_POSITION_LAG_EXCEEDED oder SMC_AXIS_GROUP_MAX_ORIENTATION_LAG_EXCEEDED
Die Fehler SMC_AXIS_GROUP_MAX_AXIS_LAG_EXCEEDED
, SMC_AXIS_GROUP_MAX_POSITION_LAG_EXCEEDED
oder SMC_AXIS_GROUP_MAX_ORIENTATION_LAG_EXCEEDED
werden gemeldet gemeldet, wenn es nicht möglich ist, dem kommandierten Weg zu folgen, ohne die konfigurierten Achsgrenzen oder die Bahndynamik zu verletzen. Wenn dieser Fehler auftritt, sollte zunächst geprüft werden, ob die Achsgrenzen und die Bahndynamik gemäß den beiden vorangegangenen Abschnitten konfiguriert sind. Die Bahnabweichung kann mit den Ausgängen PositionLag
und OrientationLag
des Funktionsbausteins MC_GroupReadStatus
überwacht werden.
Mögliche Lösungen sind:
Erhöhung der Achsgrenzen
Erhöhung der Bahndynamik von CP-Bewegungen beim Tracking eines Koordinatensystem
Reduzierung der Dynamik des Koordinatensystems
Vermeidung von Bewegungen in der Nähe einer Singularität der Kinematik, beispielsweise durch Neupositionierung des Roboters
Wenn das dynamische Koordinatensystem durch den Ausgang eines verrauschten Encoders gesteuert wird, kann es hilfreich sein, das Encodersignal mit einer logischen Achse zu filtern. Für weitere Informationen siehe: Registerkarte: Logische Achsen.
Eine akzeptable Toleranz für die Positions- und Orientierungsabweichung kann mit dem Funktionsbaustein SMC_GroupSetPathTolerance
konfiguriert werden.