Hallo zusammen
Ich hab ein kleines Verständnisproblem zur Theorie der PID-Regler:
Wie genau werden beim I-Teil die Integrationsgrenzen gewählt?
In der englischen Wikipedia steht da 0 als untere Grenze:
In diesem PDF auf www.mikrocontroller.net steht minus unendlich:
http://www.mikrocontroller.net/attachment/19031/PID-Regler.pdf
Was wählt man da bei einer konkreten Implementation?
-Minus unendlich ist wohl weniger für die Praxis geeignet, man kann ja
nicht beim Urknall anfangen :-)
-Null scheint mir schon besser. Das hiesse dann, dass die Integration
dann beginnt, wenn der Regler eingeschaltet wird. Aber dann geht der
Integrator bald mal ans Maximum oder Minimum.
Deshalb:
-Wird da über eine gewisse Zeit nur integriert, z.B. die letzten 10
Sekunden oder so?
oder
-Wird solange integriert, bis ein Maximalwert (resp. Minimalwert)
erreicht ist, und dann der Integrator auf null zurückgesetzt, sodass der
P teil nachregeln muss?
Im Voraus Danke fuer eure Antworten.
ME schrieb:> -Minus unendlich ist wohl weniger für die Praxis geeignet, man kann ja> nicht beim Urknall anfangen :-)
Eben
> -Null scheint mir schon besser. Das hiesse dann, dass die Integration> dann beginnt, wenn der Regler eingeschaltet wird. Aber dann geht der> Integrator bald mal ans Maximum oder Minimum.
Warum?
Theoretisch nicht. Ausser dein Regelkreis funktioniert nicht.
Aber irgendwann wird das e(t) ja auch negativ.
> -Wird solange integriert, bis ein Maximalwert (resp. Minimalwert)> erreicht ist, und dann der Integrator auf null zurückgesetzt, sodass der> P teil nachregeln muss?
Nicht auf 0 setzen.
Sondern wenn der integrierte Anteil einen bestimmten
Maximalam/Minimalwert erreicht hat, wird er einfach nicht mehr erhöht.
Es würde sonst beim weiteren aufintegrieren einfach zu lange dauern, bis
das Integral wieder in vernünftige Bereiche zurückkommt. Stichwort
"Anti-Windup"
Macht ja auch sinn, denn irgendwann ist immer ein Punkt erreicht, an dem
eine Erhöhung/Erniedrigung des Stellsignals am Ausgang nichts mehr
bewirkt. Bei deinem Auto gibt es auch eine Stellung des Gaspedals ab der
die Beschleunigung einfach nicht mehr zunimmt, wenn du da drüber kommst.
Ob du das Pedal nur halb oder voll reindrückst, hat auf die
Beschleunigung keine Auswirkung mehr. Es dauert aber länger das Pedal
von 'voll gedrückt' auf 'normal' zurückzubringen, als von 'halb
gedrückt'
Nee in der Praxis läuft es gaanz anders.
Da gibt es I-Anteile von Reglern deren Koeffizienten umgeschaltet werden
(in Abhängigkeit der Regelabweichung oder einer Störgröße).
Der I-Anteil wird eingefroren oder mit einem bestimmten Wert
initialisiert wenn die Regelstrecke an den Anschlag läuft.
Bei Vorzeichenumkehr der Regelabweichung wird auch schon mal der
Integrator gelöscht.
Der I-Regler arbeitet Parallel (additiv) oder in Reihe (multiplikativ)
zu einer Vor-Steuerung (abhängig von einem Modell).
Der Ausgang des Reglers wird auf einen bestimmten Wertebereich begrenzt.
Und das ganze in beliebigen Kombinationen (je nach Regelstrecke). Einen
I-Regler in Reinform wirst Du in einer realen Anwendung nur selten
finden.
Gruß Anja
Danke für diese sehr schnelle Antwort.
Wenn ich das also digital implementiere, steht anstelle des Integrals ja
eine Summe. D.h. ich summiere laufend die Regeldifferenz (Soll-Wert
minus Ist-Wert) auf. Falls diese Summe grösser als ein bestimmter Wert
wird, erhöhe ich sie nicht mehr (bis sie wieder unter diese Grenze
fällt).
In der Analogtechnik entspricht das dann dem Fall, dass der OP des
Integrators die grösste (resp. kleinste) mögliche Ausgangsspannung
erreicht hat.
Hab ich das so richtig verstanden?
@ ME
Der PID Regler ist nur ein Regelkreiselement. Also du hast noch keinen
funktionierenden Regelkreis.
Durch die Rückkopplung im Regelkreis wird dann ausgeregelt.
Es wird ja Sollwert - Istwert gerechnet also wenn der Istwert über dem
Sollwert ist begint der Integrator wieder nach unten zu Integrieren. Aus
diesem Grund gibt es nie wirklich ein Maximum (außer beim überschwingen
vielleicht oder bei hohem Sollwert).
http://de.wikipedia.org/w/index.php?title=Datei:Einfacher_regelkreis.gif&filetimestamp=20091106112141
Mfg Patrick
> Aus diesem Grund gibt es nie wirklich ein Maximum
Natuerlich gibts ein Maximum.
In der Praxis hat alles ein Maximum!
In der analogen Welt ist das die Betriebsspannung, in der digitalen Welt
die Bit-Breite der verwendeten Variablen (sowas wie 0xFFFF)
Dieses Maximum wird erreicht, falls der Regler den Sollwert (aus was
fuer Gruenden auch immer) nicht erreicht.
Der grundsaetzliche Aufbau eines Regelkreises ist mir schon klar.
ME schrieb:> In der analogen Welt ist das die Betriebsspannung, in der digitalen Welt> die Bit-Breite der verwendeten Variablen (sowas wie 0xFFFF)
Soo weit würde ich gar nicht gehen: Wenn Du eine 10 Bit PWM-Ausgabe hast
und dein Stellglied sich nur im Bereich 10-90% mechanisch überhaupt
bewegt, dann wirst du den Gesamtreglerausgang (Summe P + I + D) auf den
Bereich 102 - 922 (10-90%) begrenzen. Wenn Du in der Begrenzung bist ist
es meist nicht sinnvoll den I-Anteil weiter zu erhöhen. (Anti-Windup war
schon das Stichwort).
Gruß Anja
Also ich finde folgende Algorithmus ganz gut, er arbeitet mit der ersten
Ableitung der Formel für den PID Regler und addiert diese Änderung dann
immer auf einen Summenwert.
Das sieht dann folgendermaßen aus:
ist der vorherige Wert der Regelabweichung, diesen musst du speichern
ist der vorletzte Wert der Regelabweichung, diesen musst du ebenfalls
speichern
Jetzt kannst du noch Prüfungen zum verhindern von Überläufen, sowie
Begrenzungen hinzufügen.
Patrick Weinberger schrieb:> Aja in der Digitaltechnik werden Filter/Regelkreise via FIR, IIR Filter> realisiert.
Den I-Anteil könnte man natürlich als IIR Filter bezeichnen, P- und
D-Anteil haben keinen Speicher, also ist schonmal nichts mit IIR. Ein
FIR-Filter als Regler? Nenn mal bitte ein Beispiel wo das sinnvoll ist!
Ein Schelm, wer Buzzword-Bingo dabei denkt!
Ja, danke. Googeln nach "FIR" und "Regelung" habe ich selbst auch schon
hinbekommen. Schön, dass es wenigstens irgendjemanden gibt, der diese
beiden Themen zusammengebracht hat.
@ME und alle anderen: Vergesst die guten alten P(I)(D)-Regler mit all
ihren heuristisch motivierten Nichtlinearitäten (obwohl sie für > 95 %
aller Fälle ausreichend sind). Die Zukunft gehört den
selbstadaptierenden Reglern, die die Strecke optimal durch Invertierung
ihres Fuzzy-Neuronalen-Netzes mittels FIR/IIR Parametervariation
umgekehrt abbilden können.
Popcorn und Bier bitte!
@Karl
Wie sagte ein Prof von mir mal kanns auch mit der diffgleichung machen
aber es ist ned schön und auch nicht schnell. Zudem lassen sich FIR/IIR
Filter schön in DSPs ausführen.
Du hast Laplace und Z-Transformation vergessen.
Ich persönlich bevorzuge die Näherung nach Euler oder Trapez zum
berechnen der Filterkoeffizienten gg
Die Fensterung usw.
Viel mathe aber nix dahinter eigentlich (gutes Tabellen Buch hilft)
Man muss aber beim rechnen verdammt aufpassen weil ein Rundungsfehler
katastrophal sein kann oder wenig Nachkommastellen
Mfg Patrick
Klar, DSPs sind für FFT und MADD gebaut. Habe auch nie bestritten, dass
die typische Implementierung eines Reglers nach der Differenzengleichung
geschieht, nur einen FIR hat es bei meinen Regelungsaufgaben noch
nicht gebraucht. Wenn man ihn minimalphasig auslegt, kann man auch
gleich nen IIR nehmen ;) und sonst verbieten sie sich wegen der
Phasenverschiebung. Allerdings bin ich normalerweise auch auf der "so
schnell wie möglich" Seite der Regelungstechnik und nicht auf der "muss
schön ausschauen"-Seite. Und auch hier reichen die Standard-Regler,
manchmal kaskadiert und mit ein wenig Heuristik (I-Begrenzung,
Rücksetzung, usw.) bis jetzt aus.
Wenn es Quantisierungsprobleme bei IIRs gibt: Wellendigitalfilter.
Hallo,
Integrationsgrenzen revisited, ich knobel auch an dem Thema:
Windup des Integrators und Begrenzung des Ausgangssignals habe ich
analog (Spannung) wie digital (Bitbreite, PWM oder was auch immer
begrenzt) verstanden.
Situation:
Eine positive Regelabweichung liegt an und wird im Integrator
aufsummiert. Die Stellgröße arbeitet der Störung entgegen, bis Soll- und
Istwert übereinstimmen.
In dem Moment werden Regelabweichung und Stellgröße Null.
Jedoch: Im Integrator steht weiterhin die aufsummierte Regelabweichung
und verändert sich nicht mehr. Kommt nun eine Regelabweichung in den
negativen Bereich, muß der Integrator erst mal "abgearbeitet" werden,
bevor er seinen Anteil zum Ausregeln der negativen Reglerabweichung
liefern kann.
Ist das so richtig verstanden?
Deswegen favorisiere ich Anjas Kommentar mit dem Rücksetzen des
Integrators bei Vorzeichenwechsel, würde es sogar bei einer
Regelabweichung von 0 schon tun.
Nur: In keinem Beispielcode eines PID Reglers wird der Integrator
gelöscht.
Warum?
Grüßlis
Jörg
Das Antiwindup des Integrator ist nicht die limitation des Integrators
an der Speisespannung. Sondern eher, dass der Integrator nicht
Weitermachen muss wenn das Stellglied an der Begrenung ist. Dies ist
speziell bei integrativen Strecken der Fall. Dann laesst man die Strecke
mal erst integrieren, der Fehler wird von selbst kleiner.
Hey noch Was schrieb:> Das Antiwindup des Integrator ist nicht die limitation des Integrators> an der Speisespannung. Sondern eher, dass der Integrator nicht> Weitermachen muss wenn das Stellglied an der Begrenung ist. Dies ist> speziell bei integrativen Strecken der Fall. Dann laesst man die Strecke> mal erst integrieren, der Fehler wird von selbst kleiner.
I-Strecken mit einem I-Regler regeln? Das schreit doch nach
Instabilität.
Wenn die Welt so perfekt waere... eine Heizung auf eine Temperatur zu
regeln hat meist einen integrierenden Charakter. Ist es auch wenn man
die Verluste auch gleich einbezogen haette. Falls man keine Annahmne zu
den Verlusten machen kann, da zB variabel, nimmt man eben einen
Integrator.
Ein PID Regler ist der Regler fuer Faule, die sich nicht um die Strecke
kuemmern wollen, oder koennen.
Zur eigentlichen Frage zurück:
Ob du jetzt von 0 oder -Unendlich anfängst zu Integrieren, hängt von der
Aufgabenstellung ab, sofern dies eine Rolle spielt.
Wir betrachten bei dem Integral ja den reinen I-Anteil des PID-Reglers.
Und rein theoretisch betrachtet ist dieser I-Anteil ja erstmal ohne
Begrenzung, d.h. er kann unendlich viel speichern.
Du könntest jetzt von -Unendlich anfangen zu integrieren, dann hast du
sozusagen "das ganze Leben" des Integrators mit beachtet.
Du könntest aber auch sagen, dass du einen Anfangszustand des
Integrators hast, sprich ein kI(0), dass den Verlauf von -Unendlich bis
0 auffängt und du beginnst dann bei 0 zu integrieren und addierst diesen
Anfangszustand hinzu.
Für den Fall, dass von 0 angefangen wird, zu integrieren und auch kein
Anfangszustand hinzuaddiert wird, heißt das doch bloß, dass man annimmt,
dass der Integrator zum Zeitpunkt t=0 den "Füllstand" 0 hat, also leer
ist.
----
Dass in der Praxis ein idealer Integrator nicht existiert, ist ja glaube
ich jedem klar.