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:
PLC anlegen
- Siehe Vorabschritte PLC anlegen.
- 1. Legen Sie über MAIN die gewünschte Anzahl an Movern („MC_PlanarMover“) und Tracks („MC_PlanarTrack“) an.
- 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.
- 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:

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
.
- 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.
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.
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:

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.