IF_AdditionalTransformationAxes - Direct (Method)
Type: |
Method |
Available as of: |
V2.5.0.0 |
This chapter provides information on:
oTask
Calculating the forward transformation for all axes.
With the method Direct(), the forward transformation of the additional user-defined transformation for all robot axes can be calculated. The inputs represent the current positions of the axes.
When a value unequal to zero for an unconfigured axis (q_alrPositionAxis[…]) or auxiliary axis (q_alrPositionAuxAx[…]) is calculated and transferred to the robot, the robot returns a diagnostic message.
oIn case of axis, the diagnostic message ET_Diag.ExecutionAborted / ET_DiagExt.DriveNotConfigured is returned by the robot.
oIn case of auxiliary axis, the diagnostic message ET_Diag.ExecutionAborted / ET_DiagExt.AuxiliaryAxisNotConfigured is returned by the robot.
Input |
Data type |
Description |
---|---|---|
i_alrPositionAxis |
ARRAY [ET_RobotComponent.AxisA .. ET_RobotComponent.AxisAll +Gc_udiMaxNumberOfAxes] OF LREAL |
Position of robot axes |
i_alrPositionAuxAx |
ARRAY [ET_RobotComponent.AuxAx1.. ET_RobotComponent.AuxAxAll +Gc_udiMaxNumberOfAuxiliaryAxes] OF LREAL |
Position of auxiliary axes |
Output |
Data type |
Description |
---|---|---|
q_etDiag |
General library-independent statement on the diagnostic. A value not equal to ET_Diag.Ok corresponds to a diagnostic message. |
|
q_etDiagExt |
POU-specific output on the diagnostic. q_etDiag = ET_Diag.Ok -> Status message q_etDiag <> ET_Diag.Ok -> Diagnostic message |
|
q_sMsg |
STRING[80] |
Event-triggered message that gives additional information on the diagnostic state. |
q_alrPositionAxis |
ARRAY [ET_RobotComponent.AxisA .. ET_RobotComponent.AxisAll +Gc_udiMaxNumberOfAxes] OF LREAL |
Position of robot axes |
q_alrPositionAuxAx |
ARRAY [ET_RobotComponent.AuxAx1.. ET_RobotComponent.AuxAxAll +Gc_udiMaxNumberOfAuxiliaryAxes] OF LREAL |
Position of auxiliary axes |
q_etDiag |
q_etDiagExt |
Enumeration value |
Description |
---|---|---|---|
ExecutionAborted |
65 |
The drive is not configured. |
|
ExecutionAborted |
127 |
The auxiliary axis is not configured. |
Enumeration name: |
AuxiliaryAxisNotConfigured |
Enumeration value: |
127 |
Description: |
The auxiliary axis is not configured. |
Issue |
Cause |
Solution |
---|---|---|
Using additional transformation axes was not successful. |
A position value unequal to zero of an unconfigured auxiliary axis is calculated and transferred to the robot. |
Ensure that the position value zero is transferred to the not configured auxiliary axis. |
Enumeration name: |
DriveNotConfigured |
Enumeration value: |
65 |
Description: |
The drive is not configured. |
Issue |
Cause |
Solution |
---|---|---|
Using additional transformation axes was not successful. |
A position value unequal to zero of an unconfigured robot axis is calculated and transferred to the robot. |
Ensure that the position value zero is transferred to the not configured robot axes. |
Implementation Example of Method Direct()
Declaration:
METHOD Direct
VAR_INPUT
i_alrPositionAxis : ARRAY [ROB.ET_RobotComponent.AxisA..
(ROB.ET_RobotComponent.AxisAll +
ROB.Gc_udiMaxNumberOfAxes)] OF LREAL;
i_alrPositionAuxAx : 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_alrPositionAxis : ARRAY [ROB.ET_RobotComponent.AxisA..
(ROB.ET_RobotComponent.AxisAll +
ROB.Gc_udiMaxNumberOfAxes)] OF LREAL;
q_alrPositionAuxAx : ARRAY [ROB.ET_RobotComponent.AuxAx1..
(ROB.ET_RobotComponent.AuxAxAll +
ROB.Gc_udiMaxNumberOfAuxiliaryAxes)] OF LREAL;
END_VAR
Implementation:
// Copy inputs to outputs first
q_alrPositionAxis := i_alrPositionAxis;
q_alrPositionAuxAx := i_alrPositionAuxAx;
// Implement additional transformation for robot axes here
// For example:
// q_alrPositionAxis[ROB.ET_RobotComponent.AxisB] :=
i_alrPositionAxis [ROB.ET_RobotComponent.AxisB] - 90.0;
// q_alrPositionAuxAx[ROB.ET_RobotComponent.AuxAx3] :=
i_alrPositionAuxAx[ROB.ET_RobotComponent.AuxAx1] +
i_alrPositionAuxAx[ROB.ET_RobotComponent.AuxAx2];