Es geht um die Umsetzung einer Temperaturregelung mit einem FPGA (programmiert mit LabView). Die Regelstrecke ist eine PIT3-Strecke. Das ist schon das erste Problem, denn Standardeinstellregeln (Ziegler-Nichols und Co.) sind damit nicht mehr anwendbar. Das zweite Problem ist, dass die Widerstandsheizung über einen FET angesteuert wird, d.h. es gibt nur EIN oder AUS. Meine Überlegung war es eine quasi-stetige Regelung zu entwicklen. Also ein normaler PID-Regler, mit dessen Ausgang ein PWM-Signal erzeugt werden soll. Beim Simulieren des Regelkreises mit Matlab ist mir aufgefallen, dass der PID-Regler Werte von teilweise 10^4 ausgibt. Ich muss das PID-Ausgangssignal jetzt ja irgendwie auf 0-100% für meinen PWM-Generator bekommen. Wenn ich jetzt das PID-Signal auf 0-100 begrenze, dann arbeitet der Regler nur noch höchst selten, weil er meistens in der Begrenzung (100 bzw. 0) "hängt". Die Frage ist jetzt wie man da vorgehen kann? Ich stehe momentan irgendwie auf dem Schlauch. Falls noch jemand Reglereinstellungen für eine PITx-Regelstrecke weiß, wäre das auch super. Ich finde nur welche für PTx-Strecken und PI-Strecken. DANKE schon mal im Voraus :)
:
Verschoben durch User
>Werte von teilweise 10^4 ausgibt. Ich muss das >PID-Ausgangssignal jetzt ja irgendwie auf 0-100% für meinen >PWM-Generator bekommen. Das ist soch simpel. einfach einen Counter von 0 bis zu deinem Maximalwert laufen lassen. Der Counter zählt Taktsignale und fängt bei einem Überlauf von vorne an. Wenn der Counter kleiner dem Wert des Reglers ist, ist der Ausgang 1. Fertig ist die PWM Ich würd aber einfach einen 2 punkt regler nehmen.
Danke erstmal... Wie Stefan es geschrieben hat habe ich bereits mein PWM-Signal generiert. Aber das Problem ist, dass ich dann nur 100% habe wenn der Fall eintritt, bei dem der PID-Regler 10^4 ausgibt. Meistens sind es Werte zwischen 0 und 1000, d.h. mein PWM-Signal bewegt sich dann im einstelligen Prozentbereich was nicht ausreicht um die träge Strecke zu regeln. Bei Zweipunktreglern ist das Problem, dass für das genaue Ausregeln eine Rückführung und evtl. auch noch ein Taktbetrieb nötig wären. Dies lässt sich aber mit dem eingeschränkten Funktionsumfang in LabView für FPGA's nur schwer bzw. nicht realisieren. an Lothar: G(s)=(s+0,00075)/(18,9s^4+37,95s^3+20,05s^2+s) Also ein PT3-Strecke mit einem zusätzlichen I-Anteil
>Meistens sind es >Werte zwischen 0 und 1000, d.h. mein PWM-Signal bewegt sich dann im >einstelligen Prozentbereich was nicht ausreicht um die träge Strecke zu >regeln. Also irgendwas machst du da grundlegend verkehrt. Wenn die Stecke nicht reagiert, steigt der I Anteil des Reglers, also wird die Strecke entweder irgendwann reagieren oder dein Regler läuft gegen 100%. >Bei Zweipunktreglern ist das Problem, dass für das genaue Ausregeln eine >Rückführung und evtl. auch noch ein Taktbetrieb nötig wären. Dies lässt >sich aber mit dem eingeschränkten Funktionsumfang in LabView für FPGA's >nur schwer bzw. nicht realisieren. Zweipunktregler .... mit Labview ? Was rauchst du eigentlich für ein Zeug ? Temperatur über 20 grad = heizung aus - unter 19 grad wieder ein. Früher nahm man dafür keinen FPGA sondern ein Bimetall
>Falls noch jemand Reglereinstellungen für eine PITx-Regelstrecke weiß, >wäre das auch super Ein PID Regler hat genau 3 Parameter , wobei du den D-Anteil in deinem fall auch noch ignorieren kannst. Kp auf 1 , Ti auf 60 Sec und schon klappt fast jede Temperaturregelung, wenn es doch noch schwingt, Ti erhöhen.
gabor schrieb: > Es geht um die Umsetzung einer Temperaturregelung mit einem FPGA > (programmiert mit LabView). Die Regelstrecke ist eine PIT3-Strecke. Das > Also ein normaler PID-Regler, > mit dessen Ausgang ein PWM-Signal erzeugt werden soll. Wenn du einen I-Anteil sowohl in der Strecke als auch im Regler hast, ergibt das ein System mit doppelten I-Anteil. Zusammen mit dem PT3 muss die Ortskurve des Systems (Strecke + Regler) -1 umschließen, das System kann nicht stabil sein. Siehe http://www.stud.uni-karlsruhe.de/~uj2i/skripte/unpack-skript-page.cgi//regel/node10.html Wobei die Kurven dort nicht ganz exakt der Beschriftung entsprechen. Das I-Verhalten dort ist, I+PT2 und doppeltes I, entspricht II+PT1. Tom
>das System kann nicht stabil sein.
Das schliesst du nur aus der Anwesenheit eines I-Anteils ? Egal wie
gross dieser ist ? Interessant, aber völliger humbug.
Probiers mal mit nem PID mit "Anti-Reset-Windup". ansonsten solltest du dich sicher mit dem Einstellverfahren für Regler auseinandersetzen... Schwingungsverfahren zum Beispiel! ich glaube in Matlab gibts auch nen automatisch einstllbaren PID, der dir nach einiger zeit die besten werte ausgibt...
kein Theoretiker schrieb: >>das System kann nicht stabil sein. > Das schliesst du nur aus der Anwesenheit eines I-Anteils ? Egal wie > gross dieser ist ? Interessant, aber völliger humbug. Nein aus der Anwesenheit von zwei I-Anteilen. Die Ortskurve des I-Anteils kommt aus dem Unendlichen und erzeugt eine Phasendrehung von 90°, zwei dann 180°. Die Größe des I-Anteils spielt absolut keine Rolle. Mit den 180° der beiden I-Anteile wird die Subtraktion in der Rückführung aufgehoben und man erhält eine Mitkopplung. Erst Nachdenken, dann schreibt man auch keinen Humbug. Tom
>Die Ortskurve des I-Anteils kommt aus dem Unendlichen und erzeugt eine >Phasendrehung von 90°, zwei dann 180°. Die Größe des I-Anteils spielt >absolut keine Rolle. Mit den 180° der beiden I-Anteile wird die >Subtraktion in der Rückführung aufgehoben und man erhält eine >Mitkopplung versteh ich nicht.... aber ich bin auch kein Theoretiker. Ich stell die PID Regler praktisch ein, und sie funktionieren...IMMER.
danke erstmal an alle... vor allem an thomas!! dein modell war wenigstens mal ein produktiver beitrag :) kannst du mir verraten wie du auf die parameter gekommen bist oder sind die experimentiell ermittelt? zwischen regler und strecke müsste jetzt nur noch ein pwm-generator, da ich ja nur ein- und ausschalten kann. meine lösung ist momentan ein zweipunktregler mit hysterese und einer rückführung. funktioniert ganz gut und ich brauch damit auch kein extra pwm mehr. das problem ist jetzt die beschreibungsfunktion (harmonische balance) aufzustellen. denn durch die lineare rückführung am regler lässt sich der regelkreis nicht mehr so einfach in einen linearen und einen nicht-linearen teil aufteilen. mit der mir bekannten signalflussalgebra komm ich da nicht weiter... oder darf man bei genügend hoher schalthäufigkeit für die stabilitätsanalyse lineares verhalten annehmen?
Die PID Parameter sind experimentell ermittelt. Dazu ist ein PID Regler schließlich gut zu gebrauchen. Sobald ich da mehr investiere, wird es auch kein PID mehr. Wenn deine PWM Frequenz deutlich über der Abtastrate des Reglers liegt, dann kannst du lineares Verhalten annehmen. Der Saturation Block begrenzt den Reglerausgang auf 0-1 (Duty-Cyle). Negative Stellgrößen machen hier eh keinen Sinn, weil du ja nur heizen aber nicht kühlen kannst. Der Verstärker Block dahinter ist die volle Leistung, die dein Heizsystem bei Duty-Cyle = 1 aufbringen kann, also U^2/R. Beim Reglerentwurf empfiehlt es sich auch immer die Stellgröße im Auge zu behalten. - Verlässt sie den Ansteuerbereich des Stellgliedes wird das System nichtlinear. - Gleiches gilt, wenn das Stellglied der Steigung nicht folgen kann. - Ventile sollten nicht zu viel oszillieren (Lebenserwartung) - Stellmotoren auch nicht (Energieverbrauch)
Thomas schrieb: > Doch Humbug, siehe Anhang. Natürlich kann man noch weitere Blöcke einfügen, damit verändert man aber das Grundverhalten. Wenn du das charakteristische Polynom für deinen Regelkreis aufgestellt, siehst du, das kein System mit doppeltem I-Verhalten mehr vorliegt. Wahrscheinlich hat es noch nicht mal mehr einfaches I-Verhalten. Tom
@Thomas Die Heizleistung beträgt ca. 240W. D.h. Ks=240. Wenn ich jetzt in dein Simulinkmodell einen Sprung von beispielsweise 140°C anstatt 1°C vorgebe, dann schwingt die Temperatur erstmal ca. 60°C über die vorgegebenen 140°C hinaus. Das Ausgangssignal des Reglers steigt maximal auch auf ca. 170 und wird dann durch Saturation auf max. 1 begrenzt. Was dazu führt, dass der Regler quasi außer Kraft gesetzt ist, da fast immer 1 der Strecke zugeführt wird. Jetzt könnte man natürlich das Reglerausgangssignal durch 170 Teilen um wieder Werten zwischen 0-1 für Saturation zu erhalten. Aber wenn jetzt zum Beispiel auf 50°C geregelt werden soll müsste dieser Teiler auf ca. 50 reduziert werden, da das max. Ausgangssignal des Reglers jetzt ca. 50 ist. Aber ich kann ja nicht für jeden unterschiedlichen Führungssprung die Parameter der Regelung ändern. Das ist eigentlich auch genau das Problem was ich ganz am Anfang versucht habe zu beschreiben. noch ein Hinweis: Es soll fast ausschließlich auf 80°C bzw. 140°C geregelt werden.
> Natürlich kann man noch weitere Blöcke einfügen, > damit verändert man aber das Grundverhalten. Ich habe nur den PID-Regler eingefügt, sonst nichts. > Wenn du das charakteristische Polynom für deinen Regelkreis aufgestellt, > siehst du, das kein System mit doppeltem I-Verhalten mehr vorliegt. Das sehe ich auch so. > Wahrscheinlich hat es noch nicht mal mehr einfaches I-Verhalten. Sogar ganz sicher nicht, sonst gäbe es ja keine stabile Sprungantwort. Aber deine Aussage war ja folgende: > > Also ein normaler PID-Regler, > > mit dessen Ausgang ein PWM-Signal erzeugt werden soll. > Wenn du einen I-Anteil sowohl in der Strecke als auch im Regler hast, > ergibt das ein System mit doppelten I-Anteil. Zusammen mit dem PT3 muss > die Ortskurve des Systems (Strecke + Regler) -1 umschließen, das System > kann nicht stabil sein. Und das ist halt einfach falsch. Denn alleine durch das schließen des Regelkreises verschiebst du die Pole. Durch das bloße Einfügen weiterer Blöcke fügst du höchstens Pole hinzu. Grüße, Thomas
> Aber ich kann ja nicht für jeden unterschiedlichen Führungssprung > die Parameter der Regelung ändern. Warum nicht?
gabor schrieb: > Wenn ich jetzt in dein Simulinkmodell einen Sprung von beispielsweise > 140°C anstatt 1°C vorgebe, dann schwingt die Temperatur erstmal ca. 60°C > über die vorgegebenen 140°C hinaus. Mal so als Idee von mir, ich kenns von bestehenden Ofensystemen: Könntest du nicht, um das Überschwingen zu minimieren, eine Ramp-Rate vorgeben mit der die Zieltemperatur angefahren werden soll, z.b. 3 K/min? Was spricht denn gegen so eine "Lösung"?
>> Aber ich kann ja nicht für jeden unterschiedlichen Führungssprung >> die Parameter der Regelung ändern. > Warum nicht? Wäre wohl eine Option für verschiedene Temperaturbereiche, z.B. alle 10°C die Paramter anzupassen. Maximal sollen ja 150°C geregelt werden. > Mal so als Idee von mir, ich kenns von bestehenden Ofensystemen: > Könntest du nicht, um das Überschwingen zu minimieren, eine Ramp-Rate > vorgeben mit der die Zieltemperatur angefahren werden soll, z.b. 3 > K/min? Was spricht denn gegen so eine "Lösung"? Das Ding soll am Schluss in die Serienfertigung integriert werden und da zählt jede Sekunde. Ich muss also irgendwo einen Kompromiss zwischen Überschwingen und Anregelzeit finden. Wobei das ganze wohl max. 3°C überschwingen soll.
gabor schrieb: > Das Ding soll am Schluss in die Serienfertigung integriert werden und da > zählt jede Sekunde. Ich muss also irgendwo einen Kompromiss zwischen > Überschwingen und Anregelzeit finden. Wobei das ganze wohl max. 3°C > überschwingen soll. Da sollte eine Ramp-Rate kein Hinderniss für die Serienfertigung werden. Grade wenn nur max. 3°C Überschwingen erlaubt ist. Temperatur hat ja so das "Problem", dass es ein deutliches PT-Glied hat.
Das mit der Rampe halte ich für eine gute Idee. Wenn du die so einstellst, dass deine Stellgröße in der Zeit immer über 1 bzw unter 0 liegt, dann verlierst du auch keine Zeit. Eine andere Möglichkeit wäre es, bei großen Regelabweichungen den Regler abzukoppeln und ständig 1 bzw. 0 auszugeben. Unterschreitet die Regelabweichung einen eingestellten Wert, dann übernimmt der Regler wieder. Für beides erhalte ich ähnlich gute Ergebnisse (siehe Anhang).
Danke nochmal an Thomas!! :) Die Rampe braucht ca. 4 Sek. länger um von Raumtemperatur auf 140°C zu kommen aber das kann man verkraften wenn man sieht, dass es damit auch nicht mehr zum Überschwingen kommt. Die Lösung mit der Abkopplung des Reglers bei großen Abweichungen hatte ich auch schon mal versucht aber damit wird nur das Modell und damit die weiteren Untersuchungen komplizierter und wesentliche Verbesserungen bringt es auch nicht. Vielen Dank auf jeden Fall für die genannten Lösungen, darauf kann ich gut aufbauen. Jetzt muss ich zunächst noch alle nötigen Störeinflüsse ermitteln und danach gehts dann an die entgültige Reglerauslegung und an die Stabiltätsuntersuchung des gesamten Regelkreises. Da werde ich dann evtl. nochmal auf euer Fachwissen zurückgreifen ;)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.