Vermessung eines Koordinatensystems
Sie können den Funktionsbaustein SEW_MK_Robotics.SEW_RobUserCs.CoordSysMeasurement dazu verwenden, ein Koordinatensystem zu vermessen, z. B. die Position und Orientierung eines Werkstücks oder eines Transportbands im gewünschten Bezugskoordinatensystem.
Dazu müssen 3 Punkte des zu vermessenden Koordinatensystems aus Sicht des Bezugskoordinatensystems (z. B. BASE) an den Eingangsvariablen Position_1/2/3 angelegt werden.
Bei diesen Punkten handelt es sich je nach eingestellter Messmethode (Eingangsvariable eCoordSysMeasurementType) entweder um...
- den Ursprung (Eingangsvariable alrPosition_1),
einen Punkt auf der positiven X-Achse des zu vermessenden Koordinatensystems (Eingangsvariable alrPosition_2) sowie
einen Punkt in der XY-Ebene mit positiver Y-Koordinate (Eingangsvariable alrPosition_3) des zu vermessenden Koordinatensystems - (Messmethode P1_Origin_P2_OnXAxis_Xpositive_P3_InXYplane_Ypositive)
oder - einen Punkt auf der X-Achse des zu vermessenden Koordinatensystems (Eingangsvariable alrPosition_1),
einen anderer Punkt auf der X-Achse mit größerem Wert der X-Koordinate (Eingangsvariable alrPosition_2) und
einen Punkt auf der Y-Achse mit positiver Y-Koordinate (Eingangsvariable alrPosition_3) - (Messmethode P1_OnXAxis_P2_OnXAxis_XGreaterThanP1_P3_OnYAxis_Ypositive)
Die 3 einzugebenden Punkte können Sie z. B. dadurch bestimmen, dass Sie den TCP (z. B. mit einer Mess-Spitze) im Tippbetrieb zu den 3 Punkten verfahren oder automatisiert mittels TouchProbeMeasure ermitteln. Die Ausgangsvariable Interface_MyRobot.Basic.OUT.SetpointPose.alrBase oder die für die gemessene TouchProbe-Position parametrierte SRL-Variable Interface_MyRobot.PrgVar.astPoseValues[n] kann direkt an den Eingang Position_1/2/3 des Funktionsbausteins CoordSysMeasurement angelegt werden.
Die Transformation wird bei Aufruf der Methode CoordSysMeasurement.ComputeTransform berechnet und bei fehlerfreier Ausführung in den Ausgangsvariablen alrTransformVector sowie alrTransformFrame ausgegeben.
Die 3 einzugebenden Punkte müssen sich in der XY-Ebene des zu vermessenden Koordinatensystems befinden. Das zu vermessende Koordinatensystem kann dabei gegenüber dem Bezugskoordinatensystem beliebig geneigt oder verdreht sein.
Wenn die 3 einzugebenden Punkte in der XY-Ebene des zu vermessenden Koordinatensystems nicht angefahren werden können, da der Roboter z. B. in Y-Richtung nicht bewegbar ist, dann rotieren Sie das zu vermessende Koordinatensystem zunächst virtuell, also gedanklich zum Zwecke der Vermessung derart, dass die 3 Punkte in der XY-Ebene anfahrbar sind. Das heißt, Sie legen die X- und Y-Koordinatenachsen des zu vermessenden Koordinatensystems in die Ebene, in welcher der Roboter verfahren werden kann. Geben Sie zusätzlich in der Eingangsvariablen alrAdditionalTransform die erforderliche Rotation ein, um vom virtuell platzierten Koordinatensystem zum gewünschten Koordinatensystem zu transformieren, welches dann nach Ausführung der Methode ComputeTransform in der Variablen alrTransformVector ausgegeben wird.
Um einen Fehler des Funktionsbausteins über den Roboter zurücksetzen zu können, verlinken Sie ihn mit dem Roboter wie folgt z. B. in der Aktion User_PRG.Init:
xInitDone := (* xInitDone AND *)
fbCoordSysMeasurement.LinkISuperordinatedFB(SEW_GVL_Internal.MyRobot);








