# MC_MoveVelocity

Mit dem FB MC_MoveVelocity beauftragt man eine endlose Bewegung mit der angegebenen Geschwindigkeit. 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.

Um die Bewegung zu stoppen muss der FB durch einen anderen FB unterbrochen werden, der eine neue Beauftragung an die Achse absetzt.

Der Ausgang „InVelocity“ wird zurückgesetzt, wenn eine fallende Flanke am Eingang „Execute“ festgestellt wird oder wenn die Wirkung des FB wegen der Beauftragung eines anderen FB beendet wird.

In Verbindung mit einem FB MC_MoveSuperImposed bleibt der Ausgang „InVelocity“ TRUE.

Blockdiagramm

Parameter des FB

VAR_IN_OUT
Variablenname | Datentyp | Beschreibung
Axis | AXIS_REF | Achsreferenz

VAR_INPUT
Variablenname | Datentyp | Beschreibung
Execute | BOOL | Die steigende Flanke dieses Eingangssignals startet die Bewegung.
Velocity | LREAL | Betrag der Geschwindigkeit der endlosen Bewegung. Dieser Wert ist positiv anzugeben. 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 3 Werte: positive Richtung 3 negative Richtung 4 derzeitige Richtung

VAR_OUTPUT
Variablenname | Datentyp | Beschreibung
InVelocity | BOOL | Die beauftragte Geschwindigkeit wurde erreicht (zum ersten Mal)
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össer 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 eine Warnung, P-ERR-60211 oder P-ERR-60188 bis P-ERR-60194, wird ausgegeben.
- Als Ruck sind Werte sinnvoll, die einer minimalen Rampenzeit von TA (Zykluszeit des IPO, z. Bsp. 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 mit der Geschwindigkeit, die durch den Parameter getriebe[...].vb_reflow (P-AXIS-00218) der Achsmaschinendaten definiert wird.
- Die Positionen von Softwareendschaltern (kenngr.swe_pos (P-AXIS-00178), kenngr.swe_neg (P-AXIS-00177), kenngr.swe_toleranz (P-AXIS-00179)) wird ü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. Wird eine Softwareendschalter-Position erreicht, wird die Achse unter Einhaltung der definierten Beschleunigung abgebremst.
- Die Quittierung am Output „InVelocity“ hängt von der Einstellung des Wertes kenngr.vb_prozent (P-AXIS-00217) ab. Dieser Wert definiert ein prozentuales Toleranzfenster für die Zielgeschwindigkeit. Die „InVelocity“ Quittierung erfolgt sobald man in das Toleranzfenster eintritt.