Beispiel „Planar-Mover auf Track einkoppeln und mit AdoptTrackOrientation verfahren“
Anhand dieser Anleitung werden Sie ein TwinCAT-Projekt anlegen, das zwei Planar-Mover sowie einen Planar-Track enthält. Es werden beide Mover auf dem Track einkoppelt 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 sichbar, wenn man die Checkbox „Show Hidden Parameters“ aktiviert. - 3. Ändern Sie die Startposition des zweiten Movers auf x=240.
Planar-Track anlegen
- 4. Fügen Sie den Planar-Track über Groups > Add New Item… hinzu, siehe Konfiguration.
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, wie nachfolgend gezeigt, zwei Planar-Mover, einen Planar-Track, eine Zustandsvariable für eine Zustandsmaschine sowie zwei Hilfspositionen für den Track an.
PROGRAM MAIN
VAR
mover_one, mover_two : MC_PlanarMover;
track : MC_PlanarTrack;
state : UDINT;
pos1, pos2 : PositionXYC;
join_track_options : ST_JoinTrackOptions;
END_VAR
- 3. Programmieren Sie anschließend in der MAIN einen Ablauf.
- Dieser Programmcode erstellt und aktiviert einen Track und beide Mover. Danach werden beide Mover auf dem Track eingekoppelt und gedreht.
CASE state OF
0:
pos1.SetValuesXY(0, 0);
pos2.SetValuesXY(400, 0);
track.AppendLine(0, pos1, pos2);
track.Enable(0);
state := 1;
1:
IF track.MCTOPLC_STD.State = MC_PLANAR_STATE.Enabled THEN
state := 2;
END_IF
2:
mover_one.Enable(0);
mover_two.Enable(0);
state := 3;
3:
IF mover_one.MCTOPLC.STD.State = MC_PLANAR_STATE.Enabled
AND mover_two.MCTOPLC.STD.State = MC_PLANAR_STATE.Enabled THEN
state := 4;
END_IF
4:
join_track_options.useOrientation := TRUE;
mover_one.JoinTrack(0, track, 0, join_track_options);
mover_two.JoinTrack(0, track, 0, join_track_options);
state := 5;
5:
IF mover_one.MCTOPLC.STD.CommandMode = MC_PLANAR_MOVER_COMMAND_MODE.OnTrack
AND mover_two.MCTOPLC.STD.CommandMode = MC_PLANAR_MOVER_COMMAND_MODE.OnTrack THEN
state := 6;
END_IF
6:
mover_one.MoveC(0, 20.0, 0, 0);
mover_two.MoveC(0, 190.0, 0, 0);
state := 7;
7:
IF mover_one.MCTOPLC.SET.SetPos.c >= 19.9
AND NOT mover_one.MCTOPLC.STD.Busy.busyMover
AND mover_two.MCTOPLC.SET.SetPos.c >= 189.9
AND NOT mover_two.MCTOPLC.STD.Busy.busyMover THEN
state := 8;
END_IF
8:
mover_one.AdoptTrackOrientation(0, 0, 0);
mover_two.AdoptTrackOrientation (0, 0, 0);
state := 9;
END_CASE
Befehl abschicken
- 4. Um den Befehl abzuschicken, müssen Sie die Mover und den Track nach dem END_CASE zyklisch mit ihrer Update-Methode aufrufen:
mover_one.Update();
mover_two.Update();
track.Update();
Durch das Bauen der PLC werden Symbole des „PLC-Movers" und „-Tracks“ erzeugt, welche anschließend mit der Mover- bzw. Track-Instanz im MC-Projekt verknüpft werden können.
- 1. 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.
- Der Track muss separat über die folgenden Dialogfenster 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.
Beide Mover werden mit an den Track gekoppelter Orientierung zum Track hinzugefügt. Danach wird jeweils durch ein MoveC die Orientierung vom Track entkoppelt. Die Mover stehen am Ende des Zustandsautomaten (state=9) auf den gewünschten Positionen. Beide Mover befinden sich (wieder) im Zustand OnTrack und haben durch den Befehl AdoptTrackOrientation wieder die an den Track gekoppelte Orientierung. Der Befehl hat 3 Parameter: Erstens ein optionales Feedback-Objekt, zweitens ein optionales Constraints-Objekt und drittens ein optionales Options-Objekt.
