Synchronisierte Bewegung mit einem Drehtisch
HINWEIS
Zum Durchführen dieses Anwendungsbeispiels ist das MOVIKIT® Robotics addon ConveyorTracking erforderlich.
Für die synchronisierte Bewegung mit einem Drehtisch (Rotary Table Tracking), werden wie beim "Conveyor Tracking" bewegbare USER-Koordinatensysteme verwendet.
Das Verwenden der Funktion erfolgt analog zu der im Kapitel Synchronisierte Bewegung mit einem Transportband (Conveyor Tracking) beschriebenen Vorgehensweise. Beachten Sie dabei jedoch folgende Unterschiede:
- In der Konfiguration muss folgender Typ ausgewählt werden:
stConfigRotaryTable.eUserCoordSysType :=
SEW_MK_Robotics.SEW_RobUserCs.SEW_IRobUserCs.
E_UserCoordSysType.Rotary;
- Das Positionssignal lrSetpointPosition ist die stetige Folge der Drehwinkel um die Z-Achse des USER-Koordinatensystems des Drehtisches in Grad. lrSetpointPosition sollte im Bereich [-180°, 180°[ liegen. Andere Werte werden automatisch auf diesen Bereich abgebildet.
- Der direkte Wechsel vom/zum RotaryTable-USER-Koordinatensystem ist nur von / zu BASE möglich.
Daraus ergibt sich folgender Beispiel-Code im IEC-Programm:
- Legen Sie eine ConveyorOrRotaryTable-Bausteininstanz und eine Konfigurationsvariable an. Verwenden Sie dafür z. B. den Deklarationsteil des Programms User_PRG.
fbRotaryTable :
SEW_MK_Robotics.SEW_RobUserCs.ConveyorOrRotaryTable;
stConfigRotaryTable :
SEW_MK_Robotics.SEW_RobUserCs.SEW_IRobUserCs.ST_Config;
- Nehmen Sie die Konfiguration und die Anbindung an den Roboter vor. Verwenden Sie dafür z. B. die Aktion User_PRG.Init. Ersetzen Sie ggf. in "Interface_MyRobot" und "HMI_MyRobot" den Namen "MyRobot" durch den Namen des Roboters in Ihrem MOVISUITE®-Projekt.
(* Typ *)
stConfigRotaryTable.eUserCoordSysType := SEW_MK_Robotics.
SEW_RobUserCs.SEW_IRobUserCs.E_UserCoordSysType.Rotary;
(* Nullpunkt des Drehtischs bzw. des USER-Koordinatensystems relativ zu BASE *)
stConfigRotaryTable.alrOrigin[1] := 200.0; // mm in X-Richtung
stConfigRotaryTable.alrOrigin[2] := 0.0; // mm in Y-Richtung
stConfigRotaryTable.alrOrigin[3] := 0.0; // mm in Z-Richtung
stConfigRotaryTable.alrOrigin[4] := 0.0; // Grad um Z-Achse
stConfigRotaryTable.alrOrigin[5] := 0.0; // Grad um Y-Achse
stConfigRotaryTable.alrOrigin[6] := 0.0; // Grad um X-Achse
(* Positive Drehrichtung des Drehtischs Z_negative, Z_positive (Default) *)
fbRotaryTable.eMotionDirection := SEW_MK_Robotics.
SEW_RobUserCs.SEW_IRobUserCs.E_CartesianDirection.Default;
(* Anbindung an den Roboter *)
fbRotaryTable.stConfig := stConfigRotaryTable;
Interface_MyRobot.LinkIUserCoordSys_Segment(fbRotaryTable);
HMI_MyRobot.fbSimu3D.AddUserCS(fbRotaryTable, 1);
xInitDone := (* xInitDone AND *) fbRotaryTable.Init();
- Weisen Sie den Positionsverlauf des USER-Koordinatensystems stetig in der Task HighPrio der Property fbRotaryTable.lrSetpointPosition zu. Verwenden Sie dafür bevorzugt die Aktion User_PRG.ReadActualValues.
- Beispiel: USER-Koordinatensystem wird mittels Sinus bewegt. Definieren Sie dafür z. B. eine Variable lrSinArg im Deklarationsteil des Programms User_PRG.
lrSinArg := lrSinArg + 0.0001;
fbRotaryTable.lrSetpointPosition :=
120.0(* Grad *) * SIN(lrSinArg);
Das SRL-Programm und die Anmerkungen hinsichtlich des Wechselns des Koordinatensystems sind die gleichen wie im Kapitel Synchronisierte Bewegung mit einem Transportband (Conveyor Tracking).