Forum: PC-Programmierung Einfache Regelung einer Leistung via Geschw.


von Julian N. (julian_c)


Lesenswert?

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!!

von Pandur S. (jetztnicht)


Lesenswert?

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.

von Karl H. (kbuchegg)


Lesenswert?

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

von Julian N. (julian_c)


Lesenswert?

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)?

von Karl H. (kbuchegg)


Lesenswert?

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)

von Udo S. (urschmitt)


Lesenswert?

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
Noch kein Account? Hier anmelden.