FB_Crank

 

FB_Crank - Allgemeine Informationen

Übersicht

Typ

Funktionsbaustein

Verfügbar ab

V1.0.3.0

Übernommen aus

-

Implementiert

-

Versionen:

Aktuelle Version

Aufgabe

Realisierung einer Schubkurbel

Beschreibung

Der Funktionsbaustein stellt die folgenden Funktionen zur Verfügung:

oEs können sämtliche Varianten von Kurbeln verwaltet werden. Dies umfasst auch Kurbeln, die auf Grund der Längenverhältnisse von R, L, und D keine vollständigen Umdrehungen ausführen können, und solche, bei denen sich die Schubstange auf der „linken“ Seite befindet (gestrichelt dargestellt).

oFreie Parametrierung der Interpolationsintervalle um die Umkehrpunkte des Schlittens und die Verwendung von variablen Geradenanteilen bei der Überlappung von Interpolationsbereichen.

Anlagenprinzip für FB_Crank

G-SE-0068735.1.gif-high.gif

 

 

Damit wird eine Transformation der linearen Bewegung des Schlittens in eine Drehbewegung der Kurbel durchgeführt. Die Bewegung des Schlittens kann dadurch ohne Rücksicht auf die Nichtlinearität des Antriebs erfolgen.

 

Anforderungen:

Die Mechanik muss so angelegt sein, dass die Kurbel ihre Drehung (360°-Drehung) abschließen kann, selbst wenn nicht der vollständige Weg genutzt wird.

Bedingt durch die endliche Dynamik des Antriebs wird der Weg des Schlittens nicht vollständig linearisiert. Es wird ein Abstand PoleDistance zu den Maximalwerten eingehalten.

Es wird sowohl der obere Teil der Kurbel, lrPhiMin bis lrPhiMax, als auch der untere Teil linearisiert. Zwischen den linearisierten Teilen werden allgemeine Polynome 5. Grades eingebaut. Dies erlaubt auch einen Betrieb über den linerarisierten Bereich hinaus. Der Kurbel-Funktions­baustein erlaubt ein unbeschränktes Überfahren aller Positionen in jeder Richtung.

Der lineare Weg wird für eine Kurbelumdrehung in positiver Richtung gezählt. Auch wenn der Schlitten im unteren Bereich der Kurbel rückwärts fährt, ist die Zählweise positiv.

Die Periode für die Linearachse ist 2 * (X1 – X0). X1 ist die rechte maximale und X0 die linke maximale Position des Schlittens. Die Periode für die Kurbel ist 360°.

Zählweise bei der Kurbeltransformation

G-SE-0068724.1.gif-high.gif

 

 

Die Kurbelposition reicht von 0° bis 360°. Die Schlittenposition reicht von 0 mm bis 100 mm, und dann nicht rückwärts, sondern weiterlaufend bis 200 mm. Danach beginnt sowohl die Position der Kurbel als auch die des Schlittens wieder bei 0.

Linearisierung der kompletten Kurbelumdrehung (vorwärts und rückwärts). An den Polen der Kurbel wird ein poly5com verwendet. Für die Berechnung sind ca. 10 ms erforderlich, die Funktion zur Zykluszeitüberwachung wird für die Berechnung auf 50 ms gesetzt.

Skizze des Anlagenprinzips

HINWEIS: Das obige X-Y-Koordinatensystem kann beliebig im Raum orientiert werden. Nur Folgendes ist zu berücksichtigen: Bei einer Draufsicht wird der Winkel wie dargestellt im Uhrzeigersinn entgegen der negativen X-Richtung gemessen. Der Parameter für die Motorrichtung der Kurbelachse („Motor Direction of the Crank Axis“) muss so eingestellt werden, dass ihre Position bei einer Drehung im Uhrzeigersinn (aus dieser Perspektive betrachtet) größer wird.

Anlagenprinzip für den Kurbel-FB

G-SE-0068723.1.gif-high.gif

 

 

Ein Schlitten wird über eine Kurbel von einem Servoantrieb positioniert.

Blockschaltbild für FB_Crank

G-SE-0068740.1.gif-high.gif

 

 

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.

Mit der ansteigenden Flanke werden die Daten der Struktur ST_CrankData eingelesen und in das Bewegungsgesetz umgerechnet. Diese Vorberechnungen sind zeitintensiv. Hierzu werden die Überwachungszeiten für die Zykluszeitüberwachung vorübergehend hochgesetzt. Es sollte daher vermieden werden, mehrere dieser POUs im gleichen Zyklus einer Task zu aktivieren.

Mit der fallenden Flanke werden alle Ressourcen, die die POU belegt hat, wieder freigegeben.

i_xStart

BOOL

Verbindet den durch i_lencEncoder vorgegebenen logischen Geber mit der virtuellen Schlittenachse (i_ifDriveSlide) und startet die Kurbeltransformation. Änderungen der Eingangsdaten werden bei den Flanken dieses Eingangs nicht berücksichtigt.

i_ifDriveCrank

IF_Drive

Eingang für die zu steuernde Kurbelachse.

i_ifDriveSlide

IF_Drive

Eingang für eine virtuelle Schlittenachse, die vorgibt, wie sich die reale Schlittenachse bewegen soll.

i_xHomed

BOOL

Bevor der Funktionsbaustein die Verarbeitung startet, muss entweder die Kurbel- oder die Schlittenachse referenziert werden, d. h. eine definierte Position innerhalb des zulässigen Verarbeitungsbereichs (lrPhiLogMin ... lrPhiLogMax für die Kurbelachse und lrXLogMin ... lrXLogMax für die Linearachse) aufweisen. Die Position der nicht referenzierten Achse wird hieraus berechnet und von der POU gesetzt. Dieser Eingang muss vor dem Setzen des Eingangs i_xStart gesetzt werden, wenn eine der Achsen referenziert wurde. Die POU arbeitet dann im normalen Transformationsmodus. Ist der Eingang i_xHomed beim Setzen des Start-Eingangs nicht gesetzt, so überträgt der Funktionsbaustein die vorgegebene Linearbewegung 1:1 auf die Kurbelachse.

i_diStartMode

DINT

Referenziermodi:

o0 = Der Sensor befindet sich an der Kurbelachse.

Die Position der Kurbelachse muss daher beim Referenzieren extern auf den entsprechenden Wert gesetzt werden. Die zugehörige Position der Linearachse wird beim Setzen des Start- Eingangs von der POU gesetzt.

o1 = Der Sensor befindet sich an der Linearachse.

Die Position der Linearachse muss daher beim Referenzieren extern auf den entsprechenden Wert gesetzt werden. Die zugehörige Position der Kurbelachse wird beim Setzen des Start- Eingangs von der POU gesetzt.

o2 = Die Position der Linearachse wird auf ihren Minimalwert und die Position der Kurbelachse auf den diesem entsprechenden Winkel gesetzt.

o3 = In diesem Referenziermodus wird die oben für den Eingang i_xHomed angeführten 1:1-Transformationsmodus für die Referenzierfahrt verwendet. Wie oben bereits erläutert, überträgt die POU die vorgegebene Linearbewegung 1:1 auf die Kurbelachse, wenn beim Setzen des Eingangs i_xStart der Eingang i_xHomed = FALSE ist. Diese Transformation kann für Referenzierfahrten eingesetzt werden: Wenn das System seine Referenzposition erreicht hat, muss die Position der virtuellen Linearachse auf den entsprechenden Wert der Istposition gesetzt werden. Anschließend muss der Eingang i_xHomed auf TRUE gesetzt werden. Daraufhin bricht die Kurbel-POU ihre 1:1-Transformationskurve ab, berechnet aus der Linearposition die zugehörige Position der Crank-Achse und setzt diese auf den berechneten Wert. Der Funktionsbaustein muss jetzt neu gestartet werden (steigende Flanke am Eingang i_xStart). Währenddessen muss der Eingang i_xHomed  = TRUE bleiben. Die POU berechnet und setzt dann die zugehörige Linearposition und ist betriebsbereit.

Die Kurbelposition muss unbedingt gesetzt werden, da sich die Kurbel in der Zeit zwischen der Referenzierfahrt und dem Neustart der POU bewegen kann. Die Linearposition ist dann nicht mehr gültig.

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_xSynchron

BOOL

Dieser Ausgang ist gesetzt, wenn sich die Kurbel in einem Bereich befindet, in dem keine Interpolation stattfindet. Wenn dieser Ausgang gesetzt wird, stimmt die Linearposition mit der Sollposition überein.

q_lrSlideLogPosition

LREAL

Aktuelle logische Position der Linearachse.

q_lrSlideMechPosition

LREAL

Aktuelle mechanische Position der Linearachse. Einheit: Längeneinheiten

q_lrCrankLogPosition

LREAL

Aktuelle logische Position der Kurbelachse.

q_lrCrankMechPosition

LREAL

Aktuelle mechanische Position der Kurbelachse. Einheit: Grad

q_lrUserCrankMechPosition

LREAL

Anwenderdefinierte mechanische Position der Kurbelachse, Leitet sich aus q_lrCrankMechPosition durch Addition eines Offsets und Multiplikation mit einer Drehrichtung ab (siehe iq_stCrankData.lrUserMechPosOffset und iq_stCrankData.lrUserMechPosDirection). Einheit: Grad

Ein-/Ausgang

Datentyp

Beschreibung

iq_lencEncoder

L_ENC

Eingang für einen logischen Geber, der ganz dem Kurbelbaustein zur Verfügung stehen muss. Er wird bei Setzen des Eingangs Start an die Schlittenachse i_ifDriveSlide gebunden und für die Kurvenbefehle benötigt, die der Funktionsbaustein verwendet.

iq_stCrankData

ST_CrankData

Struktur, die sämtliche Daten der Kurbel sowie alle Berechnungsergebnisse der Crank3-POU enthält.

Beispiele

olrRadius: 100 mm

olrPushRod: 300 mm

olrOffset: 0

olrXStart: 0 mm

G-SE-0068725.1.gif-high.gif

 

 

Daraus ergeben sich die obigen Positionsverläufe, je nachdem, ob die Kurbelstange links (rot) oder rechts (blau) liegt. Die gestrichelten Linien sind die „logischen Positionen“. Diese sind eine Spiegelung der „mechanischen Positionen“ ab der 2. Polstelle. Dies ist nötig, um eine eindeutige Zuordung der Schlittenposition zur Kurbelposition zu erreichen.

G-SE-0068726.1.gif-high.gif

 

 

Mit den Parametern lrP5Pole1IntervalLow, lrP5Pole1IntervalHigh, lrP5Pole2In­tervalLow und lrP5Pole2IntervalHigh lässt sich der Bereich festlegen, in dem die Kurbel linearisiert wird. Die Lücken der linearisierten Bereiche über die Polstellen werden mit „allgemeinen Polynomem 5.Grades“ verbunden.

Mechaniken, die nicht durchdrehen können:

Beispiel1: Sehr kurze Kurbelstange (lrPushRod)

olrRadius = 100

olrPushRod = 50

olrOffset = 0

olrXStart = 0

G-SE-0068727.1.gif-high.gif

 

 

Hier sind zwei mögliche Verarbeitungsbereiche für die Kurbel verfügbar.

G-SE-0068742.1.gif-high.gif

 

 

Die gestrichelte rote Linie ist wieder die logische Position, die am Pol1 gespiegelt ist. Der logische Bewegungsbereich des Schlittens reicht somit von ca. 87 bis 213 mm und -87 bis -13. Der logische Winkel der Kurbel liegt demzufolge im Bereich von 150 bis 210 Grad und -30 bis +30 Grad. Der Übergang an der Polstelle wird mit einem „allgemeinen Polynom 5. Grades“ durchfahren.

Beispiel 2: Relativ kurze Kurbelstange (lrPushRod) und lrOffset hoch.

olrRadius = 100

olrPushRod = 100

olrOffset = 100

olrXStart = 0

oKurbelstange rechts

G-SE-0068728.1.gif-high.gif

 

 

-> Ein Verarbeitungsbereich und begrenzte Drehung

G-SE-0068741.1.gif-high.gif

 

 

Die gestrichelte rote Linie ist wieder die logische Position, die am Pol1 gespiegelt ist. Der logische Bewegungsbereich des Schlittens reicht somit von ca. 87 bis 213 mm und -87 bis -13. Der logische Winkel der Kurbel liegt demzufolge im Bereich von 150 bis 210 Grad und -30 bis +30 Grad. Der Übergang an der Polstelle wird mit einem „allgemeinen Polynom 5. Grades“ durchfahren.

Programmierbeispiel:

Die Parameter für den Crank3 müssen noch vor der Aktivierung der POU gesetzt werden.

G_stCrankData.lrRadius := 100;
G_stCrankData.lrPushRod := 300;
G_stCrankData.lrXStart := 200;
G_stCrankData.lrOffset := 0;
G_stCrankData.lrP5Pole1IntervalLow := 10;
G_stCrankData.lrP5Pole1IntervalHigh := 20;
G_stCrankData.lrP5Pole2IntervalLow := 20;
G_stCrankData.lrP5Pole2IntervalHigh := 10;
G_stCrankData.xCrankLeft := FALSE;
G_stCrankData.xRange := FALSE;

xCrankLeft = FALSE bedeutet, die Kurbelstange ist rechts.

XRange = FALSE bedeutet, dass range2 verwendet wird, wenn zwei Verarbeitungsbereiche vorhanden sind.

Parametrierungsbeispiele

In den folgenden Abbildungen gilt stets:

oR = 100 mm

oL = 200 mm

G-SE-0068736.1.gif-high.gif

 

 

G_stCrankData.lrRadius := 100;
G_stCrankData.lrPushRod := 200;
G_stCrankData.lrXStart := 170;
G_stCrankData.lrOffset := 50;
G_stCrankData.xCrankLeft := FALSE;

G-SE-0068737.1.gif-high.gif

 

 

G_stCrankData.lrRadius := 100;
G_stCrankData.lrPushRod := 200;
G_stCrankData.lrXStart := 120;
G_stCrankData.lrOffset := -50;
G_stCrankData.xCrankLeft := FALSE;

G-SE-0068738.1.gif-high.gif

 

 

G_stCrankData.lrRadius := 100;
G_stCrankData.lrPushRod := 200;
G_stCrankData.lrXStart := -120;
G_stCrankData.lrOffset := 50;
G_stCrankData.xCrankLeft := TRUE;

G-SE-0068739.1.gif-high.gif

 

 

G_stCrankData.lrRadius := 100;
G_stCrankData.lrPushRod := 200;
G_stCrankData.lrXStart := 150;
G_stCrankData.lrOffset := -50;
G_stCrankData.xCrankLeft := TRUE;

Beispiel für die Parameter lrP5Pole1IntervalLow, lrP5Pole1IntervalHigh, lrP5Pole2IntervalLow, lrP5Pole2IntervalHigh, lrP5RangeLow, lrP5RangeHigh

Im folgenden Beispiel gilt:

G_stCrankData.lrRadius := 100;
G_stCrankData.lrPushRod := 200;
G_stCrankData.lrXStart := 0;
G_stCrankData.lrOffset := 50;
G_stCrankData.xCrankLeft := FALSE;

In diesem Fall kann die Kurbel vollständige Umdrehungen ausführen (es gilt daher G_stCrankData.xEndlessCrank = TRUE) und es ergibt sich für den Bereich der logischen Position:

lrXLogMin = 86.6..., lrXLogSwitch = 295.8..., lrXLogMax = 505.0...

Und für den logischen Winkel:

lrPhiLogMin = 330, lrPhiLogSwitch = 530.4..., lrPhiLogMax = 690

Des Weiteren G_stCrankData.xXLogDirPos = TRUE, z. B. lrXLogMin ist gleich lrPhiLogMin und lrXLogMax ist gleich lrPhiLogMax. Aktion

G_stCrankData.lrP5Pole1IntervalLow = 10
G_stCrankData.lrP5Pole1IntervalHigh = 20
G_stCrankData.lrP5Pole2IntervalLow = 30
G_stCrankData.lrP5Pole2IntervalHigh = 40

Dann ergibt sich folgender Verlauf. Die Bereiche, in denen mit „allgemeinen Polynomen 5. Grades“ interpoliert wird, sind mit Cursor gekennzeichnet. Der rote Trace stellt die logische Position der Linearachse dar, der blaue Trace den logischen Winkel der Kurbelachse. Wie weiter oben beschrieben, liegt Pol 1 bei lrPhiLogMin, Pol 2 bei lrPhiLogSwitch.

Bereich, der lrP5Pole1IntervalHigh entspricht

G-SE-0068729.1.gif-high.gif

 

 

Bereich, der lrP5Pole2IntervalLow entspricht

G-SE-0068730.1.gif-high.gif

 

 

Bereich, der lrP5Pole2IntervalHigh entspricht

G-SE-0068731.1.gif-high.gif

 

 

Bereich, der lrP5Pole1IntervalLow entspricht

G-SE-0068732.1.gif-high.gif

 

 

Die Interpolations-Intervalle für die Pole wurden hier so gewählt, dass keine Überlappung vorhanden war. Die Parameter lrP5RangeLow und lrP5RangeHigh waren daher nicht aktiv.

Nun werden lrP5Pole2IntervalHigh und lrP5Pole1IntervalLow so groß gewählt, dass im Bereich lrXLogSwitch ... lrXLogMax eine Überlappung auftritt. Da IrXLogMax - IrXLogSwitch = 209,2..., ist das der Fall, wenn

G_stCrankData.lrP5Pole2IntervalHigh = 150
G_stCrankData.lrP5Pole1IntervalLow = 150

ausgewählt wird. Dieser Bereich wird dann mit drei Abschnitten interpoliert: Poly5 – Gerade – Poly5. Die Länge des Poly5-Abschnitts wird von den Parametern lrP5RangeLow und lrP5RangeHigh festgelegt. Die Wahl

G_stCrankData.lrP5RangeLow = 50
G_stCrankData.lrP5RangeHigh = 100

liefert folgendes Ergebnis:

lrP5RangeLow

G-SE-0068733.1.gif-high.gif

 

 

lrP5RangeHigh

G-SE-0068734.1.gif-high.gif

 

 

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

WaitUntilDisabled

8

Warten, bis die POU deaktiviert ist.

OK

Working

99

Die POU ist aktiv.

DriveConditionInvalid

DriveNotReady

10

Der Antrieb ist nicht bereit für Bewegungsbefehle.

HomingFailed

CrankPositionRange

251

Die Position von DriveCrank ist außerhalb des gültigen Bereichs.

HomingFailed

SlidePositionRange

252

Die Position von DriveSlide ist außerhalb des gültigen Bereichs.

InputParameterInvalid

CrankTravelRangeTooSmall

247

Der Bewegungsbereich des DriveCrank ist zu klein.

InputParameterInvalid

DriveInvalid

3

Verbundener Antrieb ist ungültig.

InputParameterInvalid

MechanicalDataIncompatible

246

Die mechanischen Daten sind ungültig.

InputParameterInvalid

P5Pole1IntervalHighRange

131

P5Pole1IntervalHigh ist außerhalb des gültigen Bereichs.

InputParameterInvalid

P5Pole1IntervalLowRange

248

P5Pole1IntervalLow ist außerhalb des gültigen Bereichs.

InputParameterInvalid

P5Pole2IntervalHighRange

133

P5Pole2IntervalHigh ist außerhalb des gültigen Bereichs.

InputParameterInvalid

P5Pole2IntervalLowRange

132

P5Pole2IntervalLow ist außerhalb des gültigen Bereichs.

InputParameterInvalid

P5PoleDistanceTooBig

249

P5PoleDistance ist zu groß.

InputParameterInvalid

P5RangeHighRange

137

P5RangeHigh ist außerhalb des gültigen Bereichs.

InputParameterInvalid

P5RangeLowRange

147

P5RangeLow ist außerhalb des gültigen Bereichs.

InputParameterInvalid

P5RangeSumRange

55

Die Summe der P5Range ist außerhalb des gültigen Bereichs.

InputParameterInvalid

PushRodRange

64

PushRod ist außerhalb des gültigen Bereichs.

InputParameterInvalid

RadiusRange

21

Radius  ist außerhalb des gültigen Bereichs.

InputParameterInvalid

UnknownStartMode

253

StartMode ist nicht bestimmbar.

UnexpectedProgramBehavior

ProfileAlreadyInUse

116

Das Profil wird bereits verwendet.

UnexpectedProgramBehavior

UnableToCreateMotionProfiles

250

Es konnten keine Bewegungsprofile angelegt werden.

UnexpectedProgramBehavior

UnableToStartCam

254

Die Kurve konnte nicht gestartet werden.

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.

CrankPositionRange

Enumerationsname:

CrankPositionRange

Enumerationswert:

251

Beschreibung:

Die Position von DriveCrank ist außerhalb des gültigen Bereichs.

Problem

Ursache

Lösung

-

Füri_diMode  = 0 oder i_diMode = 3 (Initiator an der Kurbel) liegt bei iq_stCrankDate.xEndlessCrank = FALSE (die Kurbelachse kann aufgrund mechanischer Randparameter keine volle Umdrehung ausführen), die RefPosition der Kurbelachse außerhalb des gültigen Bereichs.

Für dieRefPosition von i_ifDriveCrank muss Folgendes gelten: iq_stCrankData.lrPhiLogMin <= i_ifDriveCrank RefPosition <= iq_stCrankData.lrPhiLogMax.

CrankTravelRangeTooSmall

Enumerationsname:

CrankTravelRangeTooSmall

Enumerationswert:

247

Beschreibung:

Der Bewegungsbereich des DriveCrank ist zu klein.

Problem

Ursache

Lösung

-

Der mögliche Bewegungsbereich der Kurbelachse ist zu klein.

Es muss gelten: iq_stCrankData.lrPhiLogMax - iq_stCrankData.lrPhiLogMin >= 1

Überprüfen Sie iq_stCrankData.lrRadius, iq_stCrankData.lrPushRod und iq_stCrankData.lrOffset.

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

-

Am Eingang i_ifDriveCrank oder i_ifDriveSlide wurde keine Antrieb angelegt.

Den Eingängen i_ifDriveCrank und i_ifDriveSlide müssen gültige Antriebe ü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.

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.

MechanicalDataIncompatible

Enumerationsname:

MechanicalDataIncompatible

Enumerationswert:

246

Beschreibung:

Die mechanischen Daten sind ungültig.

Problem

Ursache

Lösung

-

Das Verhältnis der mechanischen Daten ist ungültig.

Die mechanischen Daten müssen so gewählt werden, dass die folgende Formel erfüllt ist:

(iq_stCrankData.lrOffset - iq_stCrankData.lrPushRod) / iq_stCrankData.lrRadius < 1,0

Die mechanischen Daten müssen so gewählt werden, dass die folgende Formel erfüllt ist:

(iq_stCrankData.lrOffset + iq_stCrankData.lrPushRod) / iq_stCrankData.lrRadius > -1,0

P5Pole1IntervalHighRange

Enumerationsname:

P5Pole1IntervalHighRange

Enumerationswert:

131

Beschreibung:

P5Pole1IntervalHigh ist außerhalb des gültigen Bereichs.

Problem

Ursache

Lösung

-

Am Eingang iq_stCrankData.lrP5Pole1IntervalHigh wurde ein ungültiger Wert angelegt.

Dem Eingang iq_stCrankData.lrP5Pole1IntervalHigh muss ein Wert größer als 0 übergeben werden.

P5Pole1IntervalLowRange

Enumerationsname:

P5Pole1IntervalLowRange

Enumerationswert:

248

Beschreibung:

P5Pole1IntervalLow ist außerhalb des gültigen Bereichs.

Problem

Ursache

Lösung

-

Am Eingang iq_stCrankData.lrP5Pole1IntervalLow wurde ein ungültiger Wert angelegt.

Dem Eingang iq_stCrankData.lrP5Pole1IntervalLow muss ein Wert größer als 0 übergeben werden.

P5Pole2IntervalHighRange

Enumerationsname:

P5Pole2IntervalHighRange

Enumerationswert:

133

Beschreibung:

P5Pole2IntervalHigh ist außerhalb des gültigen Bereichs.

Problem

Ursache

Lösung

-

Am Eingang iq_stCrankData.lrP5Pole2IntervalHigh wurde ein ungültiger Wert angelegt.

Dem Eingang iq_stCrankData.lrP5Pole2IntervalHigh muss ein Wert größer als 0 übergeben werden.

P5Pole2IntervalLowRange

Enumerationsname:

P5Pole2IntervalLowRange

Enumerationswert:

132

Beschreibung:

P5Pole2IntervalLow ist außerhalb des gültigen Bereichs.

Problem

Ursache

Lösung

-

Am Eingang iq_stCrankData.lrP5Pole2IntervalLow wurde ein ungültiger Wert angelegt.

Dem Eingang iq_stCrankData.lrP5Pole2IntervalLow muss ein Wert größer als 0 übergeben werden.

P5PoleDistanceTooBig

Enumerationsname:

P5PoleDistanceTooBig

Enumerationswert:

249

Beschreibung:

P5PoleDistance ist zu groß.

Problem

Ursache

Lösung

-

Die Polynomintervalle überlappen sich in allen Fällen.

Die Eingänge iq_stCrankData.lrP5Pole1IntervalLow, iq_stCrankData.lrP5Pole1IntervalHigh, iq_stCrankData.lrP5Pole2IntervalLow und iq_stCrankData.lrP5Pole2IntervalHigh müssen so gewählt werden, dass sich die Bereiche für die Polynomintervalle im Bereich von SlideLogPos min bis SlideLogPos max höchstens einmal überlappen.

G-SE-0068743.1.gif-high.gif

 

 

P5RangeHighRange

Enumerationsname:

P5RangeHighRange

Enumerationswert:

137

Beschreibung:

P5RangeHigh ist außerhalb des gültigen Bereichs.

Problem

Ursache

Lösung

-

Die Überlappung der Polynomintervalle wurde so gewählt, dass der X-Abschnitt eines Polynoms gleich 0 wird.

Die Eingänge iq_stCrankData.lrP5Pole1IntervalLow, iq_stCrankData.lrP5Pole1IntervalHigh, iq_stCrankData.lrP5Pole2IntervalLow und iq_stCrankData.lrP5Pole2IntervalHigh müssen so gewählt werden, dass der gesamte Intervallbereich für iq_stCrankData.lrP5Pole1IntervalHigh und iq_stCrankData.lrP5Pole2IntervalHigh aufgrund der Überlappung zu einer Geraden gezwungen werden.

G-SE-0068743.1.gif-high.gif

 

 

P5RangeLowRange

Enumerationsname:

P5RangeLowRange

Enumerationswert:

147

Beschreibung:

P5RangeLow ist außerhalb des gültigen Bereichs.

Problem

Ursache

Lösung

-

Die Überlappung der Polynomintervalle wurde so gewählt, dass der X-Abschnitt eines Polynoms gleich 0 wird.

Die Eingänge iq_stCrankData.lrP5Pole1IntervalLow, iq_stCrankData.lrP5Pole1IntervalHigh, iq_stCrankData.lrP5Pole2IntervalLow und iq_stCrankData.lrP5Pole2IntervalHigh müssen so gewählt werden, dass der gesamte Intervallbereich für iq_stCrankData.lrP5Pole1IntervalLow und iq_stCrankData.lrP5Pole2IntervalLow aufgrund der Überlappung zu einer Geraden gezwungen werden.

G-SE-0068743.1.gif-high.gif

 

 

P5RangeSumRange

Enumerationsname:

P5RangeSumRange

Enumerationswert:

55

Beschreibung:

Die Summe der P5Range ist außerhalb des gültigen Bereichs.

Problem

Ursache

Lösung

-

Die Überlappung der Polynomintervalle wurde so gewählt, dass der X-Abschnitt eines Polynoms gleich 0 wird.

Die Eingänge iq_stCrankData.lrP5Pole1IntervalLow, iq_stCrankData.lrP5Pole1IntervalHigh, iq_stCrankData.lrP5Pole2IntervalLow und iq_stCrankData.lrP5Pole2IntervalHigh müssen so gewählt werden, dass die Überlappung der zwei Polynom-Bereiche den Abstand von SlideLogPos min bis SlideLogPos switch oder von SlideLogPos max bis SlideLogPos switch nicht überschreitet. Das bedeutet, dass die Überlappung über den nächsten Pol der Kurbel hinausreicht.

G-SE-0068743.1.gif-high.gif

 

 

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.

PushRodRange

Enumerationsname:

PushRodRange

Enumerationswert:

64

Beschreibung:

PushRod ist außerhalb des gültigen Bereichs.

Problem

Ursache

Lösung

-

Am Eingang iq_stCrankData.lrPushRod wurde ein negativer Wert angelegt.

Dem Eingang iq_stCrankData.lrPushRod muss ein Wert größer als 0 übergeben werden.

RadiusRange

Enumerationsname:

RadiusRange

Enumerationswert:

21

Beschreibung:

Radius ist außerhalb des gültigen Bereichs.

Problem

Ursache

Lösung

-

Am Eingang iq_stCrankData.lrRadius wurde ein negativer Wert angelegt.

Dem Eingang iq_stCrankData.lrRadius muss ein Wert größer als 0 übergeben werden.

SlidePositionRange

Enumerationsname:

SlidePositionRange

Enumerationswert:

252

Beschreibung:

Die Position von DriveSlide ist außerhalb des gültigen Bereichs.

Problem

Ursache

Lösung

-

i_diStartMode ist 1 gesetzt.

iq_stCrankData.xEndlessCrank ist auf FALSE gesetzt und

die Position der Achse i_ifDriveSlide ist außerhalb des Intervalls [iq_stCrankData.lrXLogMin, iq_stCrankData.lrXLogMax].

Stellen Sie sicher, dass die Position von i_ifDriveSlide kleiner oder gleich iq_stCrankData.lrXLogMax und größer oder gleich iq_stCrankData.lrXLogMin bleibt.

Überprüfen Sie die Grenzen der Schubstange iq_stCrankData.lrXLogMin und iq_stCrankData.lrXLogMax.

Wählen Sie eine andere Betriebsart für iq_stCrankData.xEndlessCrank und i_diStartMode.

-

i_diStartMode ist auf 3 gesetzt.

Die Position der Achse i_ifDriveSlide ist außerhalb des Intervalls [iq_stCrankData.lrXLogMin, iq_stCrankData.lrXLogMax].

Stellen Sie sicher, dass die Position von i_ifDriveSlide kleiner oder gleich iq_stCrankData.lrXLogMax und größer oder gleich iq_stCrankData.lrXLogMin bleibt.

Überprüfen Sie die Grenzen der Schubstange iq_stCrankData.lrXLogMin und iq_stCrankData.lrXLogMax.

Wählen Sie eine andere Betriebsart für i_diStartMode.

UnableToCreateMotionProfiles

Enumerationsname:

UnableToCreateMotionProfiles

Enumerationswert:

250

Beschreibung:

Es konnten keine Bewegungsprofile angelegt werden.

Problem

Ursache

Lösung

-

Es konnten keine Bewegungsprofile für die Achse geladen werden.

Stellen Sie sicher, dass nicht zu viele Profile geladen und nicht mehr benutzte Profile gelöscht wurden.

UnableToStartCam

Enumerationsname:

UnableToStartCam

Enumerationswert:

254

Beschreibung:

Die Kurve konnte nicht gestartet werden.

Problem

Ursache

Lösung

-

Es war nicht möglich, den Fahrbefehl der Achse abzusetzen.

Überprüfen Sie die Bewegungsparameter iq_stCrankData.lrXLogMin, iq_stCrankData.lrPhiLogMin, iq_stCrankData.lrXLogMin und iq_stCrankData.lrXLogMax.

Stellen Sie sicher, dass sich das SERCOS-System in Phase 4 befindet.

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.

UnknownStartMode

Enumerationsname:

UnknownStartMode

Enumerationswert:

253

Beschreibung:

StartMode ist nicht bestimmbar.

Problem

Ursache

Lösung

-

Am Eingang i_diStartMode wurde ein ungültiger Wert angelegt.

Der Eingang i_diStartMode muss mit Werten zwischen 0 und 3 belegt werden.

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.

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.

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.

Working

Enumerationsname:

Working

Enumerationswert:

99

Beschreibung:

Die POU ist aktiv.

Der Funktionsbaustein führt die Kurbeltransformation aus.