FC_ReadDriveEncoder - Allgemeine Informationen
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.
Die Position des Motorgebers soll gelesen werden.
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 Funktionsbaustein FB_WriteDriveEncoder. In der Funktion wird ein SetPos aufgerufen.
Die Funktion muss einmal bei der Initialisierung des Programms zur Referenzierung der Achsen aufgerufen werden!
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 |
Allgemeingültige, bibliotheksunabhängige Aussage zur Diagnose. Ein Wert ungleich ET_Diag.Ok entspricht einer Diagnosemeldung. |
|
q_etDiagExt |
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. |
q_etDiag |
q_etDiagExt |
Enumerationswert |
Beschreibung |
---|---|---|---|
OK |
0 |
OK |
|
DriveConditionInvalid |
175 |
Der Geber des Antriebs ist nicht gültig. |
|
InputParameterInvalid |
178 |
AbsEncOffset ist außerhalb des gültigen Bereichs. |
|
InputParameterInvalid |
3 |
Verbundener Antrieb ist ungültig. |
|
InputParameterInvalid |
177 |
UserPeriod ist außerhalb des gültigen Bereichs. |
|
UnexpectedProgramBehavior |
1 |
Es ist ein unbeabsichtigter Fehler während der Ausführung aufgetreten. |
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. |
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. |
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. |
Enumerationsname: |
Ok |
Enumerationswert: |
0 |
Beschreibung: |
OK |
Die Position wurde erfolgreich gelesen.
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. |
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. |