# MC_MoveAbsolute

Mit dem FB MC_MoveAbsolute wird eine Bewegung der Achse auf eine absolute Position beauftragt. Die Bewegung wird immer ruckbegrenzt mit dem in „Jerk“ eingestellten konstanten Ruck ausgeführt. Der Wert gilt sowohl für das Beschleunigen mit „Acceleration“, als auch für das Bremsen mit „Deceleration“.

Werden die optionalen Parameter „Acceleration“, „Deceleration“ und „Jerk“ nicht angegeben oder <= 0 gesetzt, so werden die Dynamikwerte aus der entsprechenden Achsliste übernommen.

Blockdiagramm

Parameter des FB

VAR_IN_OUT
Variablenname | Datentyp | Beschreibung
Axis | AXIS_REF | Achsreferenz

VAR_INPUT
Variablenname | Datentyp | Beschreibung
Execute | BOOL | Eine steigende Flanke am Eingang beauftragt die Bewegung auf eine absolute Position.
Position | LREAL | Zielposition der Bewegung, Wertebereich [-2147483648.0, 2147483647.0] Standard-Einheit [0,1µm bzw. 10-4 °]
Velocity | LREAL | Maximale Geschwindigkeit der Bewegung. Dieser Wert ist positiv anzugeben. Die Geschwindigkeit wird nicht zwangsläufig erreicht. Wertebereich [1.0, 2147483647.0] Standard-Einheit [1µm/s bzw. 10-3 °/s]
Acceleration | LREAL | Wert der Beschleunigung. Dieser Wert ist positiv anzugeben. Wertebereich [0.0, 2147483647.0] Standard-Einheit [1mm/s2 bzw. 1°/s2]
Deceleration | LREAL | Wert der Verzögerung. Dieser Wert ist immer positiv anzugeben. Wertebereich [0.0, 2147483647.0] Standard-Einheit [1mm/s2 bzw. 1°/s2]
Jerk | LREAL | Wert des Rucks. Dieser Wert ist immer positiv anzugeben. Wertebereich [0.0, 2147483647.0] Standard-Einheit [1mm/s3 bzw. 1°/s3]
Direction | INT | Richtung, in der die Bewegung gestartet wird. Einer der 4 Werte: 1 positive Richtung 2 kürzester Weg 3 negative Richtung 4 derzeitige Richtung

Die Angabe der Richtung ist nur dann wirksam, wenn für die Achse in den achsspezifischen Maschinendaten über den Parameter kenngr.achs_mode (P-AXIS-00015) ein Modulo-Koordinatensystem definiert wurde, da bei linearen Achsen die Richtung durch die Zielposition immer eindeutig ist.

VAR_OUTPUT
Variablenname | Datentyp | Beschreibung
Done | BOOL | Die Achse befindet sich innerhalb eines Bereiches, vorgegeben durch den Parameter getriebe[..].window (P-AXIS-00236) der achsspezifischen Maschinendaten, in der Nähe der Zielposition.
CommandAborted | BOOL | TRUE signalisiert, dass das Kommando durch eine andere Beauftragung abgebrochen wurde.
Error | BOOL | Ist TRUE, wenn ein Fehler im FB auftritt
ErrorID | WORD | Fehlerkennung

Verhalten des FB:

- Die Beauftragung dieser Bewegung erfolgt nur, wenn die Achse sich im Zustand „Standstill“ oder „Continuous Motion“ oder „Discrete Motion“ oder „Synchronized Motion“ befindet. Ist dies nicht Fall, wird Ausgang „Error“ FALSE und „ErrorID“ zeigt einen Fehlerwert an, der den Zustand bezeichnet, in dem sich die Achse aktuell befindet.
- Die Eingangsvariablen „Position“, „Velocity“, „Acceleration“, „Deceleration“ und „Jerk“ werden innerhalb des FB nur auf ihren Wertebereich überwacht. Bei Überschreiten wird eine die Variable betreffende Fehlernummer am Ausgang „ErrorID“ ausgegeben und „Error“ auf TRUE gesetzt. Darüber hinaus findet eine Begrenzung der maximalen Geschwindigkeits- und Beschleunigungsdaten innerhalb des Motion Controllers statt. Werden Geschwindigkeitswerte größer als getriebe[0].dynamik.vb_max (P-AXIS-00212) bzw. Beschleunigungs- oder Verzögerungswerte größer als getriebe[0].dynamik.a_max (P-AXIS-00008) kommandiert, so wird die Bewegung trotzdem durchgeführt. Die Werte werden jedoch auf die parametrierten Werte begrenzt und der Motion Controller gibt eine Warnung, P-ERR-60211 oder P-ERR-60188 bis P-ERR-60194, aus.
- Als Ruck sind Werte sinnvoll, die einer minimalen Rampenzeit von TA (Zykluszeit des IPO, z.B. 2 ms) und einer maximalen Rampenzeit von 100s entsprechen. Bei der minimalen Rampenzeit von TA liegt der Grenzübergang zur nicht ruckbegrenzten Geschwindigkeitsführung. Bei einem Wert von 0 wird zur Bestimmung des Rucks die maximale Rampenzeit aus dem Achs-MDS verwendet.
- Mit diesem Funktionsbaustein können aktive Beauftragungen durch neue Aufträge ersetzt werden, der Baustein ist damit retriggerbar. Der aktive Auftrag wird dadurch abgebrochen.
- Wird durch diesen FB eine nicht referenzierte Achse beauftragt, fährt die Achse nicht los. Am Baustein MC_ReadAxisError wird der Fehler P-ERR-60142 gemeldet.
- Die Positionen der Softwareendschalter (kenngr.swe_pos (P-AXIS-00178), kenngr.swe_neg (P-AXIS-00177), kenngr.swe_toleranz (P-AXIS-00179)) werden überwacht, wenn die Achse entweder als Linearachse oder Rundachse definiert wurde. Dies bedeutet, dass der Parameter kenngr.achs_typ (P-AXIS-00018) der Achsmaschinendaten den Wert 0x0001 oder 0x0002 besitzt. Wenn durch die Beauftragung die Zielposition die Position der Softwareendschalter überschreitet, fährt die Achse dennoch los. Wird eine Softwareendschalter-Position erreicht, wird die Achse unter Einhaltung der definierten Beschleunigung abgebremst.