Beispiel „Planar-Mover mit Group anlegen und koordinatenbasiert verfahren (MoveX, MoveY)"
Anhand dieser Anleitung werden Sie ein TwinCAT-Projekt anlegen, das zwei Planar-Mover sowie eine Planar-Group enthält. Es werden beide Mover zur Gruppe hinzugefügt und verfahren.
Planar-Mover anlegen
- Siehe Konfiguration.
- 1. Legen Sie zwei Planar-Mover an.
- 2. Versetzen Sie „Parameter (Init)“ in den Simulationsmodus (
TRUE). Der Parameter ist versteckt und wird nur sichtbar, wenn die Checkbox „Show Hidden Parameters“ aktiviert ist. - 3. Ändern Sie die Startposition des zweiten Movers auf x=200.
Planar-Group anlegen
- 4. Fügen Sie die Planar-Group über Groups > Add New Item… hinzu, siehe Konfiguration.
PLC anlegen
- Siehe Vorabschritte PLC anlegen.
- 1. Legen Sie über MAIN zwei Mover („MC_PlanarMover“) und eine Planar-Group „MC_PlanarGroup“ an.
- Diese repräsentieren die Mover und die Gruppe in der MC Configuration.

- 2. Legen Sie, wie nachfolgend gezeigt, eine Zustandsvariable für eine Zustandsmaschine an sowie zwei Hilfspositionen für die MoveToPosition-Befehle der Mover.
PROGRAM MAIN
VAR
mover_one, mover_two : MC_PlanarMover;
group : MC_PlanarGroup;
state : UDINT;
target_x : LREAL := 200;
target_y : LREAL := 200;
END_VAR- 3. Programmieren Sie anschließend in der MAIN einen Ablauf.
- Dieser Programmcode aktiviert die Gruppe und beide Mover. Danach werden beide Mover zur Gruppe hinzugefügt.
CASE state OF
0:
mover_one.Enable(0);
mover_two.Enable(0);
state := 1;
1:
IF mover_one.MCTOPLC.STD.State = MC_PLANAR_STATE.Enabled
AND mover_two.MCTOPLC.STD.State = MC_PLANAR_STATE.Enabled THEN
state := 2;
END_IF
2:
group.Enable(0);
state := 3;
3:
IF group.MCTOPLC_STD.State = MC_PLANAR_STATE.Enabled THEN
state := 4;
END_IF
4:
mover_one.AddToGroup(0, group);
mover_two.AddToGroup(0, group);
state := 5;
5:
IF mover_one.MCTOPLC.STD.GroupOID = group.MCTOPLC_STD.GroupOID
AND mover_two.MCTOPLC.STD.GroupOID = group.MCTOPLC_STD.GroupOID THEN
state := 6;
END_IF
6:
mover_one.MoveY(targetPosition := target_x, refSys := 0); // New default value syntax
mover_two.MoveX(targetPosition := target_y, refSys := 0); // New default value syntax
state := 7;
END_CASEBefehl abschicken
- 4. Um den Befehl abzuschicken, müssen Sie die Mover und die Gruppe zyklisch mit den Update-Methoden triggern:
mover_one.Update();
mover_two.Update();
group.Update();Durch das Bauen der PLC werden Symbole des „PLC-Movers" und der „-Gruppe“ erzeugt, welche anschließend mit der Mover- bzw. Group-Instanz im MC-Projekt verknüpft werden können.
- 5. Verwenden Sie zum Bauen den Pfad PLC > Untitled1 > Untitled1 Project > Build.
- Anschließend können die Planar-Mover im „MC Project“ mit dem Button Link To PLC… im Reiter Settings verknüpft werden.
- 6. Doppelklicken Sie erst Mover eins, danach Mover zwei.
- Die Gruppe muss über die folgenden Dialogfenster separat verlinkt werden.




Projekt aktivieren und starten
- 1. Aktivieren Sie die Konfiguration über den Button in der Menüleiste
. - 2. Versetzen Sie das TwinCAT-System in den Zustand „Run“ über den Button
. - 3. Loggen Sie die PLC über den Button in der Menüleiste ein
. - 4. Starten Sie die PLC über den Play-Button in der Menüleiste.
Nach Einloggen in die PLC und Starten, sehen Sie, dass die Mover am Ende des Zustandsautomaten (state=7) beide auf den Zielpositionen stehen. Mover eins ist nach x=0 und y=240 gefahren. Mover zwei ist zum Ursprung gefahren und wurde während der Fahrt zweitweise von Mover eins blockiert.
Da die Dynamik-Limits der Mover per Default recht hoch sind, kann unter Umständen die Änderung der Positionen nach Einloggen mit dem Auge schlecht nachzuverfolgen sein. Zu den Dynamik-Limits siehe Planar-Mover.

Koordinatenbasierte Bewegungen in X-, Y- und C-Koordinaten werden nicht abgelehnt, wenn andere Objekte im Weg sind, sondern die Bewegung wird ausgeführt, bis die minimal eingestellte 2D-Gap des Movers erreicht ist. Dasselbe gilt analog für die entsprechenden Relativ- und Geschwindigkeitsbefehle (z. B. MoveRelativeX oder MoveVelocityY). Die 2D-Kollisionsvermeidung während dieser Bewegungen ist dynamisch und der Parameter „Gap 2D“ wird als Initialparameter am Mover eingestellt, siehe Konfiguration.