IF_AdditionalTransformationAxes - Inverse (Methode)
Typ: |
Methode |
Verfügbar ab: |
V2.5.0.0 |
Dieses Kapitel enthält Informationen zu folgenden Aspekten:
Berechnen der inversen Transformation für alle Achsen.
Mit der Methode Inverse() kann die inverse Transformation für die zusätzliche anwenderdefinierte Transformation für alle Roboterachsen berechnet werden. Die Eingänge verweisen auf die Sollpositionen der Achsen.
Wenn ein Wert ungleich Null für eine nicht konfigurierte Achse (q_alrRefPositionAxis[…]) oder Hilfsachse (q_alrRefPositionAuxAx[…]) berechnet und an den Roboter übergeben wird, gibt der Roboter eine Diagnosemeldung zurück.
oFür eine Achse wird die Diagnosemeldung ET_Diag.ExecutionAborted / ET_DiagExt.DriveNotConfigured vom Roboter zurückgegeben.
oFür eine Hilfsachse wird die Diagnosemeldung ET_Diag.ExecutionAborted / ET_DiagExt.AuxiliaryAxisNotConfigured vom Roboter zurückgegeben.
Eingang |
Datentyp |
Beschreibung |
---|---|---|
i_alrRefPositionAxis |
ARRAY [ET_RobotComponent.AxisA .. ET_RobotComponent.AxisAll +Gc_udiMaxNumberOfAxes] OF LREAL |
Sollposition der Roboterachsen |
i_alrRefPositionAuxAx |
ARRAY [ET_RobotComponent.AuxAx1.. ET_RobotComponent.AuxAxAll +Gc_udiMaxNumberOfAuxiliaryAxes] OF LREAL |
Sollposition der Hilfsachsen |
Ausgang |
Datentyp |
Beschreibung |
---|---|---|
q_etDiag |
Allgemeingültige, bibliotheksunabhängige Aussage zur Diagnose. Ein Wert ungleich ET_Diag.Ok entspricht einer Diagnosemeldung. |
|
q_etDiagExt |
Bausteinspezifischer Ausgang zur 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_alrRefPositionAxis |
ARRAY [ET_RobotComponent.AxisA .. ET_RobotComponent.AxisAll +Gc_udiMaxNumberOfAxes] OF LREAL |
Sollposition der Roboterachsen |
q_alrRefPositionAuxAx |
ARRAY [ET_RobotComponent.AuxAx1.. ET_RobotComponent.AuxAxAll +Gc_udiMaxNumberOfAuxiliaryAxes] OF LREAL |
Sollposition der Hilfsachsen |
q_etDiag |
q_etDiagExt |
Enumerationswert |
Beschreibung |
---|---|---|---|
ExecutionAborted |
65 |
Der Antrieb ist nicht konfiguriert. |
|
ExecutionAborted |
127 |
Die Hilfsachse ist nicht konfiguriert. |
Enumerationsname: |
AuxiliaryAxisNotConfigured |
Enumerationswert: |
127 |
Beschreibung: |
Die Hilfsachse ist nicht konfiguriert. |
Problem |
Ursache |
Lösung |
---|---|---|
Die Verwendung der zusätzlichen Transformationsachsen war nicht erfolgreich. |
Ein Positionswert ungleich Null wurde für eine nicht konfigurierte Hilfsachse berechnet und an den Roboter übergeben. |
Sicherstellen, dass ein Positionswert gleich Null für eine nicht konfigurierte Hilfsachse übergeben wird. |
Enumerationsname: |
DriveNotConfigured |
Enumerationswert: |
65 |
Beschreibung: |
Der Antrieb ist nicht konfiguriert. |
Problem |
Ursache |
Lösung |
---|---|---|
Die Verwendung der zusätzlichen Transformationsachsen war nicht erfolgreich. |
Ein Positionswert ungleich Null wurde für eine nicht konfigurierte Roboterachse berechnet und an den Roboter übergeben. |
Sicherstellen, dass ein Positionswert gleich Null für eine nicht konfigurierte Roboterachse übergeben wird. |
Implementierungsbeispiel für die Methode Inverse()
Deklaration:
METHOD Inverse
VAR_INPUT
i_alrRefPositionAxis : ARRAY [ROB.ET_RobotComponent.AxisA..
(ROB.ET_RobotComponent.AxisAll +
ROB.Gc_udiMaxNumberOfAxes)] OF LREAL;
i_alrRefPositionAuxAx : ARRAY [ROB.ET_RobotComponent.AuxAx1..
(ROB.ET_RobotComponent.AuxAxAll +
ROB.Gc_udiMaxNumberOfAuxiliaryAxes)] OF LREAL;
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_alrRefPositionAxis : ARRAY [ROB.ET_RobotComponent.AxisA..
(ROB.ET_RobotComponent.AxisAll +
ROB.Gc_udiMaxNumberOfAxes)] OF LREAL;
q_alrRefPositionAuxAx : ARRAY [ROB.ET_RobotComponent.AuxAx1..
(ROB.ET_RobotComponent.AuxAxAll +
ROB.Gc_udiMaxNumberOfAuxiliaryAxes)] OF LREAL;
END_VAR
Implementierung:
// Copy inputs to outputs first
q_alrRefPositionAxis := i_alrPositionAxis;
q_alrRefPositionAuxAx := i_alrPositionAuxAx;
// Implement additional transformation for robot axes here
// For example:
// q_alrRefPositionAxis[ROB.ET_RobotComponent.AxisB] :=
i_alrRefPositionAxis [ROB.ET_RobotComponent.AxisB] + 90.0;
// q_alrRefPositionAuxAx[ROB.ET_RobotComponent.AuxAx3] :=
i_alrRefPositionAuxAx[ROB.ET_RobotComponent.AuxAx1] -
i_alrRefPositionAuxAx[ROB.ET_RobotComponent.AuxAx2];