IF_ExternalPositionSource - WriteRefValues (Methode)

Übersicht

Typ

Methode

Verfügbar ab:

V2.12.1.0

Dieses Kapitel enthält Informationen zu folgenden Aspekten:

oAufgabenstellung

oBeschreibung

oSchnittstelle

oDiagnosemeldung

oImplementierungsbeispiel

Aufgabenstellung

Schreiben der Sollwerte für die konfigurierten Roboterkomponenten Kartesisch, Orientierung und Hilfsachsen.

Beschreibung

Diese Methode wird von der Roboterbibliothek in jedem Sercos-Zyklus aufgerufen, wenn der Roboter aktiviert wurde.

Mit der Methode WriteRefValues(…) können die Sollwerte für die Roboterkomponenten Kartesisch, Orientierung und Hilfsachsen berechnet und an den Roboter übergeben werden.

Die übergebenen Sollwerte werden dann an die konfigurierte Transformation zur Berechnung der Achspositionen des Roboters weitergeleitet. Die berechneten Achspositionen wiederum werden im selben Sercos-Zyklus an die Achsen übergeben.

Sollwerte können nur für konfigurierte und unterstützte Roboterkomponenten übergeben werden. Wenn ein Wert für eine nicht konfigurierte Roboterkomponente an den Roboter übergeben wird, gibt der Roboter eine Diagnosemeldung aus.

Die Diagnoseausgänge können zur Weiterleitung einer Ausnahme von dieser Methode an den Roboter verwendet werden. Die weitergeleitete Ausnahme wird vom FB_Robot gemeldet und die Roboterachsen werden über einen ControllerStop gestoppt.

Schnittstelle

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

POU-spezifischer Ausgang für die 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_stRefPositionTCP

PDL.ST_Vector3D

Sollposition des TCP.

q_stRefOrientationTCP

PDL.ST_Vector3D

Sollposition der Orientierungen.

q_etRefArmConfiguration

ET_ArmConfiguration

Konfiguration des Referenzarms für den Roboter.

q_alrRefPositionAuxAx

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

Sollposition der Hilfsachsen.

Diagnosemeldungen

q_etDiag

q_etDiagExt

Enumerationswert

Beschreibung

ExecutionAborted

AuxiliaryAxisNotConfigured

127

Die Hilfsachse ist nicht konfiguriert.

ExecutionAborted

ComponentNotConfigured

198

Die Komponente ist nicht konfiguriert.

ExecutionAborted

ArmConfigurationInvalid

200

Die Armkonfiguration ist ungültig.

ArmConfigurationInvalid

Enumerationsname:

ArmConfigurationInvalid

Enumerationswert:

200

Beschreibung:

Die Armkonfiguration ist ungültig.

Problem

Ursache

Lösung

Das Schreiben der Sollwerte für die konfigurierten Roboterkomponenten war nicht erfolgreich.

Ein Sollwert für die Armkonfiguration wurde an den Roboter übergeben. Der Roboter unterstützt die übergebene Armkonfiguration nicht bzw. unterstützt keine Armkonfiguration.

Sicherstellen, dass kein Sollwert für die Armkonfiguration an den Roboter übergeben wird, wenn der Roboter keine Armkonfiguration unterstützt, bzw. dass ein gültiger Sollwert für die Armkonfiguration an den Roboter übergeben wird, wenn dieser eine Armkonfiguration unterstützt.

AuxiliaryAxisNotConfigured

Enumerationsname:

AuxiliaryAxisNotConfigured

Enumerationswert:

127

Beschreibung:

Die Hilfsachse ist nicht konfiguriert.

Problem

Ursache

Lösung

Das Schreiben der Sollwerte für die konfigurierten Roboterkomponenten war nicht erfolgreich.

Ein Sollwert für eine nicht konfigurierte Hilfsachse wurde an den Roboter übergeben.

Sicherstellen, dass kein Sollwert für eine nicht konfigurierte Roboterkomponente an den Roboter übergeben wird.

ComponentNotConfigured

Enumerationsname:

ComponentNotConfigured

Enumerationswert:

198

Beschreibung:

Die Komponente ist nicht konfiguriert.

Problem

Ursache

Lösung

Das Schreiben der Sollwerte für die konfigurierten Roboterkomponenten war nicht erfolgreich.

Ein Sollwert für eine nicht konfigurierte kartesische Komponente oder Orientierung wurde an den Roboter übergeben.

Sicherstellen, dass kein Sollwert für eine nicht konfigurierte Roboterkomponente an den Roboter übergeben wird.

Implementierungsbeispiel

Deklaration:

METHOD WriteRefValues
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_stRefPositionTCP      : PDL.ST_Vector3D;
 q_stRefOrientationTCP   : PDL.ST_Vector3D;
 q_etRefArmConfiguration : ROB.ET_ArmConfiguration;
 q_alrRefPositionAuxAx   : ARRAY [ROB.ET_RobotComponent.AuxAx1..
                            ROB.ET_RobotComponent.AuxAxAll +
                            ROB.Gc_udiMaxNumberOfAuxiliaryAxes)]
                           OF LREAL;
END_VAR
VAR
 etAuxAx                 : ROB.ET_RobotComponent;
END_VAR

Implementierung:

// Implementation of the external position source.
// Handover the reference values of the configured robot components.
// Do not write outputs of not configured or not supported robot
   components.
//********************************************************************
// Reference values of the Tool Center Point
//********************************************************************

// q_stRefPositionTCP.lrX := ...;
// q_stRefPositionTCP.lrY := ...;
// q_stRefPositionTCP.lrZ := ...;

//********************************************************************
// Reference values of the Tool Center Point
//********************************************************************

// q_stRefOrientationTCP.lrX := ...;
// q_stRefOrientationTCP.lrY := ...;
// q_stRefOrientationTCP.lrZ := ...;

//********************************************************************
// Reference value of the arm configuration
//********************************************************************

// q_etRefArmConfiguration := ...;

//********************************************************************
// Reference values of the auxiliary axes
//********************************************************************
// FOR etAuxAx := ROB.ET_RobotComponent.AuxAx1 TO
// (ROB.ET_RobotComponent.AuxAxAll + ROB.Gc_udiMaxNumberOfAuxiliaryAxes)
   DO
//
//   q_alrRefPositionAuxAx[etAuxAx] := ...;
//
// END_FOR