PID Regler in Programmcode verstehen
lima-city → Forum → Sonstiges → Technik und Elektronik
abweichung
ausschnitt
code
datum
ersteinmal
fehler
frage
gedanke
jemand
kaputt macht
paar
problem
rampe
regler
ruder
sagen
sollwert
summe
tag
weile
-
So, ob der Titel jetzt so glücklich ist, na ich weiß auch nicht... Beschreibt aber das tag/problem">Problem.
Unzwar: Ich überlege schon ne Weile, wie man einen PID Regler eigentlich in Code umsetzt, und stoße dabei an ein Unendlichkeitsproblem, und ich wollte mal fragen, was ich übersehen.
Logisch gesehen würde ich sagen: Ich habe Kp, Ki, Kd und sage dann einfach:
abw = soll - ist; y = Kp * abw; esum = esum + soll; y = y + Ki * esum; y = y + Kd * (soll - stgAlt) / deltaT; stgAlt = soll;
Das ist jetzt mehr Pseudocode, nehmt es als Javascript oder einen Ausschnitt C an oder so. Wenn ich jetzt aber davon ausgehe, dass ich meinen Regler 10Tage fahre, besteht die Chance, dass das esum ganzschön groß wird. Und damit würde auch y sehr groß werden, was mir doch die ganze Einstellung kaputt macht, und nach ein paar Tagen aus dem Ruder laufen kann. Darum meine Frage: Wo ist mein Fehler?
Einer meiner Gedanken war, dass man erstmal statt dem Sollwert die Abweichung aufaddiert, und dass man dann esum zurücksetzt, sobald eine Änderung des Sollwertes vorliegt, jedoch wäre das nicht Sinnig, da so keine Rampen gefahren werden können. Auch würden sich wiederholende Störungen stark bemerkbar machen nach einer Weile. Wie umgeht man das?
Vielleicht findet sich ja jemand, der mir hier helfen kann, das zu verstehen. Ich würd mich freuen.
Liebe Grüße -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hallo ggamee,
Dein esum soll ja das Integral über die Regelabweichung und nicht über den Sollwert darstellen. Daher muss die 4. Zeile schon mal
lauten.esum = esum + abw;
Um das Unendlichkeitsproblem zu umgehen kannst Du die Summe ja auf ein Zeitfenster beschränken. Dazu solltest Du Dir ersteinmal die typische Dauer bis zum erreichen des Sollwertes ausmessen und dann kannst Du das Zeitfenster ja doppelt so groß wählen. Dein esum ist dann einfach die Summe aller Abweichungen innerhalb des Zeitfensters.
-
Wie darkpandemic schon geschrieben hat, ist Dein enum das Integral über die Regelabweichung. Damit wächst enum nicht ins unendliche, da abw ja um +/-0 schwankt.
Aufgrund des Datums, hoffe ich aber, dass sich das Problem schon geklärt hat. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage