FB_HomeSetPos - Allgemeine Informationen
Typ |
Funktionsbaustein |
Verfügbar ab |
V1.0.6.0 |
Übernommen aus |
- |
Implementiert |
- |
Versionen: |
Aktuelle Version |
Die Positionen mehrerer Objekte (IF_Drive, L_Enc) sollen gleichzeitig oder separat voneinander manipuliert werden.
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.
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 |
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 |
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_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. |
q_etDiag |
q_etDiagExt |
Enumerationswert |
Beschreibung |
---|---|---|---|
OK |
9 |
Die POU ist deaktiviert. |
|
OK |
222 |
Die Referenzierung wurde durchgeführt. |
|
OK |
180 |
Warten auf Ausführung. |
|
OK |
265 |
Warten, bis das Referenzieren abgeschlossen ist. |
|
DriveConditionInvalid |
175 |
Der Geber des Antriebs ist nicht gültig. |
|
DriveConditionInvalid |
196 |
Das Wiederherstellen wurde unterbrochen. |
|
InputParameterInvalid |
178 |
AbsEncOffset ist außerhalb des gültigen Bereichs. |
|
InputParameterInvalid |
193 |
Die Prüfsumme ist ungültig. |
|
InputParameterInvalid |
194 |
Der nicht flüchtige Speicher (NVRam) besitzt keine gültigen Daten mehr. |
|
InputParameterInvalid |
3 |
Verbundener Antrieb ist ungültig. |
|
InputParameterInvalid |
162 |
Der verbundene logische Geber ist ungültig. |
|
InputParameterInvalid |
264 |
Der Zeiger RestorePosRetain ist ungültig. |
|
InputParameterInvalid |
111 |
Mode ist nicht bestimmbar. |
|
InputParameterInvalid |
177 |
UserPeriod ist außerhalb des gültigen Bereichs. |
|
SercosConditionInvalid |
19 |
Der Sercos-Bus befindet sich nicht in Phase 4. |
|
UnexpectedProgramBehavior |
195 |
Die Position ist außerhalb des Wiederherstellungsfensters. |
|
UnexpectedProgramBehavior |
1 |
Es ist ein unbeabsichtigter Fehler während der Ausführung aufgetreten. |
|
UnexpectedProgramBehavior |
2 |
Die POU befindet sich in einem undefinierten Zustand. |
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.
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.
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.
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.
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.
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.
Enumerationsname: |
HomingDone |
Enumerationswert: |
222 |
Beschreibung: |
Die Referenzierung wurde durchgeführt. |
Die Referenziersequenz wurde erfolgreich abgeschlossen.
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.
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.
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.
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. |
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. |
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. |
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. |
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.
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.
Enumerationsname: |
WaitUntilHomingDone |
Enumerationswert: |
265 |
Beschreibung: |
Warten, bis das Referenzieren abgeschlossen ist. |
Das Referenzieren wurde angestoßen. Der Funktionsbaustein wartet auf dessen Beendigung.
Bezeichnung |
Beschreibung |
---|---|
Anmelden der Logger-Punkte der POU im Anwendungslogger |