FB_HomeSetPos - Allgemeine Informationen

Übersicht

Typ

Funktionsbaustein

Verfügbar ab

V1.0.6.0

Übernommen aus

-

Implementiert

-

Versionen:

Aktuelle Version

Aufgabe

Die Positionen mehrerer Objekte (IF_Drive, L_Enc) sollen gleichzeitig oder separat voneinander manipuliert werden.

Beschreibung

Dieser Funktionsbaustein dient dem Setzen von Positionen. Nachdem der Funktionsbaustein über den Eingang i_xEnable eingeschaltet wurde, wartet er auf den Eingang i_xExecute. Über den Eingang i_etMode können verschiedene Arten von Funktionen aufgerufen werden.

Abhängig vom Eingang i_etMode werden wahlweise die RefPosition der Achse, die Position eines logischen Gebers, sowohl Achse als auch logischer Geber, die RefPosition einer Achse auf die EncoderPosition und die RefPosition einer Achse auf die angegebene RetainPosition gesetzt.

ET_HomeSetPosMode.SetPosAxisPosition

In diesem Modus setzt der Funktionsbaustein die RefPosition der Achse auf den Wert der Eingangsvariablen i_lrHomePosition.

ET_HomeSetPosMode.SetPosLogEncoderPosition

In diesem Modus setzt der Funktionsbaustein die Position des logischen Gebers auf den Wert der Eingangsvariablen i_lrEncoderPosition.

ET_HomeSetPosMode.SetPosAxisAndLogEncoderPosition

In diesem Modus setzt der Funktionsbaustein sowohl die RefPosition der Achse auf den Wert der Eingangsvariablen i_lrHomePosition als auch die Position des logischen Gebers auf den Wert der Eingangsvariablen i_lrEncoderPosition.

ET_HomeSetPosMode.RestorePosFromAxisEncoder

In diesem Modus wird die EncoderPosition des Antriebs ausgelesen. Dabei müssen die gleichen Parameter verwendet werden wie beim Schreiben der EncoderPosition mit FB_HomeAbs. Es gibt zwei Fälle, die unterschieden werden:

1. Fall: i_lrUserPeriod = 0

In diesem Fall wird der Eingang AbsEncOffset beim Setzen der RefPosition berücksichtigt. Durch diesen Wert ergibt sich eine Verschiebung der RefPosition gegenüber der EncoderPosition. Wird die Achse in den negativen Positionsbereich gefahren und die EncoderPosition erneut zurückgelesen, wird die RefPosition auf den korrekt Wert gesetzt.

2. Fall: i_lrUserPeriod = 0

In diesem Fall wird der Eingang i_lrAbsEncOffset nicht berücksichtigt. Die RefPosition wird auf den EncoderWert gesetzt. Sollte der Wert außerhalb des Periodenwerts liegen, ermittelt der Baustein die entsprechende Position innerhalb der Periode.

ET_HomeSetPosMode.RestorePosFromRetain

In diesem Modus wird die EncoderPosition des Antriebs ausgelesen. Anhand der gespeicherten EncoderPosition und ReferenzPosition in der remanenten Variablen am Eingang i_pstRestorePosRetain wird über die Funktion FC_RestoreAxisPosition die ReferenzPosition neu berechnet und die RefPosition der Achse auf diesen Wert gesetzt. Dabei kann über die Variable i_lrRestoreWindow ein Bereich angegeben werden, in dem die berechnete Position liegen muss. Liegt sie außerhalb dieses Bereichs, gibt es eine Fehlermeldung. Der Eingang i_lrUserPeriod wird beim Setzen der RefPosition berücksichtigt.

Schnittstelle

Eingang

Datentyp

Beschreibung

i_xEnable

BOOL

Eine steigende Flanke FALSE -> TRUE aktiviert die POU, eine fallende Flanke TRUE -> FALSE deaktiviert sie.

Wenn die POU abgeschaltet ist, führt sie keine Aktionen aus.

i_ifDrive

SystemConfigurationItf.IF_Drive

Eingang für die zu kontrollierende Achse

i_etMode

ET_HomeSetPosMode

Modus der Referenzierung

i_lrHomePosition

LREAL

Position, auf die die Achse gesetzt werden soll.

i_lrEncoderPosition

LREAL

Position, auf die der Geber gesetzt werden soll.

i_lrAbsEncOffset

LREAL

Offset der Geberposition

i_lrUserPeriod

LREAL

Maschinenperiode, in der die Achsposition gesetzt werden soll.

i_lrRestoreWindow

LREAL

Maximal zulässige Abweichung, zwischen der gespeicherten und der wiederhergestellten Achsposition.

i_pstRestorePosRetain

POINTER TO ST_AxisRestorePosition

Remanente Daten der Achsposition.

i_xExecute

BOOL

Eine positive Flanke führt die Position gemäß dem in i_etMode gewählten Modus aus.

Ausgang

Datentyp

Beschreibung

q_xActive

BOOL

TRUE: Die POU ist eingeschaltet und muss weiter ausgeführt werden.

FALSE: Die POU ist abgeschaltet.

q_xReady

BOOL

TRUE: Die POU ist betriebsbereit und kann Anwenderbefehle entgegennehmen.

FALSE: Die POU ist nicht bereit, Anwenderbefehle entgegenzunehmen.

q_xBusy

BOOL

TRUE: Die POU führt den gegebenen Anwenderbefehl aus.

FALSE: Die POU wartet auf weitere Anwenderbefehle.

q_xDone

BOOL

TRUE: Der Anwenderbefehl wurde ausgeführt.

FALSE: Der Anwenderbefehl ist in Bearbeitung oder es wurde noch keiner ausgegeben.

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.

q_lrPosition

LREAL

Position der Achse

q_lrEncoderPosition

LREAL

Position des logischen Gebers

q_xHomeOk

LREAL

TRUE: Das Setzen der Position ist erfolgreich beendet.

FALSE: Das Setzen der Position ist noch nicht erfolgt.

Ein-/Ausgang

Datentyp

Beschreibung

iq_lencEncoder

SystemConfiguration.L_ENC

Eingang für den logischen Geber zur Ankopplung an den Master. Für jede Instanz der POU muss ein eigener Geber angelegt werden.

Diagnosemeldungen

q_etDiag

q_etDiagExt

Enumerationswert

Beschreibung

OK

Disabled

9

Die POU ist deaktiviert.

OK

HomingDone

222

Die Referenzierung wurde durchgeführt.

OK

WaitForExecute

180

Warten auf Ausführung.

OK

WaitUntilHomingDone

265

Warten, bis das Referenzieren abgeschlossen ist.

DriveConditionInvalid

DriveEncoderInvalid

175

Der Geber des Antriebs ist nicht gültig.

DriveConditionInvalid

RestoreInterrupted

196

Das Wiederherstellen wurde unterbrochen.

InputParameterInvalid

AbsEncOffsetRange

178

AbsEncOffset ist außerhalb des gültigen Bereichs.

InputParameterInvalid

CheckSumInvalid

193

Die Prüfsumme ist ungültig.

InputParameterInvalid

DataNVRamInvalid

194

Der nicht flüchtige Speicher (NVRam) besitzt keine gültigen Daten mehr.

InputParameterInvalid

DriveInvalid

3

Verbundener Antrieb ist ungültig.

InputParameterInvalid

LencInvalid

162

Der verbundene logische Geber ist ungültig.

InputParameterInvalid

PointerRestorePosRetainInvalid

264

Der Zeiger RestorePosRetain ist ungültig.

InputParameterInvalid

UnknownMode

111

Mode ist nicht bestimmbar.

InputParameterInvalid

UserPeriodRange

177

UserPeriod ist außerhalb des gültigen Bereichs.

SercosConditionInvalid

SercosNotInPhaseFour

19

Der Sercos-Bus befindet sich nicht in Phase 4.

UnexpectedProgramBehavior

OutOfRestoreWindow

195

Die Position ist außerhalb des Wiederherstellungsfensters.

UnexpectedProgramBehavior

UnexpectedFeedback

1

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

UnexpectedProgramBehavior

UnknownState

2

Die POU befindet sich in einem undefinierten Zustand.

AbsEncOffsetRange

Enumerationsname:

AbsEncOffsetRange

Enumerationswert:

178

Beschreibung:

AbsEncOffset ist außerhalb des gültigen Bereichs.

Wurde am Eingang i_etMode von FB_HomeSetPos folgender Modus gewählt?

oET_HomeSetPosMode.RestorePosFromAxisEncoder

Problem

Ursache

Lösung

-

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

Für i_lrAbsEncOffset muss Folgendes gelten: 0 ≤ i_lrAbsEncOffset < Max. möglicher Wert von Drive.EncoderPosition.

Zulässiger Wertebereich für i_lrAbsEncOffset siehe auch Ausgang q_sMsg.

Wurde der oben genannte Modus nicht gewählt, benachrichtigen Sie bitte den Support über diesen Fehler.

CheckSumInvalid

Enumerationsname:

CheckSumInvalid

Enumerationswert:

193

Beschreibung:

Die Prüfsumme ist ungültig.

Wurde am Eingang i_etMode von FB_HomeSetPos einer der folgenden Modi gewählt?

oET_HomeSetPosMode.RestorePosFromRetain

Problem

Ursache

Lösung

-

Die gespeicherten Daten in iq_pstRestorePosRetain sind nicht konsistent. Die Position kann nicht wiederhergestellt werden.

Ein erneutes Referenzieren des Antriebs ist erforderlich.

Wurde keiner der oben genannten Modi gewählt, benachrichtigen Sie bitte den Support über diesen Fehler.

DataNVRamInvalid

Enumerationsname:

DataNVRamInvalid

Enumerationswert:

194

Beschreibung:

Der nicht flüchtige Speicher (NVRam) besitzt keine gültigen Daten mehr.

Wurde am Eingang i_etMode von FB_HomeSetPos einer der folgenden Modi gewählt?

oET_HomeSetPosMode.RestorePosFromRetain

Problem

Ursache

Lösung

-

Die gespeicherten Daten im NVRam sind ungültig. Aus iq_pstRestorePosRetain kann deshalb die Position nicht wiederhergestellt werden.

Der Parameter EncoderRange der Achse muss größer als 0 sein.

Siehe Ausgang q_sMsg für nähere Einzelheiten.

Wurde keiner der oben genannten Modi gewählt, benachrichtigen Sie bitte den Support über diesen Fehler.

Disabled

Enumerationsname:

Disabled

Enumerationswert:

9

Beschreibung:

Die POU ist deaktiviert.

Der Funktionsbaustein ist deaktiviert, er führt keinerlei Aktionen aus. i_xEnable und q_xActive weisen den Wert FALSE auf.

DriveEncoderInvalid

Enumerationsname:

DriveEncoderInvalid

Enumerationswert:

175

Beschreibung:

Der Geber des Antriebs ist nicht gültig.

Wurde am Eingang i_etMode von FB_HomeSetPos einer der folgenden Modi gewählt?

oET_HomeSetPosMode.RestorePosFromAxisEncoder

oET_HomeSetPosMode.RestorePosFromRetain

Problem

Ursache

Lösung

-

Der Geber der Achse wird nicht unterstützt.

Der Parameter EncoderRange der Achse muss größer als 0 sein.

Verwenden Sie ggf. eine Achse mit einem anderen Gebertyp.

Wurde keiner der oben genannten Modi gewählt, benachrichtigen Sie bitte den Support über diesen Fehler.

DriveInvalid

Enumerationsname:

DriveInvalid

Enumerationswert:

3

Beschreibung:

Verbundener Antrieb ist ungültig.

Wurde am Eingang i_etMode von FB_HomeSetPos einer der folgenden Modi gewählt?

oET_HomeSetPosMode.RestorePosFromRetain

oET_HomeSetPosMode.SetPosAxisPosition

oET_HomeSetPosMode.RestorePosFromAxisencoder

oET_HomeSetPosMode.SetPosAxisAndLogEncoderPosition

Problem

Ursache

Lösung

-

An den Eingang i_ifDrive wurde kein Antrieb angelegt.

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

Wurde keiner der oben genannten Modi gewählt, benachrichtigen Sie bitte den Support über diesen Fehler.

HomingDone

Enumerationsname:

HomingDone

Enumerationswert:

222

Beschreibung:

Die Referenzierung wurde durchgeführt.

Die Referenziersequenz wurde erfolgreich abgeschlossen.

LencInvalid

Enumerationsname:

LencInvalid

Enumerationswert:

162

Beschreibung:

Der verbundene logische Geber ist ungültig.

Wurde am Eingang i_etMode des FB_HomeSetPos einer der folgenden Modi gewählt?

oET_HomeSetPosMode.SetPosLogEncoderPosition

oET_HomeSetPosMode.SetPosAxisAndLogEncoderPosition

Problem

Ursache

Lösung

-

Am Eingang iq_lencEncoder wurde kein Geber angelegt.

Dem Eingang iq_lencEncoder muss ein eigener logischer Geber übergeben werden.

Wurde keiner der oben genannten Modi gewählt, benachrichtigen Sie bitte den Support über diesen Fehler.

OutOfRestoreWindow

Enumerationsname:

OutOfRestoreWindow

Enumerationswert:

195

Beschreibung:

Die Position ist außerhalb des Wiederherstellungsfensters.

Wurde am Eingang i_etMode von FB_HomeSetPos einer der folgenden Modi gewählt?

oET_HomeSetPosMode.RestorePosFromRetain

Problem

Ursache

Lösung

-

Die Achse wurde seit dem letzten Speichern der Position zu weit bewegt.

Schieben Sie die Position der Achse in das Fenster zurück.

Vergrößern Sie die Grenzen des Fensters i_lrRestoreWindow.

Wurde keiner der oben genannten Modi gewählt, benachrichtigen Sie bitte den Support über diesen Fehler.

PointerRestorePosRetainInvalid

Enumerationsname:

PointerRestorePosRetainInvalid

Enumerationswert:

264

Beschreibung:

Der Zeiger RestorePosRetain ist ungültig.

Wurde am Eingang i_etMode von FB_HomeSetPos einer der folgenden Modi gewählt?

oET_HomeSetPosMode.RestorePosFromRetain

Problem

Ursache

Lösung

-

Dem Eingang i_pstRestorePosRetain wurde ein ungültiger Zeiger übergeben.

Dem Eingang i_pstRestorePosRetain muss die Adresse des Speichers übergeben werden, in dem die Strukturwerte liegen.

Wurde keiner der oben genannten Modi gewählt, benachrichtigen Sie bitte den Support über diesen Fehler.

RestoreInterrupted

Enumerationsname:

RestoreInterrupted

Enumerationswert:

196

Beschreibung:

Das Wiederherstellen wurde unterbrochen.

Wurde am Eingang i_etMode von FB_HomeSetPos einer der folgenden Modi gewählt?

oET_HomeSetPosMode.RestorePosFromRetain

Problem

Ursache

Lösung

-

Das Auslesen des Gebers wurde mehrfach vom SERCOS unterbrochen.

Stellen Sie sicher, dass die Ausführung der Funktion nicht zu lange von anderen Tasks unterbrochen wird, so dass die Funktion nur einmal von der SERCOS-Task unterbrochen werden kann.

Wurde keiner der oben genannten Modi gewählt, benachrichtigen Sie bitte den Support über diesen Fehler.

SercosNotInPhaseFour

Enumerationsname:

SercosNotInPhaseFour

Enumerationswert:

19

Beschreibung:

Der Sercos-Bus befindet sich nicht in Phase 4.

Problem

Ursache

Lösung

-

Der Parameter State des SERCOS-Busses ist nicht 4.

Setzen Sie den SERCOS-Busparameter PhaseSet auf 4.

Überprüfen Sie den SERCOS-Bus auf Fehler.

UnexpectedFeedback

Enumerationsname:

UnexpectedFeedback

Enumerationswert:

1

Beschreibung:

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

Problem

Ursache

Lösung

-

Ein interner Ausführungsfehler wurde identifiziert.

Bitte informieren Sie Ihren Schneider Electric-Ansprechpartner über diesen Fehler.

UnknownMode

Enumerationsname:

UnknownMode

Enumerationswert:

111

Beschreibung:

Mode ist nicht bestimmbar.

Problem

Ursache

Lösung

-

Am Eingang i_etMode wurde ein ungültiger Wert angelegt.

Der Eingang ET_HomeSetPosMode muss mit einem Element der Enumeration i_etMode belegt werden.

UnknownState

Enumerationsname:

UnknownState

Enumerationswert:

2

Beschreibung:

Die POU befindet sich in einem undefinierten Zustand.

Problem

Ursache

Lösung

-

Ein interner Ausführungsfehler wurde identifiziert.

Bitte informieren Sie Ihren Schneider Electric-Ansprechpartner über diesen Fehler.

UserPeriodRange

Enumerationsname:

UserPeriodRange

Enumerationswert:

177

Beschreibung:

UserPeriod ist außerhalb des gültigen Bereichs.

Wurde am Eingang i_etMode von FB_HomeSetPos einer der folgenden Modi gewählt?

oET_HomeSetPosMode.RestorePosFromAxisEncoder

oET_HomeSetPosMode.RestorePosFromRetain

Problem

Ursache

Lösung

-

Am Eingang i_lrUserPeriod wurde ein ungültiger Wert übergeben.

Es muss gelten: 0 <= i_lrUserPeriod

-

Der Wert des Eingangs i_lrUserPeriod passt nicht in die Geberperiode.

Belegen Sie den Eingang i_lrUserPeriod mit 0, 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.

Wurde keiner der oben genannten Modi gewählt, benachrichtigen Sie bitte den Support über diesen Fehler.

WaitForExecute

Enumerationsname:

WaitForExecute

Enumerationswert:

180

Beschreibung:

Warten auf Ausführung.

Der Funktionsbaustein ist funktionsbereit. Auf eine positive Flanke von i_xExecute hin werden die Position der Achse und/oder des logischen Gebers entsprechend der Parametrierung gesetzt.

WaitUntilHomingDone

Enumerationsname:

WaitUntilHomingDone

Enumerationswert:

265

Beschreibung:

Warten, bis das Referenzieren abgeschlossen ist.

Das Referenzieren wurde angestoßen. Der Funktionsbaustein wartet auf dessen Beendigung.

Methoden

Bezeichnung

Beschreibung

RegisterLoggerPoint

Anmelden der Logger-Punkte der POU im Anwendungslogger