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

P_Regler_mit _Motor

DATA
2012-08-14
2012-08-16
  • DATA - 2012-08-14

    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.

     
  • Schuero - 2012-08-15

    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

     
  • DATA - 2012-08-15

    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

     
  • J Schohaus - 2012-08-16

    Hallo DATA

    1. 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.

    1. 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

     

Log in to post a comment.