MC_MoveAbsolute_BkPlcMc (ab V3.0)
Der Funktionsbaustein startet und überwacht die Bewegung einer Achse.
Eingänge
VAR_INPUT
Execute: BOOL;
Position: LREAL;
Velocity: LREAL;
Acceleration: LREAL;
Deceleration: LREAL;
Jerk: LREAL;
Direction: MC_Direction_BkPlcMc:=MC_Shortest_Way_BkPlcMc; (ab/from V3.0.8)
BufferMode: MC_BufferMode_BkPlcMc:=Aborting_BkPlcMc; (ab/from V3.0.8)
END_VAR
Name | Typ | Beschreibung |
---|---|---|
Execute | BOOL | Eine steigende Flanke an diesem Eingang startet die Bewegung. |
Position | LREAL | [mm] Die Zielposition der Bewegung in Istwert-Einheiten der Achse. |
Velocity | LREAL | [mm/s] Die geforderte Geschwindigkeit der Bewegung in Istwert-Einheiten der Achse pro Sekunde. |
Acceleration | LREAL | [mm/s2] Die geforderte Beschleunigung in Istwert-Einheiten der Achse pro Quadrat-Sekunde. Ist dieser Parameter 0.0 wird er durch einen Defaultwert aus den Achsparametern ersetzt. |
Deceleration | LREAL | [mm/s2] Die geforderte Verzögerung in Istwert-Einheiten der Achse pro Quadrat-Sekunde. Ist dieser Parameter 0.0 wird er durch einen Defaultwert aus den Achsparametern ersetzt. |
Jerk | LREAL | [mm/s3] reserviert. |
Direction | MC_Direction_BkPlcMc | reserviert. Dieser Eingang wurde nur aus Kompatibilitätsgründen ergänzt und sollte nicht oder mit der Konstanten MC_Shortest_Way_BkPlcMc belegt werden. (ab V3.0.8) |
BufferMode | MC_BufferMode_BkPlcMc | reserviert. Dieser Eingang wurde vorbereitend ergänzt und sollte derzeit nicht oder mit der Konstanten Aborting_BkPlcMc belegt werden. (ab V3.0.8) |
Ein-/Ausgänge
VAR_INOUT
Axis: Axis_Ref_BkPlcMc;
END_VAR
Name | Typ | Beschreibung |
---|---|---|
Axis | Axis_Ref_BkPlcMc | Hier ist die Adresse einer Variablen vom Typ Axis_Ref_BkPlcMc zu übergeben. |
Ausgänge
VAR_OUTPUT
Busy: BOOL;
Done: BOOL;
CommandAborted: BOOL;
Error: BOOL;
ErrorID: UDINT;
END_VAR
Name | Typ | Beschreibung |
---|---|---|
Busy | BOOL | Hier wird signalisiert, dass ein Kommando abgearbeitet wird. |
Done | BOOL | Hier wird die erfolgreiche Abarbeitung der Bewegung signalisiert. |
CommandAborted | BOOL | Hier wird ein Abbruch der Bewegung signalisiert. |
Error | BOOL | Hier wird das Auftreten eines Fehlers signalisiert. |
ErrorID | UDINT | Hier wird eine codierte Fehlerursache bereitgestellt. |
Verhalten des Bausteins
Auf eine steigende Flanke an Execute hin untersucht der Baustein das übergebene Achsinterface. Dabei können eine Reihe von Problemen erkannt und gemeldet werden:
- Als nächstes wird überprüft, ob Position hinter einem aktiven Software-Endschalter liegt. In diesem Fall wird mit Error und ErrorID:=dwTcHydErrCdSoftEnd reagiert.
- In Abhängigkeit vom in Axis.pStAxParams^.nProfile festgelegten Bewegungsalgorithmus kann die Achse entweder nur aus dem Stillstand oder auch aus einer anderen noch nicht abgeschlossenen Bewegung heraus die hier gestartete Bewegung beginnen. Sollte sie derzeit nicht in der Lage sein diesen neuen Auftrag zu akzeptieren, wird mit Error und ErrorID:=dwTcHydErrCdNotStartable reagiert.
- Befindet sich die Achse in einem gestörten Zustand oder führt sie gerade eine Stopp-Operation durch wird mit Error und ErrorID:=dwTcHydErrCdNotReady reagiert.
- Wenn Velocity zu klein (weniger als 1% der Referenzgeschwindigkeit) ist, wird mit Error und ErrorID:=dwTcHydErrCdSetVelo reagiert.
- Wenn Acceleration zu klein ist (Velocity kann nicht innerhalb von 100 Sekunden erreicht werden), wird mit Error und ErrorID:=dwTcHydErrCdAcc reagiert.
- Wenn Deceleration zu klein ist (Velocity kann nicht innerhalb von 100 Sekunden abgebaut werden), wird mit Error und ErrorID:=dwTcHydErrCdDec reagiert.
- Wenn der Bewegungsalgorithmus bereits einen Fehlercode signalisiert, wird mit Error und ErrorID:=Bewegungsalgorithmus-Fehlercode reagiert.
Wenn diese Überprüfungen ohne Problem durchgeführt werden konnten, wird die Bewegung initiiert. Dazu werden die Parameter Position, Velocity, Acceleration und Deceleration auf die maximal zulässigen Werte begrenzt und an den Bewegungsalgorithmus übergeben. Die Achse befindet sich ab jetzt im Zustand McState_DiscreteMotion und der Baustein beginnt mit der Überwachung der Bewegung.
Sollte während der Abarbeitung der Bewegung vom Bewegungsalgorithmus ein Fehlercode signalisiert werden, wird mit Error und ErrorID:=Bewegungsalgorithmus-Fehlercode reagiert. Wird die vollständige Bewegung durch die Aktivität eines anderen Bausteins verhindert, wird mit CommandAborted reagiert. Erreicht der Bewegungsalgorithmus die Zielbedingungen der Achse, wird mit Done reagiert.
Eine fallende Flanke an Execute löscht alle anstehenden Ausgangssignale. Wird Execute bereits bei noch aktiver Bewegung auf FALSE gesetzt, wird die eingeleitete Bewegung unbeeinflusst weiter bearbeitet. Die Signale am Ende der Bewegung (Error, ErrorID, CommandAborted, Done ) werden für einen Zyklus gegeben.