MC_MoveSuperImposed
Mit dem FB MC_MoveSuperImposed wird eine relative Bewegung beauftragt, zusätzlich zu einer bereits aktiven Bewegung. Die aktive Bewegung wird nicht unterbrochen, sondern mit der beauftragten überlagert. 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.
Befindet sich die Achse bereits in einem Bewegungszustand und erhält eine Beauftragung durch diesen FB, führt dies zu einer
- überlagerten Interpolation
- zu einer Geschwindigkeitsänderung
- Änderung der Zielposition der aktiven Bewegung.
Ist die Achse im Zustand „Standstill“, wirkt eine Beauftragung durch den FB MC_MoveSuperImposed wie eine Beauftragung durch eine FB MC_MoveRelative.
Da sich bei der überlagerten Interpolation auch die Beschleunigungen überlagern, ist durch entsprechende Achsparametrierung sicherzustellen, dass die Achse nicht dynamisch überfordert wird.
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 Überlagerung der Bewegung. |
Distance | LREAL | Relative Strecke der Bewegung Wertebereich [-2147483648.0, 2147483647.0] |
VelocityDiff | LREAL | Maximale Differenz zur Geschwindigkeit der unterlagerten Bewegung. Dieser Wert ist positiv anzugeben. Die Geschwindigkeit wird nicht zwangsläufig erreicht. Wertebereich [1. 0, 2147483647.0] |
Acceleration | LREAL | Wert der Beschleunigung. Dieser Wert ist positiv anzugeben. Wertebereich [0.0, 2147483647.0] |
Deceleration | LREAL | Wert der Verzögerung. Dieser Wert ist immer positiv anzugeben. Wertebereich [0.0, 2147483647.0] |
Jerk | LREAL | Wert des Rucks. Dieser Wert ist immer positiv anzugeben. Wertebereich [0.0, 2147483647.0] |
VAR_OUTPUT | ||
Variablenname | Datentyp | Beschreibung |
Done | BOOL | Die relative Strecke wurde der aktiven Bewegung überlagert. |
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 „Distance“, „VelocityDiff“, „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, wird die Bewegung trotzdem durchgeführt. Die Werte werden 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.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 eine zusätzliche, überlagerte Bewegung modifiziert werden. Bezüglich der Auftragsdurchsetzung und des Auftragsabbruchs gelten folgende Regeln:
- Ist keine Interpolation aktiv, sprich ist die Achse im Zustand „Standstill“, wirkt eine Beauftragung durch den FB MC_MoveSuperImposed wie eine Beauftragung durch einen FB MC_MoveRelative.
- Ist bereits eine Interpolation aktiv, sprich ist die Achse in einem der Zustände „Continuous Motion“, „Discrete Motion“ oder „Synchronized Motion“, startet eine Beauftragung durch den FB MC_MoveSuperImposed eine weitere, überlagerte Interpolation.
- Ist bereits eine überlagerte Interpolation (vgl2.) aktiv, so bewirkt eine erneute Beauftragung durch den FB MC_MoveSuperImposed, dass nur die momentan aktive überlagerte Interpolation durch den neuen MC_MoveSuperImposed Auftrag ersetzt wird, die unterlagerte Interpolation bleibt davon unberührt.
- Ist bereits eine überlagerte Interpolation (vgl2.) aktiv, und es erfolgt eine erneute Beauftragung mit einem beliebigen MC_Move*** außer MC_MoveSuperImposed, so bewirkt dies einen Abbruch beider aktiver Interpolationen. Also sowohl die unterlagerte als auch die überlagerte Interpolation werden durch den neuen MC_Move*** Auftrag ersetzt.
- 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. Die Achse fährt auch dann los, wenn durch die Beauftragung die Zielposition die Position der Softwareendschalter überschreitet. Wird eine Softwareendschalter-Position erreicht, wird die Achse unter Einhaltung der definierten Beschleunigung abgebremst.