IF_AdditionalTransformationAxes - Inverse (Methode)

Übersicht

Typ:

Methode

Verfügbar ab:

V2.5.0.0

Dieses Kapitel enthält Informationen zu folgenden Aspekten:

oAufgabenstellung

oBeschreibung

oSchnittstelle

oDiagnosemeldungen

oBeispiel

Aufgabenstellung

Berechnen der inversen Transformation für alle Achsen.

Beschreibung

Mit der Methode Inverse() kann die inverse Transformation für die zusätzliche anwenderdefi­nierte Transformation für alle Roboterachsen berechnet werden. Die Eingänge verweisen auf die Sollpositionen der Achsen.

G-SE-0066034.1.gif-high.gif

 

 

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.

Schnittstelle

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

GD.ET_Diag

Allgemeingültige, bibliotheksunabhängige Aussage zur Diagnose.

Ein Wert ungleich ET_Diag.Ok entspricht einer Diagnosemeldung.

q_etDiagExt

ET_DiagExt

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

Diagnosemeldungen

q_etDiag

q_etDiagExt

Enumerationswert

Beschreibung

ExecutionAborted

DriveNotConfigured

65

Der Antrieb ist nicht konfiguriert.

ExecutionAborted

AuxiliaryAxisNotConfigured

127

Die Hilfsachse ist nicht konfiguriert.

AuxiliaryAxisNotConfigured

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.

DriveNotConfigured

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