MC_MoveModulo
Mit dem Funktionsbaustein MC_MoveModulo wird eine Positionierung durchgeführt, die sich auf die Modulo-Position einer Achse bezieht. Grundlage für eine Modulo-Umdrehung ist dabei der einstellbare Achsparameter Modulo-Faktor (z. B. 360°). Abhängig vom Eingang „Direction“ werden drei mögliche Starttypen unterschieden.
- Positionierung in positive Richtung
- Positionierung in negative Richtung
- Positionierung auf kürzestem Weg
Bewegungskommandos können auf gekoppelte Slave-Achsen angewendet werden, wenn diese Option in den Parametern der Achse explizit aktiviert worden ist. Ein Bewegungskommando wie MC_MoveModulo führt dann automatisch zum Abkoppeln der Achse und das Kommando wird anschließend ausgeführt. In diesem Fall ist ausschließlich der BufferMode „Aborting“ möglich.
Start einer Achse aus dem Stillstand
Wird eine Achse mit MC_MoveModulo aus dem Stillstand gestartet, so können auch Positionen größer oder gleich 360° angegeben werden, um zusätzliche volle Umdrehungen auszuführen. Gleiches gilt für einen Start mit dem BufferMode „MC_Buffered“.
Start einer Achse aus der Bewegung
Wenn sich eine Achse bereits in Bewegung befindet, sind einige Besonderheiten zu beachten.
Die Anzahl zusätzlicher Umdrehungen kann nicht vom Anwender bestimmt werden. Das System rechnet selbständig, wie die Achse auf möglichst kurzem Weg auf die Zielposition positioniert werden kann.
Der Fehlerausgang muss zwingend ausgewertet werden, da unter bestimmten Bedingungen ein orientierter Stopp nicht möglich ist. Beispielsweise könnte kurz zuvor ein Standard-Stopp ausgelöst worden sein oder es würde im Falle eines orientierten Stopps ein aktiver Software-Endschalter überfahren. In allen Fehlerfällen wird die Achse sicher gestoppt, steht dann aber anschließend nicht an der gewünschten orientierten Position.
Sonderfälle
Besonders zu beachten ist das Verhalten bei Anforderung einer oder mehrerer vollständiger Modulo‑Umdrehungen. Befindet sich die Achse auf einer exakten Sollposition von beispielsweise 90 Grad und wird sie auf 90 Grad positioniert, wird keine Bewegung ausgeführt. Bei Anforderung von 450 Grad in positiver Richtung fährt sie eine Umdrehung. Nach einem Achs-Reset kann das Verhalten anders sein, weil durch den Reset die aktuelle Istposition in die Sollposition übernommen wird. Damit steht die Achse nicht mehr exakt bei 90 Grad, sondern ein wenig darunter oder darüber. In diesen beiden Fällen wird entweder nur eine minimale Positionierung auf 90 Grad oder aber eine ganze Umdrehung ausgeführt.
Je nach Anwendungsfall kann es für volle Modulo-Umdrehungen günstiger sein, die gewünschte Zielposition auf Grund der aktuellen absoluten Position zu berechnen und mit dem Baustein MC_MoveAbsolute zu positionieren.
Die Modulo-Positionierung steht ebenso wie die Absolut-Positionierung für alle Achsen unabhängig von der Modulo-Einstellung im TwinCAT System Manager zur Verfügung. Für jede Achse kann die aktuelle Absolutposition „SetPos“ aus dem zyklischen Achsinterface Datentyp NCTOPLC_AXIS_REF ausgelesen werden. |
Siehe auch: Hinweise zur Modulo-Positionierung
Eingänge
VAR_INPUT
Execute : BOOL;
Position : LREAL;
Velocity : LREAL;
Acceleration : LREAL;
Deceleration : LREAL;
Jerk : LREAL;
Direction : MC_Direction;
BufferMode : MC_BufferMode;
Options : ST_MoveOptions;
END_VAR
Name | Typ | Beschreibung |
---|---|---|
Execute | BOOL | Mit einer steigenden Flanke wird das Kommando ausgeführt. |
Position | LREAL | Modulo-Zielposition, auf die positioniert werden soll. Falls die Achse aus dem Stillstand gestartet wird, führen Positionen ab 360° zu zusätzlichen Umdrehungen. Negative Positionen sind nicht zulässig. |
Velocity | LREAL | Maximale Geschwindigkeit mit der gefahren werden soll (>0). |
Acceleration | LREAL | Beschleunigung (≥0) |
Deceleration | LREAL | Verzögerung (≥0) |
Jerk | LREAL | Ruck (≥0) |
Direction | Positive oder negative Fahrtrichtung. Falls die Achse aus der Bewegung heraus gestartet wird, darf die Richtung nicht umgekehrt werden. | |
BufferMode | Wird ausgewertet, wenn die Achse bereits ein anderes Kommando ausführt. MC_MoveModulo wird nach dem laufenden Kommando aktiv oder bricht dieses ab. Übergangsbedingungen vom laufenden zum nächsten Kommando werden ebenfalls durch den BufferMode festgelegt. Um den BufferMode zu verwenden, ist immer ein zweiter Funktionsbaustein nötigt. Es ist nicht möglich, einen Move-Baustein mit neuen Parametern zu triggern, während er noch aktiv ist. | |
Options | Datenstruktur, die zusätzliche selten benötigte Parameter enthält. Im Normalfall kann der Eingang offen bleiben. |
Siehe auch: Allgemeine Regeln für MC-Funktionsbausteine
Ein-/Ausgänge
VAR_IN_OUT
Axis : AXIS_REF;
END_VAR
Name | Typ | Beschreibung |
---|---|---|
Axis | Achsdatenstruktur, welche eine Achse eindeutig im System adressiert. Sie enthält unter anderem den aktuellen Status der Achse, wie Position, Geschwindigkeit oder Fehlerzustand. |
Ausgänge
VAR_OUTPUT
Done : BOOL;
Busy : BOOL;
Active : BOOL;
CommandAborted : BOOL;
Error : BOOL;
ErrorID : UDINT;
END_VAR
Name | Typ | Beschreibung |
---|---|---|
Done | BOOL | TRUE, wenn die Zielposition erreicht wurde. |
Busy | BOOL | TRUE, sobald das Kommando mit „Execute“ gestartet wird und solange der Fahrbefehl abgearbeitet wird. Wenn „Busy“ FALSE ist, ist der Funktionsbaustein bereit für einen neuen Auftrag. Gleichzeitig ist einer der Ausgänge „Done“, „CommandAborted“ oder „Error“ gesetzt. |
Active | BOOL | Zeigt an, dass das Kommando ausgeführt wird. Wenn das Kommando gepuffert wurde, wird es evtl. erst aktiv, nachdem ein laufendes Kommando beendet ist. |
CommandAborted | BOOL | TRUE, wenn das Kommando nicht vollständig ausgeführt werden konnte. Die Achse wurde gestoppt oder das laufende Kommando wurde durch ein weiteres Move-Kommando abgelöst. |
Error | BOOL | TRUE, wenn ein Fehler auftritt. |
ErrorID | UDINT | Liefert bei einem gesetzten Error-Ausgang die Fehlernummer. |
Siehe auch: Allgemeine Regeln für MC-Funktionsbausteine
|
Voraussetzungen
Entwicklungsumgebung | Zielplattform | Einzubindende SPS-Bibliotheken |
---|---|---|
TwinCAT v3.0.0 | PC oder CX (x86 oder x64) | Tc2_MC2 |