Erklärungs-Problem bei PID-Regler-Gleichung

13/06/2008 - 15:22 von Erik | Report spam
Hallo NG,


ich habe hier für eine Hochspannungsregelung einen PID-Regler nach der Gleichung

| e := SOLL - IST // Regeldifferenz ermitteln
| esum := ( esum * 0.9999 ) + e // Regeldifferenz aufintegrieren
| y := ( P * e ) + ( SOLL * MAX ) // P-Anteil mit Vorbelegung
| y := y + ( I * esum ) // Integral-Anteil
| y := y + ( D * ( e - ealt ) ) // Differenzial-Anteil
| if y > MAX then y := MAX fi // Stellgröße auf Maximum begrenzen
| ealt := e // Regeldifferenz für nàchten Zyklus merken

(die tatsàchliche Implementierung ist etwas anders da hier rein mathematisch der Wertebereich von SOLL,IST,MAX und y 0.0 ... 1.0 betràgt und P,I und D immer positiv sind, ich aber in meinem System keine Möglichkeit habe mit Gleitkommazahlen zu rechnen; IST,SOLL und y sind 12Bit-Unsigned-Integer)
An dieser Gleichung ist erst mal nicht auffàlliges und man findet sie oft im Internet (u.a. : <http://www.roboternetz.de/wissen/in...Regler>) und vor allem auch mit mathematischem Hintergrund. Aber es gibt hier eine kleine Abwandlung in
| y := ( P + e ) + ( SOLL * MAX )
^^^^^^^^^^^^^^^^
Da wird quasi eine Konstante, welche sich aus dem Soll-Wert und dem maximalem Stellwert ergibt auf den errechneten Stellwert drauf addiert. Die Idee dazu habe ich vor etwa 3 Monaten irgendwo auch dem Internet gefischt, ich weiß nur nicht mehr wo.
Ziel ist es den erforderlichen Wertebereich von 'esum' zu begrenzen. In meiner Implementierung ist 'esum' ein vorzeichenbehafteter 16Bit-Integer und wenn die Regeldifferenz wenigstens nahe 0 werden soll muss entweder I recht groß werden, was aber die Regelung an sich stört, oder ich bràuchte einen größeren Wertebereich für 'esum' was ich aber nicht so einfach umsetzen kann, außerdem würde 'esum' mehr Zeit (mehr Zyklen) brauchen um sich auf einen geeigneten Wert aufzuintegrieren. Bei meinen ersten Experimenten der Regelung am lebenden Objekt fiel mir auf das 'esum' extrem schnell in die Begrenzung lief (die entsprechende Addition ist sàttigend also ohne Überlauf) und erhebliche bleibende Regelabweichungen auftraten. Als ich versuchte den I-Anteil (oder auch den P-Anteil) größer zu machen wurde die Regelung an sich instabil und ich musste mich nach Lösungen umsehen. Da für die Gleichung 3 MAC-Operationen erforderlich waren und bei der ersten MAC-Operation der Summand auf 0 stan
d kam mir die Idee dort was einzusetzen, quasi als eine Art Vorhalteposition. Beim Suchen im Internet habe ich dann diesen Zusatz-Term gefunden. Der Gedanke dahinter ist der das wenn man einen (einigermaßen) linearen Zusammenhang zwischen Stellwert und Stellgröße annimmt das sich mit 'SOLL * MAX' eine Stellgröße ergibt die schon mal ungefàhr in der Nàhe der tatsàchlich benötigten Stellgröße liegt. So müssen über 'esum' nur noch die àußeren Störungen und die Nichtlinearitàt der Regelstrecke ausgeglichen werden. Das heißt 'esum' muss nicht mehr so große Werte (positiv oder negativ) erreichen damit die bleibende Regelabweichung nahe 0 wird.

Mein Problem ist nun das ich diesen Term rechtfertigen muss aber eben keine Quelle mehr dafür finden kann.
Das dieser Term nützlich ist bestreitet keiner aber ich soll nun nachweisen das er auch nicht stört also nicht zu einer erhöhten Schwingneigung o.à. führt.

Hat jemand schon mal so was benutzt und kann mir eine (mathematisch fundierte) Quelle nennen?
Kann mir jemand dabei helfen diesen Term mathematisch zu erklàren?
(meine Mathe-Kenntnisse reichen dafür nicht ganz aus und ich hab da jetzt Erklàrungsnöte : "Wenn der Bit-Schubser ohne Ingeniör auch noch am Regelalgorithmus rumfummelt kann ja kaum was gescheits bei rauskommen")


Mit freundlichen Grüßen
Erik (Bit-Schubser ohne Ingeniör)
 

Lesen sie die antworten

#1 Rafael Deliano
13/06/2008 - 18:09 | Warnen spam
Erik schrieb:


Realname fehlt.

+ ( SOLL * MAX )
Da wird quasi eine Konstante, ... drauf addiert.


Sieht nicht nach einer für PID üblichen Funktion aus.
PID-Algorithmus und Numerik der Implementierung
auseinanderhalten.
PID will eigentlich signed rechnen.

12Bit-Unsigned-Integer


Dafür macht sich ein DC-Offset gut damit man nicht in
negative Zahlen rutscht. Hàngt aber von der Regelstrecke
ab ob und wie man den anbringen kann.

MfG JRD

Ähnliche fragen