FB_EndlessFeedIls

 

FB_EndlessFeedIls - Allgemeine Informationen

Übersicht

Typ

Programm / Funktionsbaustein / Funktion

Verfügbar ab

V1.0.3.0

Übernommen aus

-

Implementiert

-

Versionen:

Aktuelle Version

Aufgabe

Intelligente Königswelle

Ausführen einer endlosen Bewegung einer Leitachse unter Berücksichtigung von Geschwin­digkeits- und Beschleunigungsbegrenzungen der Slaveachsen.

Beschreibung

Während des Betriebs werden die am Eingang iq_stIlsData übergebenen Daten über die Bewegungsabläufe von bis zu 10 Slaveachsen ausgewertet und eventuell parametrierte Geschwindigkeits- oder Beschleunigungslimits durch phasenweise Verringerung der Plateauge­schwindigkeit der Leitachse eingehalten. Den dabei entstandenen Positionsrückstand versucht der Funktionsbaustein selbständig durch Anhebung der Plateaugeschwindigkeit bis zu einem einstellbaren Maximalwert auszugleichen. Das heißt, die eingestellte Geschwindigkeit i_lrVel wird als Effektivgeschwindigkeit interpretiert.

HINWEIS: Der Funktionsbaustein muss viel Speicher im dynamischen Speicherbereich zuweisen. Die Größe des dynamischen Speicherbereichs kann in den Optionen Applikationserzeugung{ angezeigt und geändert werden (Ansicht -> Eigenschaften... -> Optionen Applikationser­zeugung{). Es handelt sich NICHT um den dynamischen Speicherbereich, der über die Eigenschaften DynIECData... der Steuerung verwaltet werden kann.

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_lrVel

LREAL

Effektivgeschwindigkeit in Einheiten/s.

Wertebereich: 0...MaxVel

i_lrAcc

LREAL

Beschleunigung auf Plateaugeschwindigkeit in Einheiten/s2.

Wertebereich: > 0 ... MaxAcc

i_lrDec

LREAL

Verzögerung auf Plateaugeschwindigkeit oder Stillstand in Einheiten/s2.

Wertebereich: > 0 ... MaxAcc

i_lrJerk

LREAL

Ruck in Einheiten/s2.

Wird der Variablen lrMasterMaxAbsJerk aus iq_stIlsData.i_stRunTime zugewiesen.

i_lrPeriod

LREAL

Bei einem Wert <> 0 wird die Position innerhalb des Periodenwerts gehalten (0 … i_lrPeriod). Wenn ein Periodenwert zu hoch oder zu niedrig ist, wird die Position vom Periodenwert beeinflusst. Es sind nur positive Werte gültig.

i_lrStopPosition

LREAL

Stoppposition in Einheiten. Es sind nur positive Werte gültig.

Die StopPosition muss im Bereich von 0 ... Period liegen.

i_xStart

BOOL

FALSE -> TRUE: Start der Endlosfahrt nach eingestellten Parametern.

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_xWarning

BOOL

TRUE: Funktionsbaustein hat Warnung erkannt. Die Ausgänge q_etDiag, q_etDiagExt und q_sMsg sind als Warnung zu interpretieren.

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: Achse in Bewegung.

q_xInVelocity

BOOL

Geschwindigkeit i_lrVel erreicht.

(RefVelocity > i_lrVel * 0,99 UND RefVelocity < i_lrVel* 1.01)

q_lrPosition

LREAL

Position der Achse.

Ein-/Ausgang

Datentyp

Beschreibung

iq_stIlsData

ST_IlsData

Informationen über die Bewegungsabläufe der Slaveachsen sowie parametrierte Limits und Feedbackvariablen. Siehe den Datentyp PDL_ST_ILS_Data.

Diagnosemeldungen

q_etDiag

q_etDiagExt

Enumerationswert

Beschreibung

OK

Disabled

9

Die POU ist deaktiviert.

OK

EndlessPositioning

213

Endlose Positionierung

OK

Initializing

4

Die POU wird initialisiert.

OK

Stopping

7

Aktive Fahrbefehle werden gestoppt.

OK

WaitForStart

5

Warten auf Startbefehl.

OK

WaitUntilDisabled

8

Warten, bis die POU deaktiviert ist.

DriveConditionInvalid

DriveNotReady

10

Der Antrieb ist nicht bereit für Bewegungsbefehle.

ExecutionAborted

DynIecDataSizeTooSmall

75

Es ist zu wenig dynamischer Speicher reserviert.

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

HysteresisRange

205

Hysteresis ist außerhalb des gültigen Bereichs.

InputParameterInvalid

MasterMaxAbsAccRange

199

MasterMaxAbsAcc ist außerhalb des gültigen Bereichs.

InputParameterInvalid

MasterMaxAbsJerkRange

200

MasterMaxAbsJerk ist außerhalb des gültigen Bereichs.

InputParameterInvalid

MasterPeriodInitRange

208

MasterPeriodInit ist außerhalb des gültigen Bereichs.

InputParameterInvalid

NegAccRange

212

NegAcc ist außerhalb des gültigen Bereichs.

InputParameterInvalid

NegVelRange

210

NegVel ist außerhalb des gültigen Bereichs.

InputParameterInvalid

NumberOfMasterPeriodsRange

207

MNumberOfMasterPeriods ist außerhalb des gültigen Bereichs.

InputParameterInvalid

NumberOfSlavesRange

198

NumberOfSlaves ist außerhalb des gültigen Bereichs.

InputParameterInvalid

PeriodRange

201

Period ist außerhalb des gültigen Bereichs.

InputParameterInvalid

PosAccRange

211

PosAcc ist außerhalb des gültigen Bereichs.

InputParameterInvalid

PositionGridSizeRange

203

PositionGridSize ist außerhalb des gültigen Bereichs.

InputParameterInvalid

PosVelRange

209

PosVel ist außerhalb des gültigen Bereichs.

InputParameterInvalid

ProfileIdInvalid

114

ProfileId ist ungültig.

InputParameterInvalid

StopPositionRange

202

StopPosition ist außerhalb des gültigen Bereichs.

InputParameterInvalid

TimeGridSizeRange

204

TimeGridSize ist außerhalb des gültigen Bereichs.

InputParameterInvalid

VelRange

11

Vel ist außerhalb des gültigen Bereichs.

InputParameterInvalid

YFactorRange

206

YFactor ist außerhalb des gültigen Bereichs.

UnexpectedProgramBehavior

ProfileAlreadyInUse

116

Das Profil wird bereits verwendet.

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

-

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

Es muss gelten: i_lrAcc > 1

Zulässiger Wertebereich für i_lrAcc, siehe Ausgang q_sMsg

DecRange

Enumerationsname:

DecRange

Enumerationswert:

13

Beschreibung:

Dec ist außerhalb des gültigen Bereichs.

Problem

Ursache

Lösung

-

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

Es muss gelten: i_lrDec > 1

Zulässiger Wertebereich für i_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.

DynIecDataSizeTooSmall

Enumerationsname:

DynIecDataSizeTooSmall

Enumerationswert:

75

Beschreibung:

Es ist zu wenig dynamischer Speicher reserviert.

Problem

Ursache

Lösung

-

Es gab nicht genug freien Speicherplatz im dynamischen Speicher.

Erweitern Sie den dynamischen Speicher. Der vom Funktionsbaustein benötigte Speicherplatz wird in der Meldung q_sMessage der Ausnahme angegeben. Die Größe des dynamischen Speicherbereichs kann in den Optionen Applikationserzeugung{ angezeigt und geändert werden (Ansicht -> Eigenschaften... -> Optionen Applikationserzeugung{). Es handelt sich NICHT um den dynamischen Speicherbereich, der über die Eigenschaften DynIECData... der Steuerung verwaltet werden kann.

EndlessPositioning

Enumerationsname:

EndlessPositioning

Enumerationswert:

213

Beschreibung:

Endlose Positionierung

Die Achse wird endlos positioniert.

HysteresisRange

Enumerationsname:

HysteresisRange

Enumerationswert:

205

Beschreibung:

Hysteresis ist außerhalb des gültigen Bereichs.

Problem

Ursache

Lösung

-

Am Eingang iq_stIlsData.i_stConfig.lrHysteresis wurde ein ungültiger Wert angelegt.

Dem Eingang iq_stIlsData.i_stConfig.lrHysteresis muss ein Wert größer oder gleich 0,001 und kleiner oder gleich 50,0 übergeben werden.

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.

MasterMaxAbsAccRange

Enumerationsname:

MasterMaxAbsAccRange

Enumerationswert:

199

Beschreibung:

MasterMaxAbsAcc ist außerhalb des gültigen Bereichs.

Problem

Ursache

Lösung

-

Am Eingang iq_stIlsData.i_stRunTime.lrMasterMaxAbsAcc wurde ein ungültiger Wert übergeben.

Dem Eingang iq_stIlsData.i_stRunTime.lrMasterMaxAbsAcc muss ein Wert größer oder gleich 1,0 übergeben werden.

MasterMaxAbsJerkRange

Enumerationsname:

MasterMaxAbsJerkRange

Enumerationswert:

200

Beschreibung:

MasterMaxAbsJerk ist außerhalb des gültigen Bereichs.

Problem

Ursache

Lösung

-

Am Eingang iq_stIlsData.i_stRunTime.lrMasterMaxAbsJerk wurde ein ungültiger Wert übergeben.

Dem Eingang iq_stIlsData.i_stRunTime.lrMasterMaxAbsJerk muss ein Wert größer oder gleich 1,0 übergeben werden.

MasterPeriodInitRange

Enumerationsname:

MasterPeriodInitRange

Enumerationswert:

208

Beschreibung:

MasterPeriodInit ist außerhalb des gültigen Bereichs.

Problem

Ursache

Lösung

-

Am Eingang iq_stIlsData.i_astCamData[ ].diMasterPeriodInit wurde ein ungültiger Wert angelegt.

Dem Eingang iq_stIlsData.i_astCamData[ ].diMasterPeriodInit muss ein Wert größer als 0 übergeben werden.

NegAccRange

Enumerationsname:

NegAccRange

Enumerationswert:

212

Beschreibung:

NegAcc ist außerhalb des gültigen Bereichs.

Problem

Ursache

Lösung

-

Am Eingang iq_stIlsData.i_stRunTime.astSlaveLimits[ ].lrNegAcc wurde ein ungültiger Wert angelegt.

Dem Eingang iq_stIlsData.i_stRunTime.astSlaveLimits[ ].lrNegAcc muss ein Wert größer oder gleich -1,0 übergeben werden.

NegVelRange

Enumerationsname:

NegVelRange

Enumerationswert:

210

Beschreibung:

NegVel ist außerhalb des gültigen Bereichs.

Problem

Ursache

Lösung

-

Am Eingang iq_stIlsData.i_stRunTime.astSlaveLimits[ ].lrNegVel wurde ein ungültiger Wert angelegt.

Dem Eingang iq_stIlsData.i_stRunTime.astSlaveLimits[ ].lrNegVel muss ein Wert kleiner oder gleich -1,0 übergeben werden.

NumberOfMasterPeriodsRange

Enumerationsname:

NumberOfMasterPeriodsRange

Enumerationswert:

207

Beschreibung:

MNumberOfMasterPeriods ist außerhalb des gültigen Bereichs.

Problem

Ursache

Lösung

-

Am Eingang iq_stIlsData.i_astCamData[ ].diNumberOfMasterPeriods wurde ein ungültiger Wert angelegt.

Dem Eingang iq_stIlsData.i_astCamData[ ].diNumberOfMasterPeriods muss ein Wert größer als 1 übergeben werden.

NumberOfSlavesRange

Enumerationsname:

NumberOfSlavesRange

Enumerationswert:

198

Beschreibung:

NumberOfSlaves ist außerhalb des gültigen Bereichs.

Problem

Ursache

Lösung

-

Am Eingang iq_stIlsData.i_stConfig.diNumberOfSlaves wurde ein ungültiger Wert angelegt.

Dem Eingang Gc_diMaxNumberOfSlaves muss ein Wert größer oder gleich 0 und kleiner oder gleich iq_stIlsData.i_stConfig.diNumberOfSlaves übergeben werden.

PeriodRange

Enumerationsname:

PeriodRange

Enumerationswert:

201

Beschreibung:

Period ist außerhalb des gültigen Bereichs.

Problem

Ursache

Lösung

-

Am Eingang i_lrPeriod wurde ein ungültiger Wert angelegt.

Dem Eingang i_lrPeriod muss ein Wert größer oder gleich 1,0 übergeben werden.

PosAccRange

Enumerationsname:

PosAccRange

Enumerationswert:

211

Beschreibung:

PosAcc ist außerhalb des gültigen Bereichs.

Problem

Ursache

Lösung

-

Am Eingang iq_stIlsData.i_stRunTime.astSlaveLimits[ ].lrPosAcc wurde ein ungültiger Wert angelegt.

Dem Eingang iq_stIlsData.i_stRunTime.astSlaveLimits[ ].lrPosAcc muss ein Wert größer oder gleich 1,0 übergeben werden.

PositionGridSizeRange

Enumerationsname:

PositionGridSizeRange

Enumerationswert:

203

Beschreibung:

PositionGridSize ist außerhalb des gültigen Bereichs.

Problem

Ursache

Lösung

-

Am Eingang iq_stIlsData.i_stConfig.diPositionGridSize wurde ein ungültiger Wert angelegt.

Dem Eingang iq_stIlsData.i_stConfig.diPositionGridSize muss ein Wert größer oder gleich 1 und kleiner oder gleich Gc_diMaxGridSize übergeben werden.

PosVelRange

Enumerationsname:

PosVelRange

Enumerationswert:

209

Beschreibung:

PosVel ist außerhalb des gültigen Bereichs.

Problem

Ursache

Lösung

-

Am Eingang iq_stIlsData.i_stRunTime.astSlaveLimits[ ].lrPosVel wurde ein ungültiger Wert angelegt.

Dem Eingang iq_stIlsData.i_stRunTime.astSlaveLimits[ ].lrPosVel muss ein Wert größer oder gleich 1 übergeben werden.

ProfileAlreadyInUse

Enumerationsname:

ProfileAlreadyInUse

Enumerationswert:

116

Beschreibung:

Das Profil wird bereits verwendet.

Problem

Ursache

Lösung

-

Das Bewegungsprofil wird bereits verwendet.

Überprüfen Sie die Bewegungsdaten.

ProfileIdInvalid

Enumerationsname:

ProfileIdInvalid

Enumerationswert:

114

Beschreibung:

ProfileId ist ungültig.

Problem

Ursache

Lösung

-

Das Profil existiert nicht

Überprüfen Sie die Werte an den Eingängen iq_stMultiCamData.astCamPoint[ ].diProfileId.

Stopping

Enumerationsname:

Stopping

Enumerationswert:

7

Beschreibung:

Aktive Fahrbefehle werden gestoppt.

Die Achse wird angehalten.

StopPositionRange

Enumerationsname:

StopPositionRange

Enumerationswert:

202

Beschreibung:

StopPosition ist außerhalb des gültigen Bereichs.

Problem

Ursache

Lösung

-

Am Eingang i_lrStopPosition wurde ein negativer Wert übergeben.

Dem Eingang i_lrStopPosition muss ein Wert größer oder gleich 0 übergeben werden.

-

Am Eingang i_lrStopPosition wurde ein Wert außerhalb der Periode übergeben.

Am Eingang i_lrStopPosition muss ein Wert kleiner oder gleich dem Wert am Eingang i_lrPeriod übergeben werden.

TimeGridSizeRange

Enumerationsname:

TimeGridSizeRange

Enumerationswert:

204

Beschreibung:

TimeGridSize ist außerhalb des gültigen Bereichs.

Problem

Ursache

Lösung

-

Am Eingang iq_stIlsData.i_stConfig.diTimeGridSize wurde ein ungültiger Wert angelegt.

Am Eingang iq_stIlsData.i_stConfig.diTimeGridSize muss ein Wert größer als 0 und kleiner als 100 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

-

Am Eingang i_lrVel wurde ein ungültiger Wert angelegt.

Geben Sie für i_lrVel einen Wert zwischen 0 und dem Parameter MaxVel der Achse an.

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.

WaitUntilDisabled

Enumerationsname:

WaitUntilDisabled

Enumerationswert:

8

Beschreibung:

Warten, bis die POU deaktiviert ist.

YFactorRange

Enumerationsname:

YFactorRange

Enumerationswert:

206

Beschreibung:

YFactor ist außerhalb des gültigen Bereichs.

Problem

Ursache

Lösung

-

Am Eingang iq_stIlsData.i_astCamData[ ].lrYFactor wurde eine Zahl < 1 übergeben.

Der YFactor muss mindestens 1 sein.