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.
Beispiel „Planar-Mover mit Group anlegen und koordinatenbasiert verfahren (MoveX, MoveY)" 1:
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_CASE

Befehl 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.
Beispiel „Planar-Mover mit Group anlegen und koordinatenbasiert verfahren (MoveX, MoveY)" 2:
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.
Beispiel „Planar-Mover mit Group anlegen und koordinatenbasiert verfahren (MoveX, MoveY)" 3:
Die Gruppe muss über die folgenden Dialogfenster separat verlinkt werden.
Beispiel „Planar-Mover mit Group anlegen und koordinatenbasiert verfahren (MoveX, MoveY)" 4:
Beispiel „Planar-Mover mit Group anlegen und koordinatenbasiert verfahren (MoveX, MoveY)" 5:

Projekt aktivieren und starten

1. Aktivieren Sie die Konfiguration über den Button in der Menüleiste Beispiel „Planar-Mover mit Group anlegen und koordinatenbasiert verfahren (MoveX, MoveY)" 6:.
2. Versetzen Sie das TwinCAT-System in den Zustand „Run“ über den Button Beispiel „Planar-Mover mit Group anlegen und koordinatenbasiert verfahren (MoveX, MoveY)" 7:.
3. Loggen Sie die PLC über den Button in der Menüleiste ein Beispiel „Planar-Mover mit Group anlegen und koordinatenbasiert verfahren (MoveX, MoveY)" 8:.
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.

Beispiel „Planar-Mover mit Group anlegen und koordinatenbasiert verfahren (MoveX, MoveY)" 9:

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.