FC_DoubleCrankTransformation - Allgemeine Informationen
Typ |
Funktion |
Verfügbar ab: |
V1.0.3.0 |
Versionen: |
Aktuelle Version |
Transformation einer Doppelkurbel
Diese Funktion berechnet aus dem eingangsseitigen Winkel einer Doppelkurbel den ausgangsseitigen Winkel (kinematische Transformation) und aus dem eingangsseitig eingeprägten Drehmoment das ausgangsseitig daraus resultierende Drehmoment (mechanische Transformation). Die Bedeutung der beteiligten Größen kann der folgenden Abbildung entnommen werden. Die Winkel werden im mathematisch positiven Sinn (gegen den Uhrzeigersinn) ausgehend von der positiven X-Richtung gemessen. Es muss beachtet werden, dass bei manchen Doppelkurbeln auf Grund der mechanischen Gegebenheiten nicht alle eingangsseitigen Winkel angefahren werden können. Weiterhin muss berücksichtigt werden, dass es in der Regel für einen eingangsseitigen Winkel zwei zugehörige ausgangsseitige Winkel gibt, d. h. dass die Doppelkurbel-Transformation nicht eindeutig ist (siehe Parameter i_diSector). Die Auswahl des für die Anwendung sinnvollen Winkels ist Aufgabe des Anwenders.
Da es sich bei der Doppelkurbel um eine symmetrische Mechanik handelt, sind keine separaten Funktionen für Vorwärts- und Rückwärtstransformation erforderlich. Die Rückwärtstransformation erfolgt durch folgende Parameteränderung: i_lrRadius1 -> i_lrRadius2, i_lrRadius2 -> i_lrRadius1, i_lrXOffset -> - i_lrXOffset, i_lrYOffset -> - i_lrYOffset.
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_lrRadius1 |
LREAL |
Länge des eingangsseitigen Radius, Wertebereich: > 0,0 |
i_lrPushRod |
LREAL |
Länge der verbindenden Schubstange, Wertebereich: > 0,0 |
i_lrRadius2 |
LREAL |
Länge des ausgangsseitigen Radius, Wertebereich: > 0,0 |
i_lrXOffset |
LREAL |
X-Offset zwischen eingangsseitigem und ausgangsseitigem Drehgelenk. Dieser Wert ist vorzeichenbehaftet. |
i_lrYOffset |
LREAL |
Y-Offset zwischen eingangsseitigem und ausgangsseitigem Drehgelenk. Dieser Wert ist vorzeichenbehaftet. |
i_diSector |
DINT |
Wie bereits oben erläutert ist die Doppelkurbeltransformation in der Regel nicht eindeutig, d. h . es existieren zwei ausgangsseitige Winkel, die zum eingangsseitigen Winkel i_lrAngularPosition1 gehören. Ist i_diSector = 1, so wird an q_lrAngularPosition2 die erste der beiden Lösungen ausgegeben, ist i_diSector = 2, so wird die zweite Lösung ausgegeben. |
i_lrAngularPosition1 |
LREAL |
Eingangsseitig vorgegebener Winkel |
i_lrTorque1 |
LREAL |
Eingangsseitig vorgegebenes Drehmoment |
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_lrAngularPosition2 |
LREAL |
Aus i_lrAngularPosition1 berechneter ausgangsseitiger Winkel. Wenn mehrere Lösungen existieren, legt der Parameter i_diSector fest, welche ausgegeben wird. |
q_lrTorque2 |
LREAL |
Aus i_lrTorque1 berechnetes ausgangsseitiges Drehmoment. |
q_etDiag |
q_etDiagExt |
Enumerationswert |
Beschreibung |
---|---|---|---|
OK |
0 |
OK |
|
InputParameterInvalid |
68 |
AngularPosition1 ist außerhalb des gültigen Bereichs |
|
InputParameterInvalid |
64 |
PushRod ist außerhalb des gültigen Bereichs. |
|
InputParameterInvalid |
29 |
Radius1 ist außerhalb des gültigen Bereichs. |
|
InputParameterInvalid |
30 |
Radius2 ist außerhalb des gültigen Bereichs. |
|
InputParameterInvalid |
67 |
XOffset ist außerhalb des gültigen Bereichs. |
|
InputParameterInvalid |
174 |
YOffset ist außerhalb des gültigen Bereichs. |
Enumerationsname: |
AngularPosition1Range |
Enumerationswert: |
68 |
Beschreibung: |
AngularPosition1 ist außerhalb des gültigen Bereichs |
Problem |
Ursache |
Lösung |
---|---|---|
- |
Die Berechnung der Ausgänge q_lrLinearPosition2 und q_lrTorque2 ist für den vorgegebenen Wert von i_lrAngularPosition1 nicht möglich. |
Prüfung i_lrAngularPosition1 Überprüfen Sie alle Parameter, die in die Berechnung einfließen: i_lrRadius1, i_lrPushRod, i_lrRadius2, i_lrXOffset, i_lrYOffset, i_diSector. |
Enumerationsname: |
Ok |
Enumerationswert: |
0 |
Beschreibung: |
OK |
Die Transformation 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: |
Radius1Range |
Enumerationswert: |
29 |
Beschreibung: |
Radius1 ist außerhalb des gültigen Bereichs. |
Problem |
Ursache |
Lösung |
---|---|---|
- |
Am Eingang i_lrRadius1 wurde ein negativer Wert angelegt. |
Dem Eingang i_lrRadius1 muss ein Wert größer als 0 übergeben werden. |
Enumerationsname: |
Radius2Range |
Enumerationswert: |
30 |
Beschreibung: |
Radius2 ist außerhalb des gültigen Bereichs. |
Problem |
Ursache |
Lösung |
---|---|---|
- |
Am Eingang i_lrRadius2 wurde ein negativer Wert angelegt. |
Dem Eingang i_lrRadius2 muss ein Wert größer als 0 übergeben werden. |
Enumerationsname: |
XOffsetRange |
Enumerationswert: |
67 |
Beschreibung: |
XOffset ist außerhalb des gültigen Bereichs. |
Problem |
Ursache |
Lösung |
---|---|---|
- |
Am Eingang i_lrXOffset wurde eine Zahl angelegt, deren Betrag kleiner als Gc_lrZeroTolerance ist. |
i_lrXOffset darf nicht 0 sein. |
Enumerationsname: |
YOffsetRange |
Enumerationswert: |
174 |
Beschreibung: |
YOffset ist außerhalb des gültigen Bereichs. |
Problem |
Ursache |
Lösung |
---|---|---|
- |
Am Eingang i_lrYOffset wurde eine Zahl angelegt, deren Betrag kleiner als Gc_lrZeroTolerance ist. |
i_lrYOffset darf nicht 0 sein. |