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