IF_AdditionalTransformationTCP - Direct (Methode)
Typ |
Methode |
Verfügbar ab: |
V2.6.1.0 |
Dieses Kapitel enthält Informationen zu folgenden Aspekten:
Berechnen der Vorwärtstransformation für die zusätzliche anwenderdefinierte Transformation für den TCP (Tool Center Point).
Mit der Methode Direct() kann die Vorwärtstransformation für die zusätzliche anwenderdefinierte Transformation für den TCP (Tool Center Point) berechnet werden. Die Eingänge verweisen auf die aktuellen Positionen des TCP und der Hilfsachsen.
Wenn ein Wert ungleich Null für eine nicht konfigurierte TCP-Komponente (q_stPositionTCP.lrX / lrY / lrZ) berechnet und an den Roboter übergeben wird, gibt der Roboter die Diagnosemeldung ET_Diag.ExecutionAborted / ET_DiagExt.ComponentNotConfigured zurück.
Wenn AdditionalTransformationAxes(…) ebenfalls konfiguriert wird, sieht der Datenfluss aus wie nachstehend aufgezeigt.
Eingang |
Datentyp |
Beschreibung |
---|---|---|
i_stPositionTCP |
PDL.ST_Vector3D |
Position des TCP. |
i_alrPositionAuxAx |
ARRAY [ET_RobotComponent.AuxAx1 .. ET_RobotComponent.AuxAxAll + Gc_udiMaxNumberOfAuxiliaryAxes] OF LREAL |
Position der Hilfsachsen. |
i_xChange |
BOOL |
TRUE: Es wurde eine Änderung des zusätzlichen Transformations-TCP angefordert. Die Änderung muss gleichzeitig für die direkte und die inverse Transformation durchgeführt werden. FALSE: Es wurde keine Änderung des zusätzlichen Transformations-TCP angefordert. |
Ausgang |
Datentyp |
Beschreibung |
---|---|---|
q_etDiag |
Allgemeingültige, bibliotheksunabhängige Aussage zur Diagnose. Ein Wert ungleich ET_Diag.Ok entspricht einer Diagnosemeldung. |
|
q_etDiagExt |
POU-spezifischer Ausgang für die Diagnose. q_etDiag = ET_Diag.Ok -> Statusmeldung q_etDiag <> ET_Diag.Ok -> Diagnosemeldung |
|
q_sMsg |
STRING[80] |
Ereignisabhängige Meldung, die zusätzliche Informationen über den Diagnosezustand gibt. |
q_stPositionTCP |
PDL.ST_Vector3D |
Position des TCP. |
Implementierungsbeispiel für die Methode Direct()
Deklaration:
METHOD Direct
VAR_INPUT
i_stPositionTCP : PDL.ST_Vector3D..
i_alrPositionAuxAx : ARRAY [ROB.ET_RobotComponent.AuxAx1..
(ROB.ET_RobotComponent.AuxAxAll +
ROB.Gc_udiMaxNumberOfAuxiliaryAxes)] OF LREAL;
i_xChange : BOOL;
END_VAR
VAR_OUTPUT
q_etDiag : GD.ET_Diag := GD.ET_Diag.Ok;
q_etDiagExt : ROB.ET_DiagExt := ROB.ET_DiagExt.Ok;
q_sMsg : STRING[80];
q_stPositionTCP : PDL.ST_Vector3D;
END_VAR
Implementierung:
// Copy inputs to outputs first
q_stPositionTCP := i_stPositionTCP;
// Implement additional transformation for robot axes here
// For example:
// q_stPositionTCP.lrZ := i_stPositionTCP.lrZ - 50.0;