MC_MoveSuperimposed
MC_MoveSuperimposed startet eine relative überlagerte Bewegung während eine Achse bereits in Bewegung ist. Die aktuelle Bewegung wird nicht unterbrochen. Der Done-Ausgang wird gesetzt, wenn die überlagerte Bewegung beendet ist. Die ursprüngliche unterlagerte Bewegung kann weiterhin aktiv sein und wird durch den zugehörigen Move-Funktionsbaustein überwacht.
Die Funktion der Überlagerung wird deutlich, wenn man zwei gleich schnell laufende Achsen betrachtet. Wird eine der Achsen durch MC_MoveSuperimposed überlagert, so eilt sie um den Parameter Distance vor oder nach. Nachdem die überlagerte Bewegung beendet ist, bleibt die Streckendifferenz Distance zwischen beiden Achsen erhalten.
MC_MoveSuperimposed kann sowohl auf Einzelachsen, als auch auf Master- oder Slave-Achsen ausgeführt werden. Bei einer Slave-Achse wirkt die überlagerte Bewegung allein auf die Slave-Achse. Wird die Funktion auf eine Master-Achse angewendet, so macht der Slave aufgrund der Achskopplung die überlagerte Bewegung des Masters mit.
Da MC_MoveSuperimposed eine relative überlagerte Bewegung ausführt, verändert sich auch die Zielposition des unterlagerten Fahrkommandos um Distance.
Die überlagerte Bewegung wird abhängig von der Position der Hauptbewegung ausgeführt. Das heißt, dass bei einer Geschwindigkeitsänderung der Hauptbewegung auch die überlagerte Bewegung entsprechend langsamer oder schneller wird und bei einem Stillstand der Hauptbewegung ist auch die überlagerte Bewegung nicht mehr aktiv. Über den Options-Parameter kann festgelegt werden, ob die überlagerte Bewegung nach einem Stillstand der Hauptbewegung abgebrochen oder fortgesetzt wird.
Anwendungsbeispiele zu MC_MoveSuperimposed
Eingänge
VAR_INPUT
Execute : BOOL; (* B *)
Mode : E_SuperpositionMode;
Distance : LREAL; (* B *)
VelocityDiff : LREAL; (* E *)
Acceleration : LREAL; (* E *)
Deceleration : LREAL; (* E *)
Jerk : LREAL; (* E *)
VelocityProcess : LREAL; (* V *)
Length : LREAL; (* V *)
Options : ST_SuperpositionOptions; (* V *)
END_VAR
ST_SuperpositionOptions E_SuperpositionMode
Execute |
Mit einer steigenden Flanke am Eingang Execute wird das Kommando ausgeführt. | |
Mode |
Mode legt fest, wie die überlagerte Bewegung auszuführen ist. | |
Distance |
Relative Wegstrecke die aufgeholt werden soll. Ein positiver Wert bedeutet eine betragsmäßige Geschwindigkeitserhöhung, um diese Strecke zusätzlich zur unbeeinflussten Bewegung zurückzulegen. Ein negativer Wert bedeutet ein Abbremsen und Zurückfallen um diese Strecke. | |
VelocityDiff |
Maximale Geschwindigkeitsdifferenz zur aktuellen Geschwindigkeit (Grundgeschwindigkeit) der Achse (>0). | |
Acceleration |
Beschleunigung (≥0). Bei einem Wert von 0 wirkt die Standardbeschleunigung aus der Achskonfiguration im System Manager. | |
Deceleration |
Verzögerung (≥0). Bei einem Wert von 0 wirkt die Standardverzögerung aus der Achskonfiguration im System Manager. | |
Jerk |
Ruck (≥0). Bei einem Wert von 0 wirkt der Standardruck aus der Achskonfiguration im System Manager. | |
VelocityProcess |
Mittlere Prozessgeschwindigkeit in der Achse (>0).Bei konstanter Grundgeschwindigkeit während der Überlagerung kann hier die Sollgeschwindigkeit der Achse angegeben werden. | |
Length |
Fahrstrecke, die für die überlagerte Bewegung zur Verfügung steht. Der Parameter Mode legt fest, wie diese Strecke interpretiert wird. | |
Options |
Die Datenstruktur Options enthält zusätzliche, selten benötigte Parameter. Im Normalfall kann der Eingang offen bleiben. | |
Options. |
AbortOption |
AbortOption legt das Verhalten im Stillstand der unterlagerten Bewegung fest. Die überlagerte Bewegung kann dann abgebrochen oder später fortgesetzt werden. |
Ausgänge
VAR_OUTPUT
Done : BOOL;
Busy : BOOL;
Active : BOOL;
CommandAborted : BOOL;
Error : BOOL;
ErrorID : UDINT;
Warning : BOOL;
WarningID : UDINT;
ActualVelocityDiff : LREAL;
ActualDistance : LREAL;
ActualLength : LREAL;
ActualAcceleration : LREAL;
ActualDeceleration : LREAL;
END_VAR
Done |
Der Ausgang Done wird TRUE, wenn die überlagerte Bewegung erfolgreich abgeschlossen wurde. |
Busy |
Der Busy-Ausgang wird TRUE, sobald das Kommando mit Execute gestartet wird und bleibt TRUE, solange der Fahrbefehl abgearbeitet wird. Wenn Busy wieder FALSE wird, so ist der Funktionsbaustein bereit für einen neuen Auftrag. Gleichzeitig ist einer der Ausgänge Done, CommandAborted oder Error gesetzt. |
Active |
Active zeigt an, dass das Kommando ausgeführt wird. |
CommandAborted |
Wird TRUE, wenn das Kommando durch ein anderes Kommando abgebrochen wurde und daher nicht vollständig ausgeführt werden konnte. |
Error |
Wird im Fehlerfall TRUE. |
ErrorID |
Liefert bei einem gesetzten Error-Ausgang die Fehlernummer. |
Warning |
Warning wird TRUE, wenn die Aktion nicht vollständig ausgeführt werden kann. |
WarningID |
Der Baustein liefert die Warnung 4243hex (16963) wenn die Ausgleichsfahrt aufgrund der Parametrierung (Strecke, Geschwindigkeit etc.) nicht vollständig durchgeführt werden kann. In diesem Fall wird die Ausgleichsfahrt soweit wie möglich ausgeführt. Der Anwender muss entscheiden, ob er diese Warnmeldung in seiner Applikation als echten Fehler oder eher als Warnung versteht. |
ActualVelocityDiff |
Tatsächlich genutzte Geschwindigkeitsüberhöhung während der überlagerten Bewegung (ActualVelocityDiff ≤ VelocityDiff). |
ActualDistance |
Tatsächlich überlagerte Distanz. Der Baustein versucht die vorgegebene Distanz Distance vollständig zu erreichen. Abhängig von der Parametrierung (VelocityDiff, Acceleration, Deceleration, Length, Mode) kann diese Distanz evtl. nicht vollständig erreicht werden. In diesen Fällen wird die maximal mögliche Distanz überlagert. (ActualDistance≤Distance). |
ActualLength |
Tatsächlich zurückgelegte Strecke während der überlagerten Bewegung (ActualLenght≤Length). |
ActualAcceleration |
Tatsächlich verwendete Beschleunigung der überlagerten Bewegung (ActualAcceleration≤Acceleration). |
ActualDeceleration |
Tatsächlich verwendete Verzögerung der überlagerten Bewegung (ActualDeceleration≤Deceleration). |