Beispiel „Planar Motion Komponenten: Kollision abwenden“

Anhand dieser kurzen Anleitung werden Sie ein TwinCAT-Projekt anlegen, das einen Planar-Mover enthält, dessen Fahrbefehl wegen einer Kollision mit der Planar-Environment abgelehnt wird.

Planar-Mover anlegen

Siehe Konfiguration.
1. Legen Sie einen 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-Environment anlegen

3. Legen Sie eine Planar-Environment an, siehe Konfiguration.

Planar-Group anlegen

4. Legen Sie eine Planar-Group an, siehe Konfiguration.

PLC anlegen

Um die Geometrie der Environment zu erstellen und den Mover zu steuern, muss eine PLC angelegt werden, aus der der Nutzer Befehle an beide geben kann.
Beispiel „Planar Motion Komponenten: Kollision abwenden“ 1:
Beispiel „Planar Motion Komponenten: Kollision abwenden“ 2:
5. Fügen Sie dem PLC-Projekt die Bibliotheken Tc3_Physics und Tc3_Mc3PlanarMotion hinzu, siehe Bibliotheken einfügen.
6. Legen Sie über MAIN einen MC_PlanarMover und eine MC_PlanarEnvironment an.
Beispiel „Planar Motion Komponenten: Kollision abwenden“ 3:
Diese repräsentieren den Mover und die Environment in der MC Configuration.
PROGRAM MAIN
VAR
    mover           : MC_PlanarMover;
    environment     : MC_PlanarEnvironment;
    group           : MC_PlanarGroup;
    feedback        : MC_PlanarFeedback;
    state           : UDINT;
    target_position : PositionXYC;
END_VAR

Sie haben in diesem Beispiel eine Zustandsvariable für eine einfache Zustandsmaschine und eine Zielposition für einen einfachen Fahrbefehl des Movers angelegt. Damit kann anschließend in der MAIN ein Ablauf programmiert werden:

CASE state OF
  0:
    environment.AddStator(0,-120.0,-120.0);
    environment.CreateBoundary(0);
    state := 1;
  1:
    mover.Enable(0);
    group.Enable(0);
    state := 2;
  2:
    IF mover.MCTOPLC.STD.State = MC_PLANAR_STATE.Enabled AND
    group.MCTOPLC_STD.State = MC_PLANAR_STATE.Enabled THEN
      state := 3;
    END_IF
  3:
    mover.AddToGroup(0,group);
    environment.AddToGroup(0,group);
    state := 4;
  4:
    IF mover.MCTOPLC.STD.GroupOID > 0 AND
    environment.MCTOPLC_STD. GroupOID > 0 THEN
      state := 5;
    END_IF
  5:
    target_position.SetValuesXY(100, 100);
    mover.MoveToPosition(feedback, target_position, 0, 0);
    state := 6;
END_CASE

Dieser Programmcode aktiviert den Mover und erstellt eine Environment von einer Kachel, auf der der Mover steht. Dann wird versucht, den Mover zur Position x=100 und y=100 zu fahren.

Befehl abschicken

7. Um den Befehl abzuschicken und das Feedback zu überwachen, müssen Sie die Objekte nach dem END_CASE zyklisch mit ihren Update-Methoden aufrufen:
mover.Update();
environment.Update();
group.Update();
feedback.Update();

Durch das Bauen der PLC wird ein Symbol des „PLC-Movers" erzeugt, welches anschließend mit der Mover-Instanz im MC-Projekt verknüpft werden kann.

1. Verwenden Sie zum Bauen den Pfad PLC > Untitled1 > Untitled1 Project > Build.
Beispiel „Planar Motion Komponenten: Kollision abwenden“ 4:
Anschließend kann der Planar-Mover im „MC Project“ (Doppelklick) mit dem Button Link To PLC… im Reiter Settings verknüpft werden.
Beispiel „Planar Motion Komponenten: Kollision abwenden“ 5:
Danach kann die Planar-Environment über die folgenden Dialogfenster im „MC Project“ verlinkt werden.
Beispiel „Planar Motion Komponenten: Kollision abwenden“ 6:
Beispiel „Planar Motion Komponenten: Kollision abwenden“ 7:
Die Gruppe wird analog verlinkt.

Projekt aktivieren und starten

1. Aktivieren Sie die Konfiguration über den Button in der Menüleiste Beispiel „Planar Motion Komponenten: Kollision abwenden“ 8:.
2. Versetzen Sie das TwinCAT-System in den Zustand „Run“ über den Button Beispiel „Planar Motion Komponenten: Kollision abwenden“ 9:.
3. Loggen Sie die PLC über den Button in der Menüleiste ein Beispiel „Planar Motion Komponenten: Kollision abwenden“ 10:.
4. Starten Sie die PLC über den Play-Button in der Menüleiste.

Der Mover steht am Ende des Zustandsautomaten (state=6) auf der gewünschten Position. Der Mover hat sich nicht bewegt, weil der Befehl abgelehnt wurde. Das Feedback zeigt einen Kollisionsfehler und in der ObjectInfo ist die Environment als Kollisionspartner angegeben.

Beispiel „Planar Motion Komponenten: Kollision abwenden“ 11: