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_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 *)
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_MyRobot.LinkIUserCoordSys_Segment(fbConveyor);
HMI_MyRobot.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.HighPrio oder 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 Zyklen der TaskHighPrio 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, da 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.
Für den direkten Wechsel zwischen zwei verschiedenen, bewegbaren linearen USER-Koordinatensystemen 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_MyRobot.LinkIUserCoordSys_Segment(fbConveyor);
HMI_MyRobot.fbSimu3D.AddUserCS(fbConveyor, 1);
CallF := TRUE;
2:Interface_MyRobot.LinkIUserCoordSys_Segment(fbConveyor2);
HMI_MyRobot.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.
Wird ein Programm im bewegten Koordinatensystem z. B. pausiert oder gestoppt, so hält der Roboter im bewegten Koordinatensystem an, bewegt sich dann also mit dem Koordinatensystem mit. Bei Verletzung der Software-Endschalter wird ein Fehler ausgelöst, infolge dessen zunächst ein bahntreuer Nothalt und anschließend ein achsweiser Nothalt ausgeführt wird, so dass es zum Stillstand der Achsen kommt. Hierzu dürfen die Software-Endschalter jedoch nicht deaktiviert sein ("Disable SWLS", SoftwareLimitSwitch.IN.xDisable). Wird die Freigabe weggenommen, wird der Roboter zunächst bahntreu im aktuellen Koordinatensystem und anschließend achsweise gestoppt, sodass die Achsen auch bei vorhergehender Interpolation in einem bewegten Koordinatensystem zum Stillstand kommen.
Das Umschalten des Koordinatensystems, also der Start der Synchronisation auf das neue Koordinatensystem, erfolgt bereits nach halber Strecke zum Eintritt in den Überschleifbereich. Das heißt, die Interpolation erfolgt mindestens auf der halben Strecke exakt im bisherigen Koordinatensystem. Die Umschaltung des Koordinatensystems erfolgt somit etwas vor dem Eintritt in das Bahnsegment, bei dem das neue Koordinatensystem angegeben ist. Die erfolgte Umschaltung wird in der Variable SEW_GVL.Interface_MyRobot.Prg.OUT.uiNumberOfUserCoordSysChanges angezeigt.
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.







