Hallo liebes Forum, ich hoffe ihr könnt mir vielleicht helfen, bin ansonsten nirgends fündig geworden. Konkret geht es um folgendes: Ich programmiere in C# gerade eine Art "Simulation" mit einem Elektro-Fahrzeug. Der E-Motor hat eine gewisse PMax. Aktuell kann ich 100% Leistung geben und der Motor beschleunigt solange (bis zu einer gewissen V), bis die Widerstände zu groß werden. Nun möchte ich aber die Geschwindigkeit regeln können, soll heißen: ich gebe eine V_soll vor und der beschleunigt mit P dorthin (mit P erhalte ich an der aktuellen geschw. eine Kraft => beschleunigung => neue geschw.). Der geregelte P-Wert muss zwischen -100...+100% von Pmax liegen (negativ=bremsen im generatorbetrieb). Mein Problem ist: ich erhalte einen gewissen Regelfehler in (beispielsweise) km/h oder m/s, weiß aber nicht so recht wie ich damit den Leistungsgrad regle... Ich wäre um jegliche Hilfe sehr dankbar!!
Eine eher triviale Simulation ohne viel Realitaetsbezug. Da Leistung, Kraft und Geschwindigkeit einfach zusammenhaengen, ann man das doch rechnen. Ein I-Regler macht den fehler Null.
Julian Nachname schrieb: > Nun möchte ich aber die Geschwindigkeit regeln können, soll heißen: ich > gebe eine V_soll vor und der beschleunigt mit P dorthin so so. Und wie macht er das? Wie ist deine jetzige Regelschleife aufgebaut? > Mein Problem ist: ich erhalte einen gewissen Regelfehler in > (beispielsweise) km/h oder m/s, weiß aber nicht so recht wie ich damit > den Leistungsgrad regle... na ja. offensichtlich, wenn die Geschwindigkeit niedriger ist als V_Soll, dann muss mehr P gegeben werden (aber nicht mehr als P_max). Ist sie zu hoch, dann muss P verringert werden. > Ich wäre um jegliche Hilfe sehr dankbar!! PID Regler
Bin erst ganz neu in der thematik, also war Simulation vielleicht auch etwas übertrieben ;) Wie könnte hierbei die Formel für einen Regler aussehen (welche dann im code implementiert wird)?
Julian Nachname schrieb: > Bin erst ganz neu in der thematik, also war Simulation vielleicht auch > etwas übertrieben ;) Wie könnte hierbei die Formel für einen Regler > aussehen (welche dann im code implementiert wird)? Im allereinfachsten Fall?
1 | if( Geschwindigkeit zu klein && P kleiner als P_max ) |
2 | P++; |
3 | |
4 | else if( Geschwindigkeit zu gross && P größer als P_Min ) |
5 | P--; |
und das dann alle paar Millisekunden zb mit einem Timer ausführen lassen. so richtig glücklich wirst du damit nicht werden. Der Regler wird Schwingen wie Sau. Aber - vielleicht auch nicht. Man könnte jetzt natürlich auch hergehen und die Erhöhung bzw. Erniedrigung von der Größe der Abweichung abhängig machen. Ansonsten: dann eben ein PID Regler. (mal danach googeln)
Julian Nachname schrieb: > Wie könnte hierbei die Formel für einen Regler > aussehen (welche dann im code implementiert wird)? Suche nach "pi regler c#" und du erhälst einen Haufen Treffer incl. Code für einen PI Regler. Den D (differnzierender Regler) brauchst du erst mal nicht, wenn du den PI Regler im Schlaf beherrschst kannst du dann auf einen PID erweitern.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.