Erklärungs-Problem bei PID-Regler-Gleichun g

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)

Reply to
Erik
Loading thread data ...

Erik wrote: > ich habe hier für eine Hochspannungsregelung einen PID-Regler > [..] > 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.

Nennt sich Vorsteuerung. Wenn man schon a-priori in etwa weiss, wie Groß der Stellwert für einen gewünschten Sollwert sein muss, kann man das direkt mit einrechnen (Obwohl SOLL* _MAX_ seltsam ist, da fehlt noch ein Faktor zum Einstellen).

Der Regler muss dann nur noch den (kleinen) Fehler ausregeln, das grobe erledigt die Vorsteuerung.

--
"Zuse, Zuse" sprach die Tante, als das Rechenzimmer brannte.
Reply to
Thomas Kindler

Hallo Erik,

[...]
[...]

Das klingt nach dem, was ich unter dem Begriff "Vorsteuerung" kennen gelernt habe. Dieser Begriff beschreibt die Reglerstruktur m.E. ganz gut: Es ist die Kombination einer Steuerung und einer Regelung.

Leonhard ist aber der einzige Autor, bei dem ich diesen Begriff gefunden habe, beispielsweise in Werner Leonhard: Regelung elektrischer Antriebe,

  1. Auflage, Springer, 2000 (Abb. 15.9., S. 376).

****----*-------*-------*-------*-------*-------*-------*-------*----****

*\ Viele -- Volker Bosch \*** **\ Gruesse aus -- E-Mail: snipped-for-privacy@t-online.de \** ***\ Stuttgart --
formatting link
\*
Reply to
Volker Bosch

Hallo Thomas Kindler,

Ah ja, genau danach hatte ich Gesucht. Danke für diesen Hinweis.

ja, dieser Gedanke erschien mir logisch und hat auch die Probleme mit der Begrenzung von 'esum' meiner Regelung deutlich gelindert, auch sonst hat die Regelung etwas an Stabilität gewonnen (kann bei anderen Regelstrecken sicher anders sein).

nach etwas nachdenken, stimmt, da fehlt noch ein Faktor ansonsten müsste die Maximale Stellgröße den maximalen Wertebereich des IST-Wertes ergeben und das könnte für das Objekt schon zu viel sein. Wenn der Wertebereich vom IST-Wert 0,0 ... 1,0 beträgt und man bei 0,87 eine Sicherheitsabschaltung implementiert hat könnte man diesen Wert noch mit dazumultiplizieren.

und 'esum' muss nicht mehr einen so großen Wertebereich beanspruchen ohne das die Qualität der Regelung leidet. So zumindest meine Hoffnung jetzt muss ich das nur noch mathematisch belegen. Das Wort "Vorsteuerung" (zusammen mit "Regelung") hat bei der Suchmaschine meines Vertrauens eine Reihe Treffer gebracht welche erst mal in Ruhe gesichtet werden müssen. Bei Fragen kenne ich ja eine gute NG ;-)

Danke für Deine Antwort Erik

Reply to
Erik

Hallo! Diese "Vorsteurung" ist schon eine ganz gute Strategie. Aber, es handelt sich um einen "PID" und "I" sollte eigentlich genau diese Vorsteurung uebernehmen. Im steady state Bereich, natuerlich. Diese Vorsteurung kann beim Einregeln den stabilen Zustand schneller bringen und viel Ueberschwingen verhindern. Aber, im Gleichgewichtszustand ist "I" dafuer verantwortlich dass genuegend Grundleistung geliefert wird und die P und D Komponenten sich mehr um die Stbilitaet kuemmern. Es waere schon gut, den Kode fuer den ganzen Regelvorgang zu sehen. POM

Reply to
pom

pom schrieb:

Ja, hat hier einiges gebracht.

Prinzipiell richtig, aber dafür müsste 'esum' ausreichend Spielraum haben und gerade das kann ich in meiner Implementierung nicht bieten. Wenn man das alles möglichst ideal umsetzt, also (z.B. in Software) mit Double-Zahlen rechnet, sicher kein Problem aber in einer realen Implementierung die auf einem

5Euro-Bauteil mit einer Frequenz von 20kHz einen neuen 12Bit-PWM-Wert (Stellwert) errechnen muss sind andere Kriterien wichtig.

Kannst Du das etwas genauer formulieren.

Vom Bauch her stimme ich Dir zu, aber kannst Du das mathematisch untermauern (ein interessanter Link währe genug).

Dazu muss sich 'esum' aber erst passend aufintegrieren.

ja

Was genau meinst Du, reicht der Code im Ursprungsposting nicht?

Grüße Erik

Reply to
Erik

Erik a écrit :

Im realen Fall muss man sicher ein wenig zaubern.

Ich meine: nach der Anfahrphase, wenn der Istwert bereits sehr nah am Sollwert ist.

Das Aufintegrieren (im Grunde ein gewichtetes Summieren von sich folgenden Fehlerwerten) dauert fuer n Summanden eben n*DeltaT Sekunden, viel laenger als wenn man die Grundleistung sofort einbringt.

Beim PID geht der Fehlerwert linear in den Ausdruck fuer die zu liefernde Leistung ein. Das ist recht theoretisch. In reellen Faellen kann (und soll)man trotzdem "nichtlineare" Strategien zusaetzlich benutzen: Wie z.B. die hier anstehende Vorsteurung (ich nenne das "Grundleistung") oder aber eine "Beschneidung" der errechneten Leistung, ein Einfuehren von eines Pmax-wertes (das ist auch vernuenftig, da man meistens keine x beliebige Anzahl von Atomkraftwerken zur Verfuegung hat...). Es kommt immer darauf zurueck zusaetzliche spezifische Kenntnisse ueber das Verhalten der bestehenden Regelschleife in den Algorithmus einzuspeisen.

habe Dein Originalpost nicht mehr gefunden, sorry.

Reply to
pom

Thomas Kindler schrieb:

Je nachdem auf welche Grösse sich das bezieht auch Störgrössenaufschaltung.

Neulich musste ich da lange nachdenken, was denn da gemeint sein könnte. In einer Deutchen Übersezigung eines Japanischen Manuals eines Reglers stand was von "Motorgetriebenem Fütterungsvortrieb" oder so ähnlich. Ich hab dann im englischen Manual geschaut, da war das dann "power feed-forward", womit gemeint war, dass der Heizungsregler auch auf die Netz- spannung schaut und deren Effektivwert in die Störgrössenaufschaltung einbezieht.

--
mfg Rolf Bombach
Reply to
Rolf_Bombach

Die Kuppe war eine Uebersetzung dieser Art: " ... und werden den Goesch aufgesetzt". Sollte heissen "a flag is being set". Vermutlich hatte da jemand im ersten Weltkrieg Deutsch gelernt.

--
Gruesse, Joerg

http://www.analogconsultants.com/

"gmail" domain blocked because of excessive spam.
Use another domain or send PM.
Reply to
Joerg

Hallo Erik,

Erik schrieb:

Das ist (im linearen Fall) kein Integrator.

Im linearen Fall gilt: Stabilität ist eine Systemeigenschaft. Welche Signale wo in den Kreis eingespeist werden, ist für Stabilität unerheblich. Das gilt auch für die hier vorliegende Vorsteuerung der Stellgröße von der Führungsgröße.

Gruß, Volker.

Reply to
Volker Staben

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.