Synchronisierte Bewegung mit einem Transportband (Conveyor Tracking)
HINWEIS
Zum Durchführen dieses Anwendungsbeispiels ist das MOVIKIT® Robotics addon ConveyorTracking erforderlich.
Für die synchronisierte Bewegung mit einem Transportband (Conveyor Tracking), werden bewegbare USER-Koordinatensysteme verwendet. Gehen Sie zum Verwenden der Grundfunktionalität wie folgt vor:
- Legen Sie eine ConveyorOrRotaryTable-Bausteininstanz und eine Konfiguration an. Verwenden Sie dafür z. B. den Deklarationsteil des Programms User_PRG.
fbConveyor :
SEW_MK_Robotics.ConveyorOrRotaryTable;
stConfigConveyor :
SEW_MK_Robotics.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_Robot" und "HMI_Robot" den Namen "Robot" durch den Namen des Roboters in Ihrem MOVISUITE®-Projekt.
(* Typ *)
stConfigConveyor.eUserCoordSysType := SEW_MK_Robotics.
SEW_RobUserCs.SEW_IRobUserCs.E_UserCoordSysType.Linear;
(* Nullpunkt des Transportbands bzw. des USER-Koordinatensystems relativ zu BASE *)
stConfigConveyor.alrOrigin[1] := 0.0; // mm in X-Richtung
stConfigConveyor.alrOrigin[2] := 100.0; // mm in Y-Richtung
stConfigConveyor.alrOrigin[3] := 0.0; // mm in Z-Richtung
stConfigConveyor.alrOrigin[4] := 30.0; // Grad um Z-Achse
stConfigConveyor.alrOrigin[5] := 0.0; // Grad um Y-Achse
stConfigConveyor.alrOrigin[6] := 0.0;// Grad um X-Achse
(* Positive Bewegungsrichtung des Transportbands im ggfs. verdrehten USER-Koordinatensystem *)
(*X_negative, X_positive (Default),
Y_negative, Y_positive,
Z_negative, Z_positive *)
fbConveyor.eMotionDirection := SEW_MK_Robotics.
SEW_RobUserCs.SEW_IRobUserCs.E_CartesianDirection.Default;
(* Anbindung an den Roboter *)
fbConveyor.stConfig := stConfigConveyor;
Interface_Robot.LinkIUserCoordSys_Segment(fbConveyor);
HMI_Robot.fbSimu3D.AddUserCS(fbConveyor, 1);
xInitDone := (* xInitDone AND *) fbConveyor.Init();
- Weisen Sie der Property fbConveyor.lrSetpointPosition den Positionsverlauf des USER-Koordinatensystems stetig in der Task HighPrio 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;
fbConveyor.lrSetpointPosition :=
500.0(*mm*)*SIN(lrSinArg);
- Stellen Sie das gewünschte Koordinatensystem im SRL-Programm jeweils vor dem Bewegungsbefehl ein.
Anmerkungen:
Das Positionssignal muss bereits mindestens 5 HighPrio-Zyklen stetig der Property fbConveyor.lrSetpointPosition zugewiesen worden sein, bevor der Wechsel in das USER-Koordinatensystem erfolgt. Entsprechend muss das Signal solange stetig zugewiesen werden, wie die Interpolation in dem Koordinatensystem stattfindet.
Wenn das Positionssignal für die Property fbConveyor.lrSetpointPosition von einer MultiMotion-Achse verwendet wird, darf es nicht von den Ausgängen in SEW_GVL.Interface_MultiMotionAxis ausgelesen werden, die diese nur im Zyklus der TaskMain aktualisiert werden. Weisen Sie stattdessen z. B. die Ausgangssignale aus SEW_GVL_Internal.MultiMotionAxis zyklisch in der TaskHighPrio der Property fbConveyor.lrSetpointPosition zu.
Wenn z. B. verrauschte Gebersignale verwendet werden sollen, sind diese applikativ zu glätten, bevor sie als stetiges Signal in der TaskHighPrio der Property fbConveyor.lrSetpointPosition zugewiesen werden.
In der aktuellen Version der Software ist der direkte Wechsel zwischen zwei verschiedenen, bewegbaren linearen USER-Koordinatensystemen möglich, wenn beide die gleiche Ausrichtung haben, d. h. alrOrigin[4..6] und eMotionDirection beider Koordinatensysteme identisch sind. Hierzu ist eine weitere ConveyorOrRotaryTable-Bausteininstanz fbConveyor2 erforderlich. Im SRL-Programm bleibt USER angewählt. Für den Wechsel wird vor dem gewünschten Bewegungsbefehl das neue USER-Koordinatensystem im entsprechenden CASE einer CallFunction an den Roboter angebunden. Siehe IEC-Funktionsaufruf für das SRL-Programm.
CASE uiCallIndex OF
1:Interface_Robot.LinkIUserCoordSys_Segment(fbConveyor);
HMI_Robot.fbSimu3D.AddUserCS(fbConveyor, 1);
CallF := TRUE;
2:Interface_Robot.LinkIUserCoordSys_Segment(fbConveyor2);
HMI_Robot.fbSimu3D.AddUserCS(fbConveyor2, 1);
CallF := TRUE;
Das Positionssignal des vorhergehenden USER-Koordinatensystems muss stetig zugewiesen werden, bis die Bewegung im neuen USER-Koordinatensystem erfolgt. Das ist der Fall, sobald sich der Wert in der Variablen SEW_GVL.Interface_MyRobot.Prg.OUT.uiNumberOfUserCoordSysChanges ändert ("MyRobot" entspricht dem vom Anwender in MOVISUITE® vergebenen Namen des Roboter-Knotens).
Das Koordinatensystem wird beim Herstellen des Grundzustands auf BASE eingestellt. Siehe Herstellen des Grundzustands.
In der aktuellen Version der Software sind die Verwaltung der auf dem Transportband bewegten Objekte sowie die Vermeidung eines Überlaufs eines Gebersignals applikativ zu realisieren.
Eine komplette, offene Automatisierungslösung für Conveyor Tracking inkl. Kameraanbindung und Lastaufteilung auf mehrere Roboter ist im "SEW Automation Framework" enthalten. Für weitere Informationen kontaktieren Sie SEW‑EURODRIVE.