IF_AdditionalTransformationAxes - Direct (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 Vorwärtstransformation für alle Achsen.

Beschreibung

Mit der Methode Direct() kann die Vorwärtstransformation für die zusätzliche anwenderdefi­nierte Transformation für alle Roboterachsen berechnet werden. Die Eingänge verweisen auf die aktuellen Positionen der Achsen.

G-SE-0066035.1.gif-high.gif

 

 

Wenn ein Wert ungleich Null für eine nicht konfigurierte Achse (q_alrPositionAxis[…]) oder Hilfsachse (q_alrPositionAuxAx[…]) 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_alrPositionAxis

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

Position der Roboterachsen

i_alrPositionAuxAx

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

Position 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_alrPositionAxis

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

Position der Roboterachsen

q_alrPositionAuxAx

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

Position 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 Direct()

Deklaration:

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

Implementierung:

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