Dynamics
Das Interface IPlcDynamicConstraint wird von vielen Verfahrbefehlen als optionaler Input akzeptiert, um die erlaubten Werte für Geschwindigkeit, Beschleunigung, Verzögerung oder Ruck während der Fahrt zu beschränken. Es gibt verschiedene Typen von Beschränkungen, häufig werden auch Kombinationen verschiedener Typen akzeptiert, welche in einem DynamicConstraint_Container zusammengefasst werden:
- Beschränkungen einzelner Koordinaten
- Beschränkungen in Fahrtrichtung
- Beschränkungen symmetrisch in alle Richtungen
Wenn mehrere Beschränkungen gleichzeitig wirken, werden alle eingehalten. Für den Nutzer besteht daher keine Notwendigkeit, selbst zu berechnen, welche Beschränkung die Dynamik während der Bewegung am stärksten limitieren wird. Unwirksame Beschränkungen, beispielsweise eine Beschränkung an die Z-Koordinate während einer reinen XY-Bewegung, werden ignoriert.
Folgende speziellen Werte werden unterstützt:
- MC_DEFAULT: Wird vom Empfänger des Verfahrbefehls mit dem entsprechenden Default-Wert ersetzt, falls dieser vorhanden ist.
- MC_IGNORE: Führt zu keiner Beschränkung. Dies kann sinnvoll sein, wenn man beispielsweise Beschleunigung und Ruck einer Koordinate limitieren möchte, die Geschwindigkeit aber nicht.
Beispiel Plot für Beschleunigung in 2D
2D-Geschwindigkeit (nicht eingezeichnet, in Fahrtrichtung):
2D-Beschleunigung:
Tangentiale Beschleunigung in Fahrtrichtung:
Mögliche Beschränkungen für die Beschleunigung:
DynamicConstraint_CartesianXY:
DynamicConstraint_Coordinates:
Beispiel PLC
PROGRAM MAIN
VAR
ConstraintPath : DynamicConstraint_PathXY;
ConstraintCoords : DynamicConstraint_Coordinates;
ConstraintCombined : DynamicConstraint_Container;
END_VAR
// Velocity in XY is limited to 1000, the derivative of this velocity with respect to time is limited to 5000.
// No restriction on the jerk.
ConstraintPath.SetValuesVADJ(V := 1000, A := 5000, D:= 5000, J := MC_IGNORE);
// Acceleration, deceleration and jerk of the X-coordinate are limited to their default values.
ConstraintCoords.SetLimit(Coordinate := Coord_Mcs_X, V := MC_IGNORE, A := MC_DEFAULT, D := MC_DEFAULT, J := MC_DEFAULT);
// The velocity of the C-coordinate is limited to its default value. Acceleration, deceleration and jerk are limited to specific values.
ConstraintCoords.SetLimit(Coordinate := Coord_Mcs_C1, V := MC_DEFAULT, A := 1000, D := 1000, J := 10000);
// The constraints on path and coordinates are combined into a single object.
ConstraintCombined.AddConstraint(ConstraintPath);
ConstraintCombined.AddConstraint(ConstraintCoords);