FC_CrankReverseTransformation - Allgemeine Informationen
Typ |
Funktion |
Verfügbar ab: |
V1.0.3.0 |
Versionen: |
Aktuelle Version |
Rückwärtstransformation einer Schubkurbel
Diese Funktion berechnet aus der Linearposition einer Schubkurbel die zugehörigen möglichen Kurbelwinkel (kinematische Transformation) und aus der auf der linearen Seite gewünschten Kraft das hierfür auf der rotativen Seite erforderliche Drehmoment (mechanische Transformation). Die Bedeutung der beteiligten Größen kann der folgenden Abbildung entnommen werden. Der Kurbelwinkel wird im mathematisch positiven Sinn (gegen den Uhrzeigersinn) ausgehend von der positiven X-Richtung gemessen.
Es muss beachtet werden, dass die Linearbewegung innerhalb eines begrenzten Bereichs stattfindet. Nur Linearpositionen innerhalb dieses Bereichs sind mechanisch sinnvoll. Der Funktionsbaustein gibt bei Vorgabe einer mechanisch nicht sinnvollen Linearposition die Meldung q_etDiag = InputParameterInvalid und q_etDiagExt = LinearPositionRange aus. Weiterhin muss berücksichtigt werden, dass es für die meisten Linearpositionen zwei zugehörige Kurbelwinkel gibt, d. h. dass die Rückwärtstransformation nicht eindeutig ist (siehe Parameter i_diSector). Die Auswahl des für die Anwendung sinnvollen Kurbelwinkels ist Aufgabe des Anwenders.
HINWEIS: Diese Funktion dient nur der Berechnung der Transformation der Kurbel. Eine Übertragung von Positions-Sollwerten an Achsen findet nicht statt. Ein Vorteil dieser Vorgehensweise ist, dass die Funktion problemlos mit anderen mechanischen Berechnungsbausteinen kombiniert werden kann.
Eingang |
Datentyp |
Beschreibung |
---|---|---|
i_lrRadius |
LREAL |
Länge des Radius der Kurbel gemäß obiger Abbildung. Wertebereich > 0,0 |
i_lrPushRod |
LREAL |
Länge der Schubstange der Kurbel gemäß obiger Abbildung. Wertebereich > 0,0 |
i_lrYOffset |
LREAL |
Position der Ebene der Linearbewegung in Bezug auf die X-Achse. Achtung: Dieser Parameter ist vorzeichenbehaftet. Liegt die Ebene unterhalb der X-Achse, so muss ein negativer Wert angegeben werden. |
i_lrXOrigin |
LREAL |
Anwenderdefinierter Nullpunkt der Linearposition. Ist i_lrXOrigin = 0,0, so ist die Linearposition gleich dem Abstand von der Y-Achse (= Abstand von der Senkrechten durch den Kurbeldrehpunkt). In der Praxis möchte man jedoch häufig den Nullpunkt in eine der beiden Grenzlagen der Linearposition legen, sodass die Linearposition sich z. B. von 0,0 ... zu Xmax verschiebt. Dies kann durch Vorgabe eines geeigneten Wertes für i_lrXOrigin geschehen (siehe Abbildung oben). |
i_xCrankLeft |
BOOL |
Gibt an, in welche Richtung die Schubstange der Kurbel zeigt. TRUE: Schubstange zeigt in negative X-Richtung (in der Abbildung nach links). FALSE: Schubstange zeigt in positive X-Richtung (in der Abbildung nach rechts). |
i_diSector |
DINT |
Parameter zur Selektion des berechneten Kurbelwinkels. Wie bereits oben erläutert, hat die Rückwärtstransformation im allgemeinen zwei Lösungen. Wird i_diSector = 1 gesetzt, so wird die erste Lösung ausgegeben, wird i_diSector = 2 gesetzt, so wird die zweite Lösung ausgegeben. |
i_lrLinearPosition |
LREAL |
Linearposition der Kurbel |
i_lrForce |
LREAL |
Gewünschte Kraft auf der Linearseite |
Ausgang |
Datentyp |
Beschreibung |
---|---|---|
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_lrAngularPosition |
LREAL |
Aus der vorgegebenen Linearposition i_lrLinearPosition berechneter Kurbelwinkel (siehe i_diSector). |
q_lrTorque |
LREAL |
Auf der rotativen Seite erforderliches eingeprägtes Drehmoment, um auf der Linearseite die Kraft i_lrForce zu erhalten. |
q_etDiag |
q_etDiagExt |
Enumerationswert |
Beschreibung |
---|---|---|---|
OK |
0 |
OK |
|
InputParameterInvalid |
66 |
LinearPosition ist außerhalb des gültigen Bereichs. |
|
InputParameterInvalid |
64 |
PushRod ist außerhalb des gültigen Bereichs. |
|
InputParameterInvalid |
21 |
Radius ist außerhalb des gültigen Bereichs. |
Enumerationsname: |
LinearPositionRange |
Enumerationswert: |
66 |
Beschreibung: |
LinearPosition ist außerhalb des gültigen Bereichs. |
Problem |
Ursache |
Lösung |
---|---|---|
- |
Die am Eingang i_lrLinearPosition angelegte Position kann nicht erreicht werden. |
Überprüfen Sie den Wert an i_lrLinearPosition. Überprüfen Sie die Kenndaten der Parameter i_lrXOrigin, i_lrYOffset und i_lrRadius. |
Enumerationsname: |
Ok |
Enumerationswert: |
0 |
Beschreibung: |
OK |
Die Rückwärtstransformation wurde erfolgreich durchgeführt.
Enumerationsname: |
PushRodRange |
Enumerationswert: |
64 |
Beschreibung: |
PushRod ist außerhalb des gültigen Bereichs. |
Problem |
Ursache |
Lösung |
---|---|---|
- |
Am Eingang i_lrPushRod wurde ein negativer Wert angelegt. |
Dem Eingang i_lrPushRod muss ein Wert größer als 0 übergeben werden. |
Enumerationsname: |
RadiusRange |
Enumerationswert: |
21 |
Beschreibung: |
Radius ist außerhalb des gültigen Bereichs. |
Problem |
Ursache |
Lösung |
---|---|---|
- |
Am Eingang i_lrRadius wurde ein negativer Wert angelegt. |
Dem Eingang i_lrRadius muss ein Wert größer als 0 übergeben werden. |