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. : ) 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)