www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Temperaturregelung


Autor: gabor (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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
Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>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.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> ... eine PIT3-Strecke.
Was ist das?

Autor: gabor (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>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

Autor: kein Theoretiker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>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.

Autor: Thomas Reinemann (Firma: abaxor engineering) (abaxor)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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/unp...

Wobei die Kurven dort nicht ganz exakt der Beschriftung entsprechen. Das 
I-Verhalten dort ist, I+PT2 und doppeltes I, entspricht II+PT1.


Tom

Autor: kein Theoretiker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>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.

Autor: Mathias H. (mathias_h)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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...

Autor: Thomas Reinemann (Firma: abaxor engineering) (abaxor)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Thomas (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Doch Humbug, siehe Anhang.

Autor: kein Theoretiker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>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.

Autor: gabor (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Thomas (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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)

Autor: Thomas Reinemann (Firma: abaxor engineering) (abaxor)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: gabor (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@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.

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 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

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Aber ich kann ja nicht für jeden unterschiedlichen Führungssprung
> die Parameter der Regelung ändern.
Warum nicht?

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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"?

Autor: gabor (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>> 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.

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Thomas (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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).

Autor: gabor (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 ;)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.