FB_MultiPos - Allgemeine Informationen
Typ |
Funktionsbaustein |
Verfügbar ab |
V1.0.3.0 |
Übernommen aus |
- |
Implementiert |
- |
Versionen: |
Aktuelle Version |
Sequenzielles Ausführen von Positionierbewegungen aus der Tabelle
Mit dem Funktionsbaustein werden Positionieraufträge aus einer Tabelle abgearbeitet. Die Funktion ist an den Funktionsbaustein FB_MultiCam angelehnt.
Sein Einsatz sind Anwendungen, die ausschließlich Positionieraufträge in einer Achse haben und eine relativ einfache Logik in der Ansteuerung benötigen. Der Hauptvorteil liegt in der einfachen Programmierung der Bewegungsabläufe durch das Ausfüllen einer Tabelle.
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 |
IF_Drive |
Eingang für die zu kontrollierende Achse |
i_xStart |
BOOL |
FALSE -> TRUE: Start der Positionierung mit i_diStartStep. Die Tabelle läuft sequenziell durch die Schritte und springt am Ende an den Anfang der Tabelle und führt die Bearbeitung fort. TRUE -> FALSE: Die Bearbeitung hält am Ende des aktuellen Schrittes an. |
i_xStop |
BOOL |
TRUE: Stoppt eine laufende Positionierung mit der Verzögerung StopDec (Parameter der Achse). Die Tabelle wird auf den ersten Schritt gesetzt. |
i_diStartStep |
DINT |
Startschritt (Startpositionierung aus der Tabelle). oi_diStartStep = 0 Eine steigende Flanke am Eingang i_xStart startet immer den nächsten Schritt. Beim ersten Start nach i_xEnable = TRUE wird im ersten Schritt gestartet. oi_diStartStep > 0 Eine steigende Flanke am Eingang i_xStart startet immer den Startschritt. |
i_xSingleStepMode |
BOOL |
TRUE -> Einzelschrittbetrieb: Für jeden Schritt (einzelne Positionierung aus der Tabelle) ist eine steigende Flanke (FALSE -> TRUE) am Eingang i_xStart nötig. Der Einzelschrittbetrieb lässt sich während des Betriebs zu- und abschalten. |
i_byStartCondition |
BYTE |
Über i_byStartCond lässt sich eine Startbedingung formulieren. Der Schritt wird nur ausgeführt, wenn der Eingang i_byStartCond und der Tabellenwert byStartCond gleich sind oder der Tabellenwert byStartCond = 0 ist. |
i_byJumpCondition |
BYTE |
Sprungbedingung oi_byJumpCond = 0 Sprung wird immer ausgeführt. oi_byJumpCond <> 0 Sprung wird ausgeführt, wenn der Eingang i_byJumpCond und der Tabellenwert byJumpCond gleich sind. |
i_pstMultiPosStep |
POINTER TO ST_MultiPosStep |
Zeiger auf das erste Element der Positioniertabelle. |
i_diNumberOfSteps |
DINT |
Anzahl der Positionierungen aus der Tabelle. |
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_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_xMotionInstructionActive |
BOOL |
TRUE: Die Achse bearbeitet einen Bewegungsbefehl. Der Ausgang wird ebenfalls gesetzt, wenn der Bewegungsbefehl vorgibt, dass sich die Achse im Stillstand befindet. |
q_xTableActive |
BOOL |
TRUE: Positionierungen laut Tabelle werden abgearbeitet. Bleibt aktiv, bis die letzte Positionierung aus der Tabelle beendet wurde. |
q_lrPosition |
LREAL |
Position ( RefPosition) der Achse. |
q_diActualStep |
DINT |
Nummer der aktuellen Positionierung aus der Tabelle. |
q_byOutput |
BYTE |
Es kann pro Schritt ein Bitmuster gesetzt werden. Das wird von g_byOutPut in der Tabelle vorgegeben. Es wird zu Beginn des Schrittes gesetzt und bleibt bestehen, bis ein anderer Schritt es überschreibt. |
q_etDiag |
q_etDiagExt |
Enumerationswert |
Beschreibung |
---|---|---|---|
OK |
9 |
Die POU ist deaktiviert. |
|
OK |
4 |
Die POU wird initialisiert. |
|
OK |
5 |
Warten auf Startbefehl. |
|
OK |
243 |
Warten auf Startbedingung. |
|
OK |
238 |
Warten auf Rücknahme des Stoppbefehls. |
|
OK |
8 |
Warten, bis die POU deaktiviert ist. |
|
OK |
241 |
Warten auf das Ende der Verweilzeit. |
|
OK |
242 |
Warten, bis die Position erreicht wurde. |
|
OK |
159 |
Warten, bis der Antrieb angehalten hat. |
|
DriveConditionInvalid |
19 |
Der Sercos-Bus befindet sich nicht in Phase 4. |
|
DriveConditionInvalid |
10 |
Der Antrieb ist nicht bereit für Bewegungsbefehle. |
|
InputParameterInvalid |
12 |
Acc ist außerhalb des gültigen Bereichs. |
|
InputParameterInvalid |
13 |
Dec ist außerhalb des gültigen Bereichs. |
|
InputParameterInvalid |
3 |
Verbundener Antrieb ist ungültig. |
|
InputParameterInvalid |
14 |
Jerk ist außerhalb des gültigen Bereichs. |
|
InputParameterInvalid |
244 |
JumpStep ist ungültig. |
|
InputParameterInvalid |
191 |
NumberOfSteps ist außerhalb des gültigen Bereichs. |
|
InputParameterInvalid |
239 |
Der Zeiger MultiPosStep ist ungültig. |
|
InputParameterInvalid |
322 |
PosMode ist außerhalb des Bereichs. |
|
InputParameterInvalid |
240 |
StartStep ist ungültig. |
|
InputParameterInvalid |
11 |
Vel ist außerhalb des gültigen Bereichs. |
|
UnexpectedProgramBehavior |
1 |
Es ist ein unbeabsichtigter Fehler während der Ausführung aufgetreten. |
|
UnexpectedProgramBehavior |
2 |
Die POU befindet sich in einem undefinierten Zustand. |
Enumerationsname: |
AccRange |
Enumerationswert: |
12 |
Beschreibung: |
Acc ist außerhalb des gültigen Bereichs. |
Problem |
Ursache |
Lösung |
---|---|---|
- |
Im Parameter lrAcc des aktuellen Tabellenschrittes wurde ein ungültiger Wert übergeben. (Die Tabellenschritte werden am Eingang i_pstMultiPosStep übergeben.) |
Es muss gelten: 0 < lrAcc < Antriebsparameter MaxAcc Zulässiger Wertebereich für lrAcc, siehe Ausgang q_sMsg |
Enumerationsname: |
DecRange |
Enumerationswert: |
13 |
Beschreibung: |
Dec ist außerhalb des gültigen Bereichs. |
Problem |
Ursache |
Lösung |
---|---|---|
- |
Im Parameter lrDec des aktuellen Tabellenschrittes wurde ein ungültiger Wert übergeben. (Die Tabellenschritte werden am Eingang i_pstMultiPosStep übergeben.) |
Es muss gelten: 0 < lrDec < Parameter MaxAcc der Achse Zulässiger Wertebereich für lrDec, siehe Ausgang q_sMsg |
Enumerationsname: |
Disabled |
Enumerationswert: |
9 |
Beschreibung: |
Die POU ist deaktiviert. |
Der Funktionsbaustein ist deaktiviert und führt keinerlei Aktionen aus. i_xEnable und q_xActive werden auf FALSE gesetzt.
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: |
DriveNotReady |
Enumerationswert: |
10 |
Beschreibung: |
Der Antrieb ist nicht bereit für Bewegungsbefehle. |
Problem |
Ursache |
Lösung |
---|---|---|
- |
Die Achse befindet sich nicht in Lageregelung. |
Überprüfen Sie den Zustand der Achse. |
- |
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: |
Initializing |
Enumerationswert: |
4 |
Beschreibung: |
Die POU wird initialisiert. |
Der Funktionsbaustein wird initialisiert und ist noch nicht bereit, Befehle an seinen Eingängen entgegenzunehmen.
Der Funktionsbaustein meldet seine Betriebsbereitschaft mit dem Signal q_xReady = TRUE.
Enumerationsname: |
JerkRange |
Enumerationswert: |
14 |
Beschreibung: |
Jerk ist außerhalb des gültigen Bereichs. |
Problem |
Ursache |
Lösung |
---|---|---|
- |
Am Eingang lrJerk der Schrittkette i_pstMultiPosStep wurde ein ungültiger Wert angelegt. |
Am Eingang lrJerk muss ein Wert größer als 0 und kleiner oder gleich Gc_lrMaxJerk übergeben werden. |
Enumerationsname: |
JumpStepInvalid |
Enumerationswert: |
244 |
Beschreibung: |
JumpStep ist ungültig. |
Problem |
Ursache |
Lösung |
---|---|---|
- |
Einer der Parameter diJumpStep der Schrittkette i_pstMultiPosStep ist ungültig. |
Stellen Sie sicher, dass jede Sprunganweisung diJumpStep auf ein Element der Schrittkette verweist. |
Enumerationsname: |
NumberOfStepsRange |
Enumerationswert: |
191 |
Beschreibung: |
NumberOfSteps ist außerhalb des gültigen Bereichs. |
Problem |
Ursache |
Lösung |
---|---|---|
- |
Am Eingang i_diNumberOfSteps wurde ein zu geringer Wert angelegt |
Dem Eingang i_diNumberOfSteps muss ein Wert größer als 0 übergeben werden. |
Enumerationsname: |
PointerMultiPosStepInvalid |
Enumerationswert: |
239 |
Beschreibung: |
Der Zeiger MultiPosStep ist ungültig. |
Problem |
Ursache |
Lösung |
---|---|---|
- |
Am Eingang i_pstMultiPosStep wurde ein Nullzeiger übergeben. |
Dem Eingang i_pstMultiPosStep muss die Addresse des Speichers übergeben werden, in dem die Schrittkette liegt. |
Enumerationsname: |
PosModeRange |
Enumerationswert: |
322 |
Beschreibung: |
PosMode ist außerhalb des Bereichs. |
Problem |
Ursache |
Lösung |
---|---|---|
- |
Am Eingang i_pstMultiPosStep^.etPosMode wurde ein ungültiger Wert übergeben. |
Bei i_pstMultiPosStep^.etPosMode muss einer der Werte SystemInterface.ET_PosMode.Absolute, SystemInterface.ET_PosMode.Relative oder SystemInterface.ET_PosMode.Endless gegeben sein. Die Betriebsart Pos SystemInterface.ET_PosMode.Increment oder andere Werte sind nicht zulässig. |
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: |
StartStepInvalid |
Enumerationswert: |
240 |
Beschreibung: |
StartStep ist ungültig. |
Problem |
Ursache |
Lösung |
---|---|---|
- |
Am Eingang i_diStartStep wurde ein zu großer Wert angelegt. |
Am Eingang i_diStartStep muss ein Wert kleiner oder gleich dem Wert am Eingang i_diNumberOfSteps angelegt werden. |
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: |
UnknownState |
Enumerationswert: |
2 |
Beschreibung: |
Die POU befindet sich in einem undefinierten Zustand. |
Problem |
Ursache |
Lösung |
---|---|---|
- |
Es ist ein Fehler in der internen Abarbeitung aufgetreten. |
Bitte informieren Sie das Supportteam über diesen Fehler. |
Enumerationsname: |
VelRange |
Enumerationswert: |
11 |
Beschreibung: |
Vel ist außerhalb des gültigen Bereichs. |
Problem |
Ursache |
Lösung |
---|---|---|
- |
Die Geschwindigkeit eines Positionierungsschrittes kann von der Achse nicht gefahren werden. |
Für jeden Parameter lrVel eines Positionierungsschrittes der Liste i_pstMultiPosStep muss ein Wert zwischen 0 und dem Parameter MaxVel der Achse angegeben werden. |
Enumerationsname: |
WaitForStart |
Enumerationswert: |
5 |
Beschreibung: |
Warten auf Startbefehl. |
Der Funktionsbaustein hat seine Initialisierung abgeschlossen und wartet auf eine positive Flanke am Eingang i_xStart, bevor er mit der Abarbeitung fortfährt.
Enumerationsname: |
WaitForStartCondition |
Enumerationswert: |
243 |
Beschreibung: |
Warten auf Startbedingung. |
Die Abarbeitung wird fortgesetzt, soabld die Startbedingung des Schritts erfüllt ist.
Enumerationsname: |
WaitForStopRelease |
Enumerationswert: |
238 |
Beschreibung: |
Warten auf Rücknahme des Stoppbefehls. |
Der Eingang i_xStop muss FALSE sein, um fortzufahren.
Enumerationsname: |
WaitUntilDisabled |
Enumerationswert: |
8 |
Beschreibung: |
Warten, bis die POU deaktiviert ist. |
Der Funktionsbaustein ist deaktiviert. Alle internen Zustände werden zurückgesetzt und verbundene Resourcen (z. B. Achsen) werden in einen sicheren Zustand überführt. Der Funktionsbaustein muss weiterhin aufgerufen werden, bis er q_xActive = FALSE meldet.
Enumerationsname: |
WaitUntilDwellTimeOver |
Enumerationswert: |
241 |
Beschreibung: |
Warten auf das Ende der Verweilzeit. |
Der Funktionsbaustein wartet das Ende einer parametrisierten Verweilzeit ab.
Enumerationsname: |
WaitUntilPositionReached |
Enumerationswert: |
242 |
Beschreibung: |
Warten, bis die Position erreicht wurde. |
Die Achse wird auf ihre Zielposition bewegt.
Enumerationsname: |
WaitUntilStopped |
Enumerationswert: |
159 |
Beschreibung: |
Warten, bis der Antrieb angehalten hat. |
Die Achse wird angehalten.