Besonderheiten bei der Steuerung eines Drehtischs durch den Roboter

Ein Drehtisch kann optional durch den Roboter gesteuert werden, sodass der jeweils im USER-Koordinatensystem anzufahrende Bahnpunkt in der ZX-Ebene des BASE-Koordinatensystems bei Y = 0 liegt. So lassen sich die Freiheitsgrade des Roboters um die Bewegung in Y-Richtung erweitern. Siehe dazu auch Kapitel Steuerung einer Transporteinrichtung durch den Roboter. Im SRL-Programm muss hierzu das Koordinatensystem "USER_ControlledByRobot" eingestellt werden.

Der Beispiel IEC-Code im Kapitel Synchronisierte Bewegung mit einem Drehtisch ist gültig mit der Ausnahme, dass der Positionsverlauf nicht dem fbRotaryTable übergeben wird. Stattdessen werden die Setpoints aus der Property fbRotaryTable.lrSetpointPosition ausgelesen und für die Ansteuerung einer MultiMotion-Tracking-Achse verwendet.

(* Setpoints to MuMo tracking axis, [-180°, 180°[ *)

lrSetpointForMuMoTrackingAxis :=

fbRotaryTable.lrSetpointPosition;

Für eine Vorpositionierung der Drehtischs kann die Methode AdjustToPoseWithProfile() des Funktionsbausteins ConveyorOrRotaryTable verwendet werden. Während der Positionierung darf im SRL-Programm für diesen Drehtisch nicht das Koordinatensystem "USER_ControlledByRobot" eingestellt sein. Der Roboter muss sich während der Positionierung z. B. in "BASE" befinden. Führen Sie den folgenden Beispielcode z. B. in der Task User_PRG.HighPrio aus.

Die Positionierung des Drehtischs erfolgt derart, dass der Punkt mit den Koordinaten X = alrPose[1], Y = alrPose[2] im USER-Koordinatensystem nach erfolgter Positionierung in BASE-Koordinaten den Koordinatenwert Y = 0 hat und zwischen Roboterbasis und dem Mittelpunkt des Drehtischs liegt. Die Positionierung erfolgt auf dem kürzesten Weg. Die Positionierung startet bei steigender Flanke von xStart. Die Eingangsvariable muss bis zum Ende der Positionierung "TRUE" bleiben und muss danach mit "FALSE" aufgerufen werden, sobald wieder USER_ControlledByRobot eingestellt wird. Der Baustein gibt "TRUE" zurück, wenn die Positionierung komplett ausgeführt ist.

In dem Beispiel werden Roboter-Posevariablen für alrPose verwendet sowie Roboter-Boolvariablen für xStart und den Rückgabewert. So ist ein direkter Handshake mit dem SRL-Programm möglich.

alrPose[1] :=

SEW_GVL.Interface_Robot.PrgVar.astPoseValues[21].arKinDim[1];

alrPose[2] :=

SEW_GVL.Interface_Robot.PrgVar.astPoseValues[21].arKinDim[2];

SEW_GVL.Interface_Robot.PrgVar.axBoolValues[2] :=

fbRotaryTable.AdjustToPoseWithProfile(

   xFeedEnable := TRUE,

   xRapidStop := xRapidStop_RotaryTable,

   (* Schnellstopp, wenn TRUE *)

   lrVelocity := 100, // [°/s], > 0

   lrAcceleration := 100, // [°/s2], > 0

   lrJerk := 1000, // [°/s3], > 0

   lrRapidDeceleration := 1000, // >= lrAcceleration

   lrRapidJerk := 10000, // >= lrJerk

   xStart := SEW_GVL.Interface_Robot.PrgVar.axBoolValues[1],

   alrPose := alrPose (* ARRAY[1..6] OF LREAL *));

Bei der Erstellung der Applikation muss außerdem auf folgende Eigenschaften geachtet werden:

  • Ein Wechsel von/zu dem USER-Koordinatensystem eines Drehtischs ist nur über "BASE" möglich.
  • Der Drehtisch wird automatisch immer so ausgerichtet, dass sich die anzufahrende Position auf der dem Roboter zugewandten Seite des Drehtischs befindet.
  • Das Durchfahren des Mittelpunkts des Drehtischs verursacht einen Fehler, da dies im Allgemeinen zu sehr schnellen Bewegungen des Drehtischs führen würde.
  • Für den Wechsel in das oder aus dem USER-Koordinatensystem muss sich der Drehtisch im Stillstand befinden, wenn der Roboter in Y-Richtung keine Ausgleichbewegung ausführen kann.
  • Die Funktion "BackToPath" funktioniert mit der aktuellen Version der Software nicht, da der Drehtisch nicht automatisch in die passende Stellung zurückpositioniert wird, um die Bahn stetig fortsetzen zu können.