FB_MultiPos

 

FB_MultiPos - Allgemeine Informationen

Übersicht

Typ

Funktionsbaustein

Verfügbar ab

V1.0.3.0

Übernommen aus

-

Implementiert

-

Versionen:

Aktuelle Version

Aufgabe

Sequenzielles Ausführen von Positionierbewegungen aus der Tabelle

Beschreibung

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.

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

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

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_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.

Diagnosemeldungen

q_etDiag

q_etDiagExt

Enumerationswert

Beschreibung

OK

Disabled

9

Die POU ist deaktiviert.

OK

Initializing

4

Die POU wird initialisiert.

OK

WaitForStart

5

Warten auf Startbefehl.

OK

WaitForStartCondition

243

Warten auf Startbedingung.

OK

WaitForStopRelease

238

Warten auf Rücknahme des Stoppbefehls.

OK

WaitUntilDisabled

8

Warten, bis die POU deaktiviert ist.

OK

WaitUntilDwellTimeOver

241

Warten auf das Ende der Verweilzeit.

OK

WaitUntilPositionReached

242

Warten, bis die Position erreicht wurde.

OK

WaitUntilStopped

159

Warten, bis der Antrieb angehalten hat.

DriveConditionInvalid

SercosNotInPhaseFour

19

Der Sercos-Bus befindet sich nicht in Phase 4.

DriveConditionInvalid

DriveNotReady

10

Der Antrieb ist nicht bereit für Bewegungsbefehle.

InputParameterInvalid

AccRange

12

Acc ist außerhalb des gültigen Bereichs.

InputParameterInvalid

DecRange

13

Dec ist außerhalb des gültigen Bereichs.

InputParameterInvalid

DriveInvalid

3

Verbundener Antrieb ist ungültig.

InputParameterInvalid

JerkRange

14

Jerk ist außerhalb des gültigen Bereichs.

InputParameterInvalid

JumpStepInvalid

244

JumpStep ist ungültig.

InputParameterInvalid

NumberOfStepsRange

191

NumberOfSteps ist außerhalb des gültigen Bereichs.

InputParameterInvalid

PointerMultiPosStepInvalid

239

Der Zeiger MultiPosStep ist ungültig.

InputParameterInvalid

PosModeRange

322

PosMode ist außerhalb des Bereichs.

InputParameterInvalid

StartStepInvalid

240

StartStep ist ungültig.

InputParameterInvalid

VelRange

11

Vel ist außerhalb des gültigen Bereichs.

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.

AccRange

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

DecRange

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

Disabled

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.

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.

DriveNotReady

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.

Initializing

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.

JerkRange

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.

JumpStepInvalid

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.

NumberOfStepsRange

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.

PointerMultiPosStepInvalid

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.

PosModeRange

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.

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.

StartStepInvalid

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.

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.

UnknownState

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.

VelRange

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.

WaitForStart

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.

WaitForStartCondition

Enumerationsname:

WaitForStartCondition

Enumerationswert:

243

Beschreibung:

Warten auf Startbedingung.

Die Abarbeitung wird fortgesetzt, soabld die Startbedingung des Schritts erfüllt ist.

WaitForStopRelease

Enumerationsname:

WaitForStopRelease

Enumerationswert:

238

Beschreibung:

Warten auf Rücknahme des Stoppbefehls.

Der Eingang i_xStop muss FALSE sein, um fortzufahren.

WaitUntilDisabled

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 Funktions­baustein muss weiterhin aufgerufen werden, bis er q_xActive = FALSE meldet.

WaitUntilDwellTimeOver

Enumerationsname:

WaitUntilDwellTimeOver

Enumerationswert:

241

Beschreibung:

Warten auf das Ende der Verweilzeit.

Der Funktionsbaustein wartet das Ende einer parametrisierten Verweilzeit ab.

WaitUntilPositionReached

Enumerationsname:

WaitUntilPositionReached

Enumerationswert:

242

Beschreibung:

Warten, bis die Position erreicht wurde.

Die Achse wird auf ihre Zielposition bewegt.

WaitUntilStopped

Enumerationsname:

WaitUntilStopped

Enumerationswert:

159

Beschreibung:

Warten, bis der Antrieb angehalten hat.

Die Achse wird angehalten.