Welcome to our new forum
All users of the legacy CODESYS Forums, please create a new account at account.codesys.com. But make sure to use the same E-Mail address as in the old Forum. Then your posts will be matched.
Close
Hallo CoDeSys Gemeinde...
ich habe da folgendes Problem und zwar soll ich eine Baustein namens "Motor" programmieren, indem die Drehzahl n in Abhängigkeit von der Erregerspannung Ue und dem Lastmoment ML nach folgender Beziehung berechnet wird.
n:=(5000/Ue)-(1082ML)/UeUe; Die Formel ist so vorgegeben.
Soweit so gut, dabei werden die Erregerspannung Ue und das Lastmoment ML in ihren physikalischen Einheiten angegeben. Die Drehzahl n soll den Wert des Sensors in % liefern und auf den Messbereich 0-100% begrenzt werden.
Ich weiss nicht , wie ich das in Strukturierten Text umsetzen kann.
Könnt ihr mir da helfen wäre schön .Danke.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Du erstellst einen neuen Funktions Block (FB) mit dem Namen "Motor"
Dann kopierst du deine Gleichen; so wie du sie gepostet hast; in den neuen FB.
CoDeSys wird dann meckern, dass der die Variablen nicht kennt. (Wie auch)
Aber der Assistent der Variablenkonfiguration bietet dier an das Problem zu beheben.
In diesem Editor kannst du festlegen ob das eine Eingang oder ein Ausgang incl. Typ werden soll.
Damit nix ungültiges deinen FB verläßt kannst du mit "LIMIT" (Siehe in der Hilfe das Code - Beispiel)
deine Ausgang (wäre bei dir das "n" ) begrenzen
Gruß schuero
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
das mit der Variablendeklaration ist mir schon klar.... das was ich habe ist folgendes...
FUNCTION_BLOCK Motor
VAR_INPUT
Ue:REAL; //Erregerspannung
ML:REAL; //Lastmoment
END_VAR
VAR_OUTPUT
n:REAL; //Drehzahl
END_VAR
n:=(5000/Ue) - ((1082ML)/(UeUe)); //Formel wird so vorgegeben
Jetzt fehlt mir der Weg, wie ich die Drehzahl n in % umrechnen kann. Das Lastmoment ML und die Erregerspannung Ue werden physikalisch über die VISU vorgegeben.
Die Drehzahl n soll in Prozent umgerechnet werden, weil hinter dem FB"Motor" noch ein P Regler sitzt der die Werte in % entgegennimmt. So soll's halt sein....
In LIMIT kann ich doch nur Integer Werte in die Parameter Liste eintragen oder???
So wie in der Hilfe:
OUT := LIMIT(Min, IN, Max) means:
OUT := MIN (MAX (IN, Min), Max)
Danke
Gruß DATA
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
wie ist den die Mathematische Beziehung von Drehzahl zu Prozent?
oder welche Drehzahl hast du bei 100% dann sollte die Umrechnung doch nur Dreisatz sein.
2.
Zitat:
In LIMIT kann ich doch nur Integer Werte in die Parameter Liste eintragen oder???
Wenn Du in der Hilfe schon reinschaust solltest du auch weiterlesen.
Zitat:
IN und OUT können von beliebigem Typ sein.
Um eine hohe genauigkeit zu bekommen sollte in Real gerechnet werden.
Der kompeiler richtet sich nach der ersten Variable die er benutzt. Also deine konstante 5000 die als INT interpretiert würde.
Also die Formel Folgend verwenden.
n:=(5000.0/Ue) - ((1082.0ML)/(UeUe));
mfG Jochen
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hallo CoDeSys Gemeinde...
ich habe da folgendes Problem und zwar soll ich eine Baustein namens "Motor" programmieren, indem die Drehzahl n in Abhängigkeit von der Erregerspannung Ue und dem Lastmoment ML nach folgender Beziehung berechnet wird.
n:=(5000/Ue)-(1082ML)/UeUe; Die Formel ist so vorgegeben.
Soweit so gut, dabei werden die Erregerspannung Ue und das Lastmoment ML in ihren physikalischen Einheiten angegeben. Die Drehzahl n soll den Wert des Sensors in % liefern und auf den Messbereich 0-100% begrenzt werden.
Ich weiss nicht , wie ich das in Strukturierten Text umsetzen kann.
Könnt ihr mir da helfen wäre schön .Danke.
Hallo
Du erstellst einen neuen Funktions Block (FB) mit dem Namen "Motor"
Dann kopierst du deine Gleichen; so wie du sie gepostet hast; in den neuen FB.
CoDeSys wird dann meckern, dass der die Variablen nicht kennt. (Wie auch)
Aber der Assistent der Variablenkonfiguration bietet dier an das Problem zu beheben.
In diesem Editor kannst du festlegen ob das eine Eingang oder ein Ausgang incl. Typ werden soll.
Damit nix ungültiges deinen FB verläßt kannst du mit "LIMIT" (Siehe in der Hilfe das Code - Beispiel)
deine Ausgang (wäre bei dir das "n" ) begrenzen
Gruß schuero
Hallo schuero,
danke für deine Hilfe....
das mit der Variablendeklaration ist mir schon klar.... das was ich habe ist folgendes...
FUNCTION_BLOCK Motor
VAR_INPUT
Ue:REAL; //Erregerspannung
ML:REAL; //Lastmoment
END_VAR
VAR_OUTPUT
n:REAL; //Drehzahl
END_VAR
n:=(5000/Ue) - ((1082ML)/(UeUe)); //Formel wird so vorgegeben
Jetzt fehlt mir der Weg, wie ich die Drehzahl n in % umrechnen kann. Das Lastmoment ML und die Erregerspannung Ue werden physikalisch über die VISU vorgegeben.
Die Drehzahl n soll in Prozent umgerechnet werden, weil hinter dem FB"Motor" noch ein P Regler sitzt der die Werte in % entgegennimmt. So soll's halt sein....
In LIMIT kann ich doch nur Integer Werte in die Parameter Liste eintragen oder???
So wie in der Hilfe:
OUT := LIMIT(Min, IN, Max) means:
OUT := MIN (MAX (IN, Min), Max)
Danke
Gruß DATA
Hallo DATA
oder welche Drehzahl hast du bei 100% dann sollte die Umrechnung doch nur Dreisatz sein.
2.
Wenn Du in der Hilfe schon reinschaust solltest du auch weiterlesen.
Der kompeiler richtet sich nach der ersten Variable die er benutzt. Also deine konstante 5000 die als INT interpretiert würde.
Also die Formel Folgend verwenden.
n:=(5000.0/Ue) - ((1082.0ML)/(UeUe));
mfG Jochen