IF_AdditionalTransformationAxes - Inverse (Method)

Overview

Type:

Method

Available as of:

V2.5.0.0

This chapter provides information on:

Task

Calculating the inverse transformation for all axes.

Description

With the method Inverse(), the inverse transformation of the additional user-defined transformation for all robot axes can be calculated. The inputs represent the reference positions of the axes.

When a value unequal to zero for an unconfigured axis (q_alrRefPositionAxis[…]) or auxiliary axis (q_alrRefPositionAuxAx[…]) is calculated and transferred to the robot, the robot returns a diagnostic message.

  • In case of axis, the diagnostic message ET_Diag.ExecutionAborted / ET_DiagExt.DriveNotConfigured is returned by the robot.

  • In case of auxiliary axis, the diagnostic message ET_Diag.ExecutionAborted / ET_DiagExt.AuxiliaryAxisNotConfigured is returned by the robot.

Interface

Input

Data type

Description

i_alrRefPositionAxis

ARRAY [ET_RobotComponent.AxisA .. ET_RobotComponent.AxisAll +Gc_udiMaxNumberOfAxes] OF LREAL

Reference position of robot axes

i_alrRefPositionAuxAx

ARRAY [ET_RobotComponent.AuxAx1.. ET_RobotComponent.AuxAxAll +Gc_udiMaxNumberOfAuxiliaryAxes] OF LREAL

Reference position of auxiliary axes

Output

Data type

Description

q_etDiag

GD.ET_Diag

General library-independent statement on the diagnostic.

A value not equal to ET_Diag.Ok corresponds to a diagnostic message.

q_etDiagExt

ET_DiagExt

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_alrRefPositionAxis

ARRAY [ET_RobotComponent.AxisA .. ET_RobotComponent.AxisAll +Gc_udiMaxNumberOfAxes] OF LREAL

Reference position of robot axes

q_alrRefPositionAuxAx

ARRAY [ET_RobotComponent.AuxAx1.. ET_RobotComponent.AuxAxAll +Gc_udiMaxNumberOfAuxiliaryAxes] OF LREAL

Reference position of auxiliary axes

Diagnostic Messages

q_etDiag

q_etDiagExt

Enumeration value

Description

ExecutionAborted

DriveNotConfigured

65

The drive is not configured.

ExecutionAborted

AuxiliaryAxisNotConfigured

127

The auxiliary axis is not configured.

AuxiliaryAxisNotConfigured

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.

DriveNotConfigured

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 Inverse()

Declaration:

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

Implementation:

// 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];