Beispiel „Planar-Mover auf einem Track mit einem anderen Planar-Mover synchronisieren“

Anhand dieser Anleitung werden Sie ein TwinCAT-Projekt anlegen, in welchem ein Planar-Mover, der sich auf einem Planar-Track befindet, an einen anderen Planar-Mover auf einem parallelen Planar-Track gekoppelt wird und daraufhin dessen Sollwerten folgt.

Die Kopplung eines Planar-Movers an einen anderen Planar-Mover ist weitgehend analog zur Kopplung eines Planar-Movers an eine Achse, siehe Beispiel „Planar-Mover auf einem Track mit einer Achse synchronisieren“. Das aktuelle Beispiel ist kurz gefasst und baut auf das obengenannte Beispiel auf.

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 sichbar, wenn man die Checkbox „Show Hidden Parameters“ aktiviert.

Planar-Track anlegen

3. Fügen Sie zwei Planar-Tracks über Groups > Add New Item… hinzu, siehe Konfiguration.
Der Solution Explorer weist die folgenden Einträge auf:
Beispiel „Planar-Mover auf einem Track mit einem anderen Planar-Mover synchronisieren“ 1:

PLC anlegen

Siehe Vorabschritte PLC anlegen.
1. Legen Sie über MAIN die gewünschte Anzahl an Movern („MC_PlanarMover“) und Tracks („MC_PlanarTrack“) an.
Beispiel „Planar-Mover auf einem Track mit einem anderen Planar-Mover synchronisieren“ 2:
Diese repräsentieren Mover und Tracks in der MC Configuration.
2. Legen Sie die folgenden Variablen an.
PROGRAM MAIN
VAR
    master_mover : MC_PlanarMover;
    slave_mover  : MC_PlanarMover;
    master_track : MC_PlanarTrack;
    slave_track  : MC_PlanarTrack;
    state        : UDINT;
    pos1, pos2   : PositionXYC;
END_VAR
3. Bauen Sie die PLC um Symbole der „PLC-Mover“ und „-Tracks“ zu erzeugen.
Beispiel „Planar-Mover auf einem Track mit einem anderen Planar-Mover synchronisieren“ 3:
4. Verlinken Sie die Planar-Mover und die Planar-Tracks (siehe Beispiel „Planar-Mover auf Track einkoppeln und verfahren“).

Zustandsautomaten programmieren

Mit der folgenden Zustandsmaschine, die im MAIN programmiert wird, werden die Planar-Tracks geometrisch definiert und aktiviert (States 0 bis 3), die Planar-Mover aktiviert und auf den jeweiligen Planar-Track eingekoppelt (States 4 bis 11) und der als Master fungierende Planar-Mover auf seinem Track verfahren (State 12).

Schlussendlich wird der Befehl zum Starten der Synchronisation mit dem Master-Planar-Mover (GearInPosOnTrackWithMasterMover) an den Slave-Planar-Mover geschickt (State 13). Nach der END_CASE-Anweisung werden zyklisch die Planar-Objekte aktualisiert.

CASE state OF
  0:
    pos1.SetValuesXYC(100, 620, 0);
    pos2.SetValuesXYC(860, 620, 0);
    master_track.AppendLine(0, pos1, pos2);
    master_track.Enable(0);
    state := state + 1;
  1:
    IF master_track.MCTOPLC_STD.State = MC_PLANAR_STATE.Enabled THEN
      state := state + 1;
    END_IF
  2:
    pos1.SetValuesXYC(100, 100, 0);
    pos2.SetValuesXYC(860, 100, 0);
    slave_track.AppendLine(0, pos1, pos2);
    slave_track.Enable(0);
    state := state + 1;
  3:
    IF slave_track.MCTOPLC_STD.State = MC_PLANAR_STATE.Enabled THEN
      state := state + 1;
    END_IF
  4:
    master_mover.Enable(0);
    state := state + 1;
  5:
    IF master_mover.MCTOPLC.STD.State = MC_PLANAR_STATE.Enabled THEN
      state := state + 1;
    END_IF
  6:
    master_mover.JoinTrack(0, master_track, 0, 0);
    state := state + 1;
  7:
    IF master_mover.MCTOPLC.STD.CommandMode = MC_PLANAR_MOVER_COMMAND_MODE.OnTrack THEN
      state := state + 1;
    END_IF
  8:
    slave_mover.Enable(0);
    state := state + 1;
  9:
    IF slave_mover.MCTOPLC.STD.State = MC_PLANAR_STATE.Enabled THEN
      state := state + 1;
    END_IF
  10:
    slave_mover.JoinTrack(0, slave_track, 0, 0);
    state := state + 1;
  11:
    IF slave_mover.MCTOPLC.STD.CommandMode = MC_PLANAR_MOVER_COMMAND_MODE.OnTrack THEN
      state := state + 1;
    END_IF
  12:
    master_mover.MoveOnTrack(0, 0, 500.0, 0, 0);
    state := state + 1;
  13:
    slave_mover.GearInPosOnTrackWithMasterMover(0, master_mover, 0, 100.0, master_track, 100.0, slave_track, 0, 0);
    state := state + 1;
END_CASE

master_mover.Update();
slave_mover.Update();
master_track.Update();
slave_track.Update();

Projekt aktivieren und starten

1. Aktivieren Sie die Konfiguration über den Button in der Menüleiste Beispiel „Planar-Mover auf einem Track mit einem anderen Planar-Mover synchronisieren“ 4:.
2. Versetzen Sie das TwinCAT-System in den Zustand „Run“ über den Button Beispiel „Planar-Mover auf einem Track mit einem anderen Planar-Mover synchronisieren“ 5:.
3. Loggen Sie die PLC über den Button in der Menüleiste ein Beispiel „Planar-Mover auf einem Track mit einem anderen Planar-Mover synchronisieren“ 6:.
4. Starten Sie die PLC über den Play-Button in der Menüleiste.

Der Master-Planar-Mover wird zur gegebenen Zielposition (hier 500) auf dem angegebenen Planar-Track verfahren und der Slave-Planar-Mover wird seiner Bewegung folgen. Die Positionen der Planar-Mover können im Online-View (über Klicken des Buttons) verfolgt werden.

Der Slave-Planar-Mover kommt bei Position 500 zum Stillstand, da hier auch der Master-Planar-Mover Nulldynamik erreicht.

Im Funktionsaufruf in State 13 werden dem Slave-Planar-Mover die Syncpositionen des Masters (Argumente 4 und 5) bzw. Slaves (Argumente 6 und 7) übergeben. Dies sind die jeweiligen Positionen, an welchen der Slave synchron mit dem Master wird, also seine Dynamikwerte erreicht. Tatsächlich ist es dem Slave hier wie auch im Beispiel „Planar-Mover auf einem Track mit einer Achse synchronisieren“ möglich bedeutend eher mit seinem Master synchron zu werden. Wie auch bei der Synchronisation mit einer Achse ist für die Überwachung von Synchronizitätsstatus und möglichen Fehlern ein spezielles Spezialisierte Feedback-Typen-Objekt nötig.

Wie auch beim Synchronisieren mit einer Master-Achse kann durch das Spezifizieren eines Planar-TrackTrail-Objektes die Synchronisationsbewegung des Slaves über mehrere Tracks programmiert werden.

Fährt der Master-Planar-Mover während eines aktiven Synchronisationskommandos über eine Trackgrenze hinweg, so wird die Position, die er an seinen Slave weitergibt, einfach über die Trackgrenze hinweg summiert.

Falls eine Master-Syncposition auf einem in der Zukunft vom Master-Planar-Mover passierten Planar-Track angegeben werden soll, so ist darauf zu achten, dass der Master-Planar-Mover zum Zeitpunkt des Abschickens des GearInPosOnTrackWithMasterMover-Befehls bereits eine Bewegung kommandiert hat, die diesen Planar-Track beinhaltet.