Beispiel „Planar-Mover durch ein Track-Netzwerk folgen“

Anhand dieser Anleitung werden Sie ein TwinCAT-Projekt anlegen, in welchem ein Planar-Mover, der sich auf einem Planar-Track befindet, einem vorausfahrenden Planar-Mover auf demselben Planar-Track auf dessen Weg durch ein Tracknetzwerk folgt.

Das Folgen durch ein Tracknetzwerk wird realisiert durch das Kommando GearInPosOnTrackWithMasterMover, welches im Beispiel „Planar-Mover auf einem Track mit einem anderen Planar-Mover synchronisieren“ genauer beschrieben wird. Das Erstellen und Aufbauen eines Netzwerks aus Planar-Tracks wird im Beispiel „Planar-Tracks zu Netzwerk verbinden“ genauer erläutert. Das aktuelle Beispiel ist kurz gefasst und baut auf die o.g. Beispiele 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 drei Planar-Tracks über Groups > Add New Item… hinzu, siehe Konfiguration.
Der Solution Explorer weist die folgenden Einträge auf:
Beispiel „Planar-Mover durch ein Track-Netzwerk folgen“ 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 durch ein Track-Netzwerk folgen“ 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;
    track_in      : MC_PlanarTrack;
    track_out1    : MC_PlanarTrack;
    track_out2    : MC_PlanarTrack;
    move_feedback : MC_PlanarFeedback;
    options       : ST_GearInPosOnTrackWithMasterMoverOptions;
    state         : UDINT;
    pos1, pos2    : PositionXYC;
END_VAR
3. Bauen Sie die PLC um Symbole der „PLC-Mover“ und „-Tracks“ zu erzeugen.
Beispiel „Planar-Mover durch ein Track-Netzwerk folgen“ 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 zunächst die Planar-Tracks geometrisch definiert und aktiviert (States 0 bis 7), sodass sie die folgende Weichenkonfiguration abbilden:

Beispiel „Planar-Mover durch ein Track-Netzwerk folgen“ 4:

In States 8 bis 19 werden die beiden Planar-Mover aktiviert, auf den Planar-Track vor der Weiche (track_in) eingekoppelt und an Position 200 (master_mover) bzw. 0 (slave_mover) verfahren. Daraufhin wird der Master-Planar-Mover auf Position 500 auf dem oberen der beiden abzweigenden Planar-Tracks (track_out1) kommandiert (State 20). Schlussendlich wird in State 21 der GearInPosOnTrackWithMasterMover-Befehl an den Slave-Planar-Mover geschickt. Wie üblich werden nach der END_CASE-Anweisung zyklisch die Planar-Objekte aktualisiert.

CASE state OF
  0:
    pos1.SetValuesXYC(100, 360, 0);
    pos2.SetValuesXYC(400, 360, 0);
    track_in.AppendLine(0, pos1, pos2);
    track_in.Enable(0);
    state := state + 1;
  1:
    IF track_in.MCTOPLC_STD.State = MC_PLANAR_STATE.Enabled THEN
      state := state + 1;
    END_IF
  2:
    track_out1.StartFromTrack(0, track_in);
    state := state + 1;
  3:
    pos1.SetValuesXYC(450, 410, 0);
    pos2.SetValuesXYC(860, 620, 0);
    track_out1.AppendLine(0, pos1, pos2);
    track_out1.Enable(0);
    state := state + 1;
  4:
    IF track_out1.MCTOPLC_STD.State = MC_PLANAR_STATE.Enabled THEN
      state := state + 1;
    END_IF
  5:
    track_out2.StartFromTrack(0, track_in);
    state := state + 1;
  6:
    pos1.SetValuesXYC(450, 310, 0);
    pos2.SetValuesXYC(860, 100, 0);
    track_out2.AppendLine(0, pos1, pos2);
    track_out2.Enable(0);
    state := state + 1;
  7:
    IF track_out2.MCTOPLC_STD.State = MC_PLANAR_STATE.Enabled THEN
      state := state + 1;
    END_IF
  8:
    master_mover.Enable(0);
    state := state + 1;
  9:
    IF master_mover.MCTOPLC.STD.State = MC_PLANAR_STATE.Enabled THEN
      state := state + 1;
    END_IF
  10:
    master_mover.JoinTrack(0, track_in, 0, 0);
    state := state + 1;
  11:
    IF master_mover.MCTOPLC.STD.CommandMode = MC_PLANAR_MOVER_COMMAND_MODE.OnTrack THEN
      state := state + 1;
    END_IF
  12:
    master_mover.MoveOnTrack(move_feedback, track_in, 200, 0, 0);
    state := state + 1;
  13:
    IF move_feedback.Done THEN
      state := state + 1;
    END_IF
  14:
    slave_mover.Enable(0);
    state := state + 1;
  15:
    IF slave_mover.MCTOPLC.STD.State = MC_PLANAR_STATE.Enabled THEN
      state := state + 1;
    END_IF
  16:
    slave_mover.JoinTrack(0, track_in, 0, 0);
    state := state + 1;
  17:
    IF slave_mover.MCTOPLC.STD.CommandMode = MC_PLANAR_MOVER_COMMAND_MODE.OnTrack THEN
      state := state + 1;
    END_IF
  18:
    slave_mover.MoveOnTrack(move_feedback, track_in, 0, 0, 0);
    state := state + 1;
  19:
    IF move_feedback.Done THEN
      state := state + 1;
    END_IF
  20:
    master_mover.MoveOnTrack(0, track_out1, 500, 0, 0);
    state := state + 1;
  21:
    options.followMover := TRUE;
    slave_mover.GearInPosOnTrackWithMasterMover(0, master_mover, 0, 210, track_in, 10, track_in, 0, options);
    state := state + 1;
END_CASE

master_mover.Update();
slave_mover.Update();
track_in.Update();
track_out1.Update();
track_out2.Update();
move_feedback.Update();

Projekt aktivieren und starten

1. Aktivieren Sie die Konfiguration über den Button in der Menüleiste Beispiel „Planar-Mover durch ein Track-Netzwerk folgen“ 5:.
2. Versetzen Sie das TwinCAT-System in den Zustand „Run“ über den Button Beispiel „Planar-Mover durch ein Track-Netzwerk folgen“ 6:.
3. Loggen Sie die PLC über den Button in der Menüleiste ein Beispiel „Planar-Mover durch ein Track-Netzwerk folgen“ 7:.
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 Beispiel „Planar-Mover durch ein Track-Netzwerk folgen“ 8:) verfolgt werden.

Da als SyncPositionen der beiden Planar-Mover im Funktionsaufruf in State 21 die Positionen 210 für den Master bzw. 10 für den Slave angegeben wurden, wird der Slave-Planar-Mover seinem Master in einem Abstand von 200 durch das Netzwerk folgen. Er kommt also bei Position 300 auf dem oberen der beiden abzweigenden Planar-Tracks (auf dem sich auch der Master-Planar-Mover befindet) zum Stehen, was im Online-View überprüft werden kann:

Beispiel „Planar-Mover durch ein Track-Netzwerk folgen“ 9:

Beachten Sie, dass durch das Setzen der Option „FollowMover“ im Options-Objekt und übergeben desselben im Funktionsaufruf in State 21 kein Planar-TrackTrail-Objekt spezifiziert werden muss. Der Pfad durchs Netzwerk, den der Slave-Planar-Mover nehmen soll, muss also nicht explizit bestimmt werden, da er automatisch dem Master-Planar-Mover folgt und an der Weiche auf den korrekten Planar-Track abbiegt. Dieses Verhalten wird mit der gesetzten Option auch in einem größeren Netzwerk, in welchem sich der Master-Planar-Mover über mehrere Trackgrenzen hinweg bewegt, reproduziert.