FC_ReadDriveEncoder

 

FC_ReadDriveEncoder - Allgemeine Informationen

Übersicht

Typ

Funktion

Verfügbar ab:

V1.0.3.0

Versionen:

Aktuelle Version

HINWEIS: Die Elemente FB_WriteDriveEncoder und FC_ReadDriveEncoder sind veraltet.

Verwenden Sie stattdessen die Elemente FB_HomeAbs und FB_HomeSetPos mit dem Modus PDL.ET_HomeSetPosMode.RestoreFromAxisEncoder.

Aufgabe

Die Position des Motorgebers soll gelesen werden.

Beschreibung

Die Funktion liest die Geberposition der Achse und rekonstruiert die Position abhängig von i_lrHomePos, i_lrAbsEncOffset, i_lrUserPeriod und der Drehrichtung der Achse. Dabei müssen die gleichen Parameter benutzt werden wie beim Setzen der Position mit dem Funktions­baustein FB_WriteDriveEncoder. In der Funktion wird ein SetPos aufgerufen.

Die Funktion muss einmal bei der Initialisierung des Programms zur Referenzierung der Achsen aufgerufen werden!

Schnittstelle

Eingang

Datentyp

Beschreibung

i_ifDrive

IF_Drive

Eingang für die zu kontrollierende Achse

i_lrHomePos

LREAL

Wert, wie beim Setzen der Position mit dem Funktionsbaustein FB_WriteDriveEncoder.

i_lrAbsEncOffset

LREAL

Wert, wie beim Setzen der Position mit dem Funktionsbaustein FB_WriteDriveEncoder.

i_lrUserPeriod

LREAL

Wert, wie beim Setzen der Position mit dem Funktionsbaustein FB_WriteDriveEncoder.

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, diagnosebezogener Ausgang.

q_etDiag = ET_Diag.Ok -> Statusmeldung

q_etDiag <> ET_Diag.Ok -> Diagnosemeldung

q_sMsg

STRING[80]

Ereignisabhängige Meldung mit detaillierten Informationen zum Diagnosezustand.

Diagnosemeldungen

q_etDiag

q_etDiagExt

Enumerationswert

Beschreibung

OK

Ok

0

OK

DriveConditionInvalid

DriveEncoderInvalid

175

Der Geber des Antriebs ist nicht gültig.

InputParameterInvalid

AbsEncOffsetRange

178

AbsEncOffset ist außerhalb des gültigen Bereichs.

InputParameterInvalid

DriveInvalid

3

Verbundener Antrieb ist ungültig.

InputParameterInvalid

UserPeriodRange

177

UserPeriod ist außerhalb des gültigen Bereichs.

UnexpectedProgramBehavior

UnexpectedFeedback

1

Es ist ein unbeabsichtigter Fehler während der Ausführung aufgetreten.

AbsEncOffsetRange

Enumerationsname:

AbsEncOffsetRange

Enumerationswert:

178

Beschreibung:

AbsEncOffset ist außerhalb des gültigen Bereichs.

Problem

Ursache

Lösung

-

Am Eingang i_lrAbsEncOffset wurde eine Zahl <= 0 bzw. größer als die Geberperiode übergeben.

Es muss für i_lrAbsEncOffset gelten: 0 < i_lrAbsEncOffset < Maximal möglicher Wert von Dirve.EncoderPosition.

Zulässiger Wertebereich für i_lrAbsEncOffset, siehe Ausgang q_sMsg von FC_ReadDriveEncoder.

DriveEncoderInvalid

Enumerationsname:

DriveEncoderInvalid

Enumerationswert:

175

Beschreibung:

Der Geber des Antriebs ist nicht gültig.

Problem

Ursache

Lösung

-

Der Geber der Achse wird nicht unterstützt.

Benutzen Sie eine Achse mit einem anderen Geber.

DriveInvalid

Enumerationsname:

DriveInvalid

Enumerationswert:

3

Beschreibung:

Verbundener Antrieb ist ungültig.

Problem

Ursache

Lösung

-

An den Eingang i_ifDrive wurde kein Antrieb angelegt.

Dem Eingang i_ifDrive muss ein gültiger Antrieb übergeben werden.

-

Der angeschlossene Antrieb unterstützt nicht alle nötigen Funktionen.

Entnehmen Sie dem Ausgang q_sMsg, welche Funktionen der Antrieb nicht unterstützt.

Verwenden Sie einen Antrieb, der alle nötigen Funktionen unterstützt.

Ok

Enumerationsname:

Ok

Enumerationswert:

0

Beschreibung:

OK

Die Position wurde erfolgreich gelesen.

UnexpectedFeedback

Enumerationsname:

UnexpectedFeedback

Enumerationswert:

1

Beschreibung:

Es ist ein unbeabsichtigter Fehler während der Ausführung aufgetreten.

Problem

Ursache

Lösung

-

Es ist ein Fehler in der internen Abarbeitung aufgetreten.

Bitte informieren Sie das Supportteam über diesen Fehler.

UserPeriodRange

Enumerationsname:

UserPeriodRange

Enumerationswert:

177

Beschreibung:

UserPeriod ist außerhalb des gültigen Bereichs.

Problem

Ursache

Lösung

-

Der Eingang i_lrUserPeriod ist negativ.

Für den Eingang i_lrUserPeriod muss ein positiver Wert oder null angegeben werden.

-

Der Eingang i_lrUserPeriod passt nicht in die Geberperiode.

Belegen Sie den Eingang i_lrUserPeriod mit null, um keinen Offset zu berücksichtigen.

Der Eingang i_lrUserPeriod muss so gewählt werden, dass er die folgende Formel erfüllt.

ABS(lrEncoderPeriode/i_lrUserPeriod - TRUNC_INT(lrEncoderPeriode / i_lrUserPeriod)) = 0

wobei gilt:

lrEncoderPeriode := EncoderRange * FeedConstant * DINT_TO_LREAL(GearIn) / DINT_TO_LREAL(GearOut)

EncoderRange, FeedConstant, GearIn und GearOut sind Parameter der Achse i_ifDrive.