Temperaturregler mit Tuecken

M

Michael Eggert

Guest
Moin!

Ich bin gerade dabei, einen Temperaturregler aufzubauen, und erwarte
dabei so einige Problemchen. Konkret gesagt: Ich kann nur heizen,
nicht kühlen. Dabei ist die Heizung so dimensioniert, und das ganze so
isoliert, daß ich wohl um den Faktor 100 schneller aufheizen kann, als
es sich wieder abkühlt. Lässt sich beides nicht ändern.

Glücklicherweise kommt die Regelung in einen Mikrocontroller, die
Heizung wird mit PWM gesteuert, der Möglichkeiten gibts also viele.
Nur wie geh ichs an? Temperaturregler hab ich schon öfters gebaut,
allerdings immer mit Peltier, da kam ich bislang mit einem PI-Regler
gut hin. Doch hier, aufgrund der unterschiedlichen Reaktion auf Heizen
bzw nicht Heizen, dürfte das wohl nicht reichen. PID möchte ich ungern
machen, da erwarte ich doch ein etwas "zappeliges" Verhalten. Und
2-Punkt scheidet sowieso aus, das gibt zuviel Hub.

Nachgedacht habe ich bereits über:
- mit viel Leistung aufheizen, danach im Regelbetrieb die maximale
Heizleistung begrenzen
- Unterschiedliche Gewichtungen für zu warm / zu kalt, bevor es in den
PI-Regler geht
- evtl. doch PID?
- dann aber evtl mit Schwelle für den D-Teil, unterhalb der Schwelle
nur PI
- oder D-Teil nur bei "zu kalt" zulassen, um zu schnelles Aufheizen
abzufangen
- Vielleicht was ganz anderes?

Wollte einfach mal Eure Meinung hören, bevor ich mich verrenne... Wird
doch ziemlich langweilig, wenn ich für jeden Testlauf - und sei es nur
ein leicht veränderter Regelungsparameter - ne Viertelstunde warten
muss, bis sich das System wieder abgekühlt hat :)

Gruß,
Michael.
 
Michael Eggert wrote:

Moin!

[...]
Glücklicherweise kommt die Regelung in einen Mikrocontroller, die
Heizung wird mit PWM gesteuert, der Möglichkeiten gibts also viele.
Nur wie geh ichs an? Temperaturregler hab ich schon öfters gebaut,
allerdings immer mit Peltier, da kam ich bislang mit einem PI-Regler
gut hin. Doch hier, aufgrund der unterschiedlichen Reaktion auf Heizen
bzw nicht Heizen, dürfte das wohl nicht reichen. PID möchte ich ungern
machen, da erwarte ich doch ein etwas "zappeliges" Verhalten. Und
2-Punkt scheidet sowieso aus, das gibt zuviel Hub.

Ich meine ein PI reicht.
Grosse Probleme wirst du in der Regelung erwarten, wenn die Regelung
aufgrund der Trägheit sehr langsam reagiert. Dies ist der Fall, wenn du
einen sehr grossen Energiespeicher beheizen musst.

Wenn du in dem Controller regelst, kannnst du eine Zweibereichsregelung
vorsehen. Du legst ein Intervall (zb. 50 °C - 20 °C Regelbereich,
Regelbreeich also 30 °). Bis zu T=30 ° heizt du auf 100 % und dann wird
ganz sachte geregelt. Und das kann man mit PWM.

Robert
 
On Mon, 24 Nov 2003 23:41:45 +0100, Michael Eggert wrote:

Ich kann nur heizen, nicht kühlen.
Dabei ist die Heizung so dimensioniert, und das ganze so isoliert, daß
ich wohl um den Faktor 100 schneller aufheizen kann, als es sich wieder
abkühlt.
[...]
PID möchte ich ungern machen, da erwarte
ich doch ein etwas "zappeliges" Verhalten.
Keine Angst vorm PID!
Der Trick bei einem praktischen PID-Regler ist ein vorgeschalteter
(zweipoliger) Tiefpass. Damit wird die bei hohen Verstärkungen immer mehr
anwachsende Verstärkung des D-Anteils kompensiert. Das heißt, man kann
den D-Antei ungestraft höher drehen und in der Folge den die
Geschwindigkeit bestimmenden P-Teil.
Mit so einem Regler statten wir unsere Laser aus, die eine recht starke
mechanische Piezo-Resonanz zeigen. Die Bandbreite der Regelung liegt nach
einigem tunen immerhin bei etwa der Hälfte der Resonanzfrequenz.
Das ist natürlich ein ganz anderer Geschwindigkeitsbereich, aber auch
die Temperatur-Regelungen laufen bestens mit PID.


Nachgedacht habe ich bereits über:
- mit viel Leistung aufheizen, danach im Regelbetrieb die maximale
Heizleistung begrenzen
Das sollte Ergebnis der Regelung sein.


- Unterschiedliche Gewichtungen für zu warm / zu kalt, bevor es in den
PI-Regler geht
So würde ich es auch angehen. Je nach dem, ob geheizt, oder gekühlt
werden muss, sollten die Regler-Parameter unterschiedlich sein. Um
Unstetigkeiten beim umschalten zu vermeiden, sollte man im Bereich der
Null einen sanften Übergang der Parameter-Sätze einbauen.

Mir ist allerdings nicht recht klar, ob sich der Auwand lohnt. Bei einer
Störung nach oben kann das System eben nicht schneller reagieren, als die
Abkühlung zulässt. Bestenfalls wird ein Kälteschock schneller
ausgeregelt.


- evtl. doch PID?
PID hat bei uns immernoch zu den schnellsten Ergebnissen geführt, wenn
man auf eine aufwendige Vermessung der Regelstrecke mit Bode-Plot,
Kompensation der Pole und ähnlichem verzichten will.

- dann aber evtl mit Schwelle für den D-Teil, unterhalb der Schwelle
nur PI
Der D-Anteil wird wie gesagt durch einen Filter entschärft.


- oder D-Teil nur bei "zu kalt" zulassen, um zu schnelles Aufheizen
abzufangen
Das würde für sich allein genommen ein Aufschwingen begünstigen. Beim
Abkühlen ist der P-Anteil dann erst recht zu stark.


ein leicht veränderter Regelungsparameter - ne Viertelstunde warten
muss, bis sich das System wieder abgekühlt hat :)
Warum sollte man das System für den nächsten Test grundsätzlich
abkühlen lassen? Wenn die Regelung ihren Job tut, dann sollte sie in der
Lage sein, aus jeder Start-position schnellstmöglich den Regel-Wert
erreichen. Zur interaktiven Einstellung der Parameter empfiehlt es sich,
den Regelpunkt periodisch hoch und runter springen zu lassen. Je besser
das System dieser Vorgabe folgt, um so besser die Einstellung.

Tschüss,
---<(kaimartin)>---
--
Kai-Martin Knaak
kmkn@tem-messtechnik.de
gpg-key: http://pgp.mit.edu:11371/pks/lookup?search=kai-martin&op=index&exact=on
 
Hi!

Ich meine ein PI reicht.
Habs grad mal ausprobiert. Schön ist das nicht, da Aufheiz- und
Abkühlgeschwindigkeit doch stark von der zu regelnden
Temperatur(-differenz zur Umgebung) abhängen. Habs allerdings noch
nicht so isoliert wie geplant.

Grosse Probleme wirst du in der Regelung erwarten, wenn die Regelung
aufgrund der Trägheit sehr langsam reagiert. Dies ist der Fall, wenn du
einen sehr grossen Energiespeicher beheizen musst.
Naja, ist ein Alublock 4x4x2cm, beheizt von 4 Zementwiderständen
(symmetrische Anordnung). Den Temperaturfühler will ich schon so dicht
wie möglich an einen der Widerstände bringen, doch zeitliche
Verzögerung wirds immer geben. Heize ich einen Zementwiderstand
(nackt, Temperaturfühler aufgeklebt) mit ca 1 Grad pro Sekunde, so
schwingt die Temperatur nach Abschalten der Heizung noch etwa 10 Grad
über.

Wenn du in dem Controller regelst, kannnst du eine Zweibereichsregelung
vorsehen. Du legst ein Intervall (zb. 50 °C - 20 °C Regelbereich,
Regelbreeich also 30 °). Bis zu T=30 ° heizt du auf 100 % und dann wird
ganz sachte geregelt. Und das kann man mit PWM.
Das meinte ich mit "erst Aufheizen mit voller Leistung, dann regeln
mit begrenzter Leistung".

Dank und Gruß,
Michael.
 
"Michael Eggert" <m.eggert.nul@web.de> schrieb im Newsbeitrag
news:gt05sv8k9g9h62v7fe7k48a1ko5pli9qgm@4ax.com...
Moin!

Tach ;)


Ich bin gerade dabei, einen Temperaturregler aufzubauen, und erwarte
dabei so einige Problemchen. Konkret gesagt: Ich kann nur heizen,
nicht kühlen. Dabei ist die Heizung so dimensioniert, und das ganze so
isoliert, daß ich wohl um den Faktor 100 schneller aufheizen kann, als
es sich wieder abkühlt. Lässt sich beides nicht ändern.

Da Du sowieso nur heizen kannst, ist das nicht weiter schlimm.


Glücklicherweise kommt die Regelung in einen Mikrocontroller, die
Heizung wird mit PWM gesteuert, der Möglichkeiten gibts also viele.
Nur wie geh ichs an? Temperaturregler hab ich schon öfters gebaut,
allerdings immer mit Peltier, da kam ich bislang mit einem PI-Regler
gut hin. Doch hier, aufgrund der unterschiedlichen Reaktion auf Heizen
bzw nicht Heizen, dürfte das wohl nicht reichen. PID möchte ich ungern
machen, da erwarte ich doch ein etwas "zappeliges" Verhalten. Und
2-Punkt scheidet sowieso aus, das gibt zuviel Hub.

Wieso sollte PID bei einem trägen System 'zappelig' sein? Das wird der nur,
wenn Du den Sollwert viel veränderst.


Nachgedacht habe ich bereits über:
- mit viel Leistung aufheizen, danach im Regelbetrieb die maximale
Heizleistung begrenzen

D-Anteil?


- Unterschiedliche Gewichtungen für zu warm / zu kalt, bevor es in den
PI-Regler geht
- evtl. doch PID?

Der D-Anteil wird doch immer geringer, oder?


- dann aber evtl mit Schwelle für den D-Teil, unterhalb der Schwelle
nur PI
- oder D-Teil nur bei "zu kalt" zulassen, um zu schnelles Aufheizen
abzufangen
- Vielleicht was ganz anderes?

Ich gebe zu, dass mein Studium noch nicht sooo lange her ist, ich allerdings
schon wieder einiges vergessen habe (obwohl ich in meiner Diplomarbeit
mehrere Regleroptimierungen simuliert habe). Vielleicht blamiere ich mich
jetzt also! Aber ich würde eine klassische PID-Regelung machen. Als erstes
nimmst Du eine Sprungantwort auf, dann kannst Du Dir aussuchen, wonach Du
die Parameter bestimmst (Ziegler-Nichols oder Kuhn oder T-Summe oder
wasweißichwas), und dann testest Du die Regelung mit diesen Parametern.


Wollte einfach mal Eure Meinung hören, bevor ich mich verrenne... Wird
doch ziemlich langweilig, wenn ich für jeden Testlauf - und sei es nur
ein leicht veränderter Regelungsparameter - ne Viertelstunde warten
muss, bis sich das System wieder abgekühlt hat :)

Ich weiß (noch) nicht, was ein Mikrocontroller alles kann, das versuche ich
mir gerade beizubringen. Aber wenn Du ein System hast, welches relativ
gleichmäßige Bedingungen aufweist (und wenn ein Mikrocontroller das
schafft), dann kannst Du es ja mal mit prädiktiver Regelung versuchen.


Gruß
Tom
 
Hi!

Keine Angst vorm PID!
Der Trick bei einem praktischen PID-Regler ist ein vorgeschalteter
(zweipoliger) Tiefpass. Damit wird die bei hohen Verstärkungen immer mehr
anwachsende Verstärkung des D-Anteils kompensiert. Das heißt, man kann
den D-Antei ungestraft höher drehen und in der Folge den die
Geschwindigkeit bestimmenden P-Teil.
Hm, ein bissl hab ich ja schon analog gefiltert vorm A/D-Wandler, da
kann ich natürlich noch was in Software dahintersetzen. Der Controller
ist allemal schnell genug.

Problematisch ist nur die Einstellerei. Bei PI kein Problem "nach
Gefühl", erst nur P bis er schwingt, P halbieren, I aufdrehen bis es
gut aussieht -> passt. Wenns dann noch schwingt oder zu träge ist,
kanns nur noch der I sein, der nicht stimmt. Oder irgendwo begrenzt
was.
Gibts was ähnlich triviales für PID? Da wüsst ich nämlich nicht, an
welchem "Schräubchen" ich drehen muss, wenns so oder so aussieht.


Mit so einem Regler statten wir unsere Laser aus, die eine recht starke
mechanische Piezo-Resonanz zeigen. Die Bandbreite der Regelung liegt nach
einigem tunen immerhin bei etwa der Hälfte der Resonanzfrequenz.
Das ist natürlich ein ganz anderer Geschwindigkeitsbereich, aber auch
die Temperatur-Regelungen laufen bestens mit PID.
Klingt gut! Gleicht Ihr das nach Gefühl ab, oder über Sprungantwort
etc berechnet?


Nachgedacht habe ich bereits über:
- mit viel Leistung aufheizen, danach im Regelbetrieb die maximale
Heizleistung begrenzen

Das sollte Ergebnis der Regelung sein.
Ja, sollte, in der Theorie. In der Praxis...
....habe ich eine begrenzte Heizleistung. In der Aufwärmphase könnte
der Integrator auf einen höheren Wert vollaufen (große
Soll-Ist-Differenz über lange Zeit), als die Heizung wirklich heizen
kann. Dann ist der Integrator am Ende voller, als er wäre, wenn ich
heizen könnte, wie er vorgibt (weils länger dauert als er "denkt",
also wofür er eingestellt ist). Das führt zu Überschwingen, weil der
lange aufgelaufene I-Teil erstmal wieder abgebaut werden muss. Der
Integrator funktioniert eben nur in einem linearen System gut, und
linear ists nicht mit begrenzter Heizleistung.
....möchte ich von Anfang an mit voller Leistung heizen, und nicht erst
warten, bis der Integrator losläuft. Der P-Teil ist nicht groß genug
dafür, da der Controller nur mit einem kleinen Ausschnitt der
Temperatur (analog) gefüttert wird.

Darum hab ichs bislang eigentlich immer so gemacht, daß ich erstmal
mit voller Leistung in den linearen Bereich gefahren bin, und dann
erst mit dem PI-Regler weitergemacht hab.


- Unterschiedliche Gewichtungen für zu warm / zu kalt, bevor es in den
PI-Regler geht

So würde ich es auch angehen.
Oh, ich fürchtete schon, jetzt kommt das große "No-No!", weils Aufgabe
des PI(D) wär, von selbst entsprechend darauf zu reagieren. Gut zu
wissen, daß das so machbar ist.

Je nach dem, ob geheizt, oder gekühlt
werden muss, sollten die Regler-Parameter unterschiedlich sein. Um
Unstetigkeiten beim umschalten zu vermeiden, sollte man im Bereich der
Null einen sanften Übergang der Parameter-Sätze einbauen.
Hm ich weiß nicht, ob ich Dich jetzt richtig verstanden hab. "Je nach
dem, ob geheizt, oder gekühlt werden muss" klingt nach Anpassung
zwischen Regler und Stellglied (geht für Temperaturregler nur mit
Peltier). Das hab ich auch mal ausprobiert (eben bei Peltier), hat
aber nicht so gut funktioniert. Anpassung zwischen Sensor
(Soll-Ist-Differenz) und Regler ging besser.

Mir ist allerdings nicht recht klar, ob sich der Auwand lohnt. Bei einer
Störung nach oben kann das System eben nicht schneller reagieren, als die
Abkühlung zulässt. Bestenfalls wird ein Kälteschock schneller
ausgeregelt.
Hm, ganz nach Anwendung könnten sich gar noch brutalere Eingriffe in
die Regelung lohnen:
Aufgrund der begrenzten Auflösung gebe ich nicht Ist- und Soll-Wert
auf den D/A-Wandler, sondern bilde bereits analog die Differenz
zwischen beiden. Der Controller "sieht" also nur die Differenz
zwischen Ist und Soll. Stelle ich nun von außen einen niedrigeren
Soll-Wert ein, wirkt das für den Controller wie eine Störung nach oben
(eine echte Störung kann natürlich auch vorkommen, aber nicht in dem
Ausmaß). Nun war der Controller aber gerade am Heizen, um die
Temperatur zu halten, und so muss er erstmal seinen I-Teil abbauen -
und das dauert seine Zeit, solange ich den Regler so langsam auslege,
daß er trotz des ungleichen Verhaltens der Strecke nicht schwingt.
Hier könnt man nun zum Beispiel eingreifen, in dem man im Fall "zu
warm" die Heizung erstmal komplett abschaltet, damit das Abkühlen eben
nicht unnötig länger dauert. Evtl mit Schwelle leicht über dem
Bereich, in dem es im normalen Regelbetrieb (ohne Störung) schwankt.
Wohlgemerkt, ich meine hiermit nicht unterschiedliche Verstärkungen
für "zu warm / zu kalt" vor dem Regler, oder für "heizen / kühlen"
hinterm Regler, sondern die Information "zu warm / zu kalt" von vor
dem Regler soll direkt am Regler vorbei auf das Stellglied wirken.


- evtl. doch PID?

PID hat bei uns immernoch zu den schnellsten Ergebnissen geführt, wenn
man auf eine aufwendige Vermessung der Regelstrecke mit Bode-Plot,
Kompensation der Pole und ähnlichem verzichten will.
Uppsa, ich hätt jetzt grad das Gegenteil vermutet (PID nur nach
Analyse). Wie gesagt, bin für experimentelle Einstelltips sehr
dankbar.


- dann aber evtl mit Schwelle für den D-Teil, unterhalb der Schwelle
nur PI

Der D-Anteil wird wie gesagt durch einen Filter entschärft.
Hm, in welcher Größenordnung für einen Kompromiss zwischen "zu nervös"
und "zu langsam"?


- oder D-Teil nur bei "zu kalt" zulassen, um zu schnelles Aufheizen
abzufangen

Das würde für sich allein genommen ein Aufschwingen begünstigen. Beim
Abkühlen ist der P-Anteil dann erst recht zu stark.
Naja weiß nicht, Abkühlen kann doch kaum schnell genug gehen.


ein leicht veränderter Regelungsparameter - ne Viertelstunde warten
muss, bis sich das System wieder abgekühlt hat :)

Warum sollte man das System für den nächsten Test grundsätzlich
abkühlen lassen? Wenn die Regelung ihren Job tut, dann sollte sie in der
Lage sein, aus jeder Start-position schnellstmöglich den Regel-Wert
erreichen.
Ja, aus jeder Startposition _unterhalb_ des Sollwerts :)
Und die muss ich erstmal erreichen. Sie sollte - um ein optimales
"Hochfahren" der Regelung zu erreichen - so weit vom Sollwert weg
sein, daß sich eine einigermaßen konstante Anstiegsgeschwindigkeit
ergibt. Und sie sollte immer gleich sein, um die Auswirkungen
geänderter Regelungsparameter gut beurteilen zu können (schwingt er
jetzt aufgrund der Parameter mehr über, oder hatte er bloß mehr
"Anlauf"?).

Zur interaktiven Einstellung der Parameter empfiehlt es sich,
den Regelpunkt periodisch hoch und runter springen zu lassen. Je besser
das System dieser Vorgabe folgt, um so besser die Einstellung.
"Springen" ist gut in dem Fall :)
Nee ernsthaft, ich will so auf 60°C regeln, 0.1 Grad genau (nicht
absolut, aber konstant und reproduzierbar), und ich erwarte durch die
gute Isolation eine Abkühlung im Bereich Grad pro Minute. Da kann das
ganze schon ein wenig dauern, umso wichtiger, daß man nicht blind
verschiedensten Ideen hinterherläuft, ohne zu wissen, obs auf diese
oder jene Art und Weise überhaupt machbar ist.

Dank und Gruß,
Michael.
 
Michael Eggert schrieb:
Naja, ist ein Alublock 4x4x2cm, beheizt von 4 Zementwiderständen
(symmetrische Anordnung). Den Temperaturfühler will ich schon so dicht
wie möglich an einen der Widerstände bringen, doch zeitliche
Verzögerung wirds immer geben. Heize ich einen Zementwiderstand
(nackt, Temperaturfühler aufgeklebt) mit ca 1 Grad pro Sekunde, so
schwingt die Temperatur nach Abschalten der Heizung noch etwa 10 Grad
über.
Hallo,

das Überschwingen dürfte von einer Totzeit kommen, da hätte ich den
Wärmetransport im Zement vom Widerstand zu dessen Gehäuse in Verdacht.

Bye
 
Michael Eggert schrieb:

Problematisch ist nur die Einstellerei. Bei PI kein Problem "nach
Gefühl", erst nur P bis er schwingt, P halbieren, I aufdrehen bis es
gut aussieht -> passt. Wenns dann noch schwingt oder zu träge ist,
kanns nur noch der I sein, der nicht stimmt. Oder irgendwo begrenzt
was.
Gibts was ähnlich triviales für PID? Da wüsst ich nämlich nicht, an
welchem "Schräubchen" ich drehen muss, wenns so oder so aussieht.
ja, es gibt auch da solche Faustformeln. Die Faktoren habe ich aber
gerade nicht im Kopf oder griffbereit.

...habe ich eine begrenzte Heizleistung. In der Aufwärmphase könnte
der Integrator auf einen höheren Wert vollaufen (große
Soll-Ist-Differenz über lange Zeit), als die Heizung wirklich heizen
kann. Dann ist der Integrator am Ende voller, als er wäre, wenn ich
heizen könnte, wie er vorgibt (weils länger dauert als er "denkt",
also wofür er eingestellt ist). Das führt zu Überschwingen, weil der
lange aufgelaufene I-Teil erstmal wieder abgebaut werden muss. Der
Integrator funktioniert eben nur in einem linearen System gut, und
linear ists nicht mit begrenzter Heizleistung.
Wir haben in einem ähnlichen Fall daher den Integrator nur in einem
relativ kleinen Fenster um den Sollwert betrieben. Das hilft gerade
bei größeren Sprüngen, bei denen es bis zum Erreichen dieses engeren
Fensters lange dauert.

...möchte ich von Anfang an mit voller Leistung heizen, und nicht erst
warten, bis der Integrator losläuft. Der P-Teil ist nicht groß genug
dafür, da der Controller nur mit einem kleinen Ausschnitt der
Temperatur (analog) gefüttert wird.
Um erstmal möglichst schnell in die richtige Region zu kommen, könnte
man einen Prädiktionsregler einsetzen (so haben wir's zumindest getan).
Erst bei Erreichen des Zielfensters wird "sanft" auf den PID-Regler
umgeschaltet. Dann hat aber der Prädiktionsregler schon einen guten
Teil der Heizleistung schon wieder abgeschaltet (wenn er richtig
dimensioniert ist).

- Unterschiedliche Gewichtungen für zu warm / zu kalt, bevor es in den
PI-Regler geht

So würde ich es auch angehen.

Oh, ich fürchtete schon, jetzt kommt das große "No-No!", weils Aufgabe
des PI(D) wär, von selbst entsprechend darauf zu reagieren. Gut zu
wissen, daß das so machbar ist.
Ja, es ist definitiv machbar. Hat auch bei unserem Fall geholfen.

Je nach dem, ob geheizt, oder gekühlt
werden muss, sollten die Regler-Parameter unterschiedlich sein. Um
Unstetigkeiten beim umschalten zu vermeiden, sollte man im Bereich der
Null einen sanften Übergang der Parameter-Sätze einbauen.

Hm ich weiß nicht, ob ich Dich jetzt richtig verstanden hab. "Je nach
dem, ob geheizt, oder gekühlt werden muss" klingt nach Anpassung
zwischen Regler und Stellglied (geht für Temperaturregler nur mit
Peltier). Das hab ich auch mal ausprobiert (eben bei Peltier), hat
aber nicht so gut funktioniert. Anpassung zwischen Sensor
(Soll-Ist-Differenz) und Regler ging besser.
Alles eine Frage der Nomenklatur. Wenn Du die Heizung abschaltest,
kühlst Du ja eigentlich schon. Nur eben sehr schwach und außerdem
abhängig vom Istwert...

Hm, ganz nach Anwendung könnten sich gar noch brutalere Eingriffe in
die Regelung lohnen:
Aufgrund der begrenzten Auflösung gebe ich nicht Ist- und Soll-Wert
auf den D/A-Wandler, sondern bilde bereits analog die Differenz
zwischen beiden. Der Controller "sieht" also nur die Differenz
zwischen Ist und Soll. Stelle ich nun von außen einen niedrigeren
Soll-Wert ein, wirkt das für den Controller wie eine Störung nach oben
(eine echte Störung kann natürlich auch vorkommen, aber nicht in dem
Ausmaß). Nun war der Controller aber gerade am Heizen, um die
Temperatur zu halten, und so muss er erstmal seinen I-Teil abbauen -
und das dauert seine Zeit, solange ich den Regler so langsam auslege,
daß er trotz des ungleichen Verhaltens der Strecke nicht schwingt.
Hier könnt man nun zum Beispiel eingreifen, in dem man im Fall "zu
warm" die Heizung erstmal komplett abschaltet, damit das Abkühlen eben
nicht unnötig länger dauert. Evtl mit Schwelle leicht über dem
Bereich, in dem es im normalen Regelbetrieb (ohne Störung) schwankt.
Damit bist Du genau wieder bei der Unterscheidung "im Zielfenster"
oder "außerhalb", die Du zur Umschaltung zwischen Prädiktionsregler
und PID-Regler nutzen kannst. Das funktioniert dann übrigens in
beide Richtungen, und auch unabhängig davon, ob sich der Sollwert
oder der Istwert nun gerade geändert hat.

PID hat bei uns immernoch zu den schnellsten Ergebnissen geführt, wenn
man auf eine aufwendige Vermessung der Regelstrecke mit Bode-Plot,
Kompensation der Pole und ähnlichem verzichten will.

Uppsa, ich hätt jetzt grad das Gegenteil vermutet (PID nur nach
Analyse). Wie gesagt, bin für experimentelle Einstelltips sehr
dankbar.
PID nach Analyse klingt zwar verlockend, geht aber in der Praxis
meistens in die Hose... Reale Systeme sind zu nichtideal für die
Modelle der Theoretiker :)

--
Dipl.-Ing. Tilmann Reh
Autometer GmbH Siegen - Elektronik nach Maß.
http://www.autometer.de

==================================================================
In a world without walls and fences, who needs Windows and Gates ?
(Sun Microsystems)
 
On Tue, 25 Nov 2003 17:15:01 +0100, Uwe Hercksen
<hercksen@mew.uni-erlangen.de> wrote:

Hi!

Heize ich einen Zementwiderstand
(nackt, Temperaturfühler aufgeklebt) mit ca 1 Grad pro Sekunde, so
schwingt die Temperatur nach Abschalten der Heizung noch etwa 10 Grad
über.

das Überschwingen dürfte von einer Totzeit kommen, da hätte ich den
Wärmetransport im Zement vom Widerstand zu dessen Gehäuse in Verdacht.
Das ist schon klar, woher auch sonst.
Bloß was soll ich sonst nehmen, die Zement-Dinger sind schön eckig,
kann ich prima mit Sekundenkleber in eine Nut bappen. Die komischen
Metalldinger von Conrad (421111) haben innen sicher auch Zement,
müssen ja isoliert sein. Und normale runde Drahtwiderstände könnt ich
zwar in eine Bohrung stecken, die haben selbst auch weniger
"drumherum", aber keinen konstanten Durchmesser -> mehr Kleber.

Gruß,
Michael.
 
On Tue, 25 Nov 2003 17:26:34 +0100, Tilmann Reh
<tilmann.reh@autometer.de> wrote:

Hi!

Gibts was ähnlich triviales für PID? Da wüsst ich nämlich nicht, an
welchem "Schräubchen" ich drehen muss, wenns so oder so aussieht.

ja, es gibt auch da solche Faustformeln. Die Faktoren habe ich aber
gerade nicht im Kopf oder griffbereit.
Auch mit "drehen bis schwingt und dann die Hälfte" und so? Dann werd
ich nochmal googlen. Meist findet man unter "PID parameter einstellen"
leider nur Firmen, die PID Regelungen verkaufen, wo man alle Parameter
einstellen kann :)


...habe ich eine begrenzte Heizleistung. In der Aufwärmphase könnte
der Integrator auf einen höheren Wert vollaufen [...] Überschwingen

Wir haben in einem ähnlichen Fall daher den Integrator nur in einem
relativ kleinen Fenster um den Sollwert betrieben. Das hilft gerade
bei größeren Sprüngen, bei denen es bis zum Erreichen dieses engeren
Fensters lange dauert.
Yepp, so hab ichs mal bei einer analogen Regelung gemacht: Reed-relais
schließt Integrator-Ko kurz (über Widerstand, damit Entladestrom nicht
die Kontakte verklebt), solange Abweichung groß zu ist. Schwelle so
einstellen, daß der P-Teil es sicher schafft, die Abweichung darunter
zu kriegen.


Um erstmal möglichst schnell in die richtige Region zu kommen, könnte
man einen Prädiktionsregler einsetzen (so haben wir's zumindest getan).
Erst bei Erreichen des Zielfensters wird "sanft" auf den PID-Regler
umgeschaltet. Dann hat aber der Prädiktionsregler schon einen guten
Teil der Heizleistung schon wieder abgeschaltet (wenn er richtig
dimensioniert ist).
Prädiktionsregler... da wird sich google drüber freuen :)
Klingt nach "vorhersagen", also wohl irgendwas mit Abweichung und
Steigung und evtl noch Krümmung und dann raten, wo es wohl hinläuft.
Ähnlich wie der PID das auch tun will :)

Ich dachte daran, erstmal mit voller Leistung zu heizen, solange meine
Abweichung groß ist (so groß, daß der A/D-Wandler begrenzt. Wie
gesagt, ich bilde die Abweichung analog). Sobald ich aus der
Begrenzung komme, schalte ich die Heizung ab und schaue mir die
Ableitung an. Im Umkehrpunkt wollte ich dann auf PID schalten.


- Unterschiedliche Gewichtungen für zu warm / zu kalt, bevor es in den
PI-Regler geht

Ja, es ist definitiv machbar. Hat auch bei unserem Fall geholfen.
Fein!


"Je nach
dem, ob geheizt, oder gekühlt werden muss" klingt nach Anpassung
zwischen Regler und Stellglied (geht für Temperaturregler nur mit
Peltier).

Alles eine Frage der Nomenklatur. Wenn Du die Heizung abschaltest,
kühlst Du ja eigentlich schon. Nur eben sehr schwach und außerdem
abhängig vom Istwert...
Na jein, ich kann nicht hinter dem Regler stärker "nicht heizen" als
ich heizen kann. Ich kann höchstens die Heizleistung schneller
zurücknehmen, dann greif ich aber effektiv _vor_ dem Regler ein.
Oder ich definiere eine bestimmte Heizleistung als die des
Gleichgewichtszustands, und nehme, wenn der Regler "mehr als soviel"
sagt, eben nur ein bisschen mehr, und bei "weniger als soviel" eben
viel weniger. Da (Leistung für Gleichgewichtszustand) haben wir dann
aber die Istwertabhängigkeit.


Hier könnt man nun zum Beispiel eingreifen, in dem man im Fall "zu
warm" die Heizung erstmal komplett abschaltet, damit das Abkühlen eben
nicht unnötig länger dauert. Evtl mit Schwelle leicht über dem
Bereich, in dem es im normalen Regelbetrieb (ohne Störung) schwankt.

Damit bist Du genau wieder bei der Unterscheidung "im Zielfenster"
oder "außerhalb",
So könnte man es nennen. Wobei das Zielfenster deutlich unterhalb des
Sollwerts anfängt (um Überschwingen durch die hohe Heizleistung beim
Start abzufangen), aber nur knapp über dem Sollwert wieder aufhört.
Deutlich unsymmetrisch also.

die Du zur Umschaltung zwischen Prädiktionsregler
und PID-Regler nutzen kannst. Das funktioniert dann übrigens in
beide Richtungen, und auch unabhängig davon, ob sich der Sollwert
oder der Istwert nun gerade geändert hat.
Ich sehe, ich sollte mir das Ding mal anschauen.


PID nach Analyse klingt zwar verlockend,
Nö, eigentlich eher nach "bääh...", mir ist schrauben lieber :)

geht aber in der Praxis
meistens in die Hose... Reale Systeme sind zu nichtideal für die
Modelle der Theoretiker :)
Das ist beruhigend, dann bin ich also nicht akut vom Aussterben
bedroht :)

Gruß,
Michael.
 
On Tue, 25 Nov 2003 16:02:45 +0100, "Tom" <thomas.waldau@web.de>
wrote:

Hi!

Wieso sollte PID bei einem trägen System 'zappelig' sein? Das wird der nur,
wenn Du den Sollwert viel veränderst.
Naja, es ja auch noch Rauschen in der Messung, da reagiert der D dann
ziemlich hektisch drauf und versaut Dir evtl die Regelung. Hat er bei
mir jedenfalls mal in nem analogen System gemacht. Lag aber vielleicht
auch daran, daß ich - wenn ich mich recht erinnere - nur ein RC
Tiefpass davor hatte. Also 1Pol. Irgendwie logisch, daß ich da nur
zuviel oder zuwenig oder beides gleichzeitig filtere, oder? :)


Nachgedacht habe ich bereits über:
- mit viel Leistung aufheizen, danach im Regelbetrieb die maximale
Heizleistung begrenzen

D-Anteil?
In der Theorie ja. Sobald Begrenzungen ins Spiel kommen (siehe anderes
posting von mir in diesen thread), reicht das aber nicht alleine.


- Unterschiedliche Gewichtungen für zu warm / zu kalt, bevor es in den
PI-Regler geht
- evtl. doch PID?

Der D-Anteil wird doch immer geringer, oder?
Der P-Teil wird mit abnehmender Abweichung geringer. Der D-Teil wird
nur geringer, wenn das System selbst ruhiger wird, unabhängig von der
Abweichung.
Du meintest vielleicht, der D-Teil wirkt dem P entgegen und die Summe
wird geringer? Der D-Teil wirkt beim schnellen Aufheizen natürlich
stärker entgegen als beim langsamen Abkühlen, bewirkt also ähnliches
wie eine Gewichtung. Darum schrieb ich schon bewusst "PI mit
Gewichtung oder PID".


Ich gebe zu, dass mein Studium noch nicht sooo lange her ist, ich allerdings
schon wieder einiges vergessen habe (obwohl ich in meiner Diplomarbeit
mehrere Regleroptimierungen simuliert habe).
Och, bei mir ists auch noch nicht so lange her. Glücklicherweise hab
ich schon immer viel gebastelt, denn im Studium war nicht viel mit
Praxisbezug. Das einzige, woran ich mich erinnere, war, daß man einen
Differentiator nicht wie einen Integrator mit vertauschten Elementen
aufbaut (denn dann schwingt er), sondern mit zwei OP, einen als
Integrator in der Rückkopplung des anderen (so also D als
Umkehrfunktion des I bilden).

Vielleicht blamiere ich mich
jetzt also! Aber ich würde eine klassische PID-Regelung machen. Als erstes
nimmst Du eine Sprungantwort auf,
Wobei das so einfach auch nicht ist...

dann kannst Du Dir aussuchen, wonach Du
die Parameter bestimmst (Ziegler-Nichols oder Kuhn oder T-Summe oder
wasweißichwas), und dann testest Du die Regelung mit diesen Parametern.
Das hatte ich ja befürchtet und wollts eigentlich vermeiden. Und es
ist beruhigend, hier im thread zu lesen, daß das auch nicht immer
klappt :)


Ich weiß (noch) nicht, was ein Mikrocontroller alles kann,
Ich wollte damit auch nur sagen, daß ich quasi alle Freiheiten hab,
wilde Algorithmen zu implementieren. Solche Sachen wie "aufheizen bis
über Schwelle, dann warten bis Umkehrpunkt, dann Regelung starten"
lassen sich mit einem Controller natürlich viel einfacher realisieren
(und wieder verwerfen :)) als in analoger Technik.

das versuche ich mir gerade beizubringen.
Ach übrigens, ist ein ATMega8 mit 16MHz. Von der Rechenleistung völlig
oversized, aber der regelt mehrere Sachen, da brauch ich die 3
PWM-Ausgänge. Und 16MHz, damit die Drosseln in der PWM-Endstufe nicht
so dick werden. Der Heizung wärs ja egal, aber ich wollt keinen Sender
bauen, und meine Peltiers (gleiche Kiste, andere Baustelle) mögen
lieber DC als Pulse.

Aber wenn Du ein System hast, welches relativ
gleichmäßige Bedingungen aufweist (und wenn ein Mikrocontroller das
schafft), dann kannst Du es ja mal mit prädiktiver Regelung versuchen.
Hm, die Einschläge mit diesem Begriff kommen immer näher, jetzt schau
ich aber wirklich mal nach :))

Gruß,
Michael.
 
On Tue, 25 Nov 2003 17:26:34 +0100, Tilmann Reh
<tilmann.reh@autometer.de> wrote:

Hi..

Um erstmal möglichst schnell in die richtige Region zu kommen, könnte
man einen Prädiktionsregler einsetzen
So, hab mal nach "Prädiktive Regelung" geschaut....
*HUST* Hilfe, das staubt ja!
Ich glaub, ich bin zu alt für sowas :)

Gruß,
Michael.
 
*schnippschnapp*

Aber wenn Du ein System hast, welches relativ
gleichmäßige Bedingungen aufweist (und wenn ein Mikrocontroller das
schafft), dann kannst Du es ja mal mit prädiktiver Regelung versuchen.

Hm, die Einschläge mit diesem Begriff kommen immer näher, jetzt schau
ich aber wirklich mal nach :))

Falls da mehr Interesse besteht, müsste ich meine Diplomarbeit mal wieder
rauskramen!

Tom
 
On Tue, 25 Nov 2003 20:12:55 +0100, Tom <thomas.waldau@web.de> wrote:

Hi!

[Prädiktive Regelung]

Falls da mehr Interesse besteht, müsste ich meine Diplomarbeit mal wieder
rauskramen!
Wenns ein wenig Praxisbezug hat und einem nicht nur die Matrizen um
die Ohren fliegen, gerne!
Auf was für einem System hast das implementiert?

Gruß,
Michael.
 
Falls da mehr Interesse besteht, müsste ich meine Diplomarbeit mal wieder
rauskramen!

Wenns ein wenig Praxisbezug hat und einem nicht nur die Matrizen um
die Ohren fliegen, gerne!
Auf was für einem System hast das implementiert?

Naja, einzwei Matrizen wirst Du schon erstellen müssen. Ich habe das ganze
mit LabView realisiert, hat eigentlich ziemlich viel Spass gemacht. Ich
krame mal rum! ;)

Tom
 
On Tue, 25 Nov 2003 23:32:07 +0100, Tom <thomas.waldau@web.de> wrote:

Hi!

Naja, einzwei Matrizen wirst Du schon erstellen müssen.
Das soll ja nicht das Problem sein. Ich hab bloß auf google nur graue
Theorie gefunden, weit von jeder Implementierung entfernt.


Ich habe das ganze mit LabView realisiert, hat eigentlich
ziemlich viel Spass gemacht.
Prima, hab ich auch.. Könnte also zumindest schonmal simulieren.

Ich bin mir nur noch nicht recht im klaren darüber, ob das der
richtige Ansatz ist. Schließlich trifft doch der Regler eine
Vorhersage über den zu erwartenden Ist-Wert aufgrund des bekannten
jetzigen Ist-Werts, des Soll-Werts und der Stellgröße, sowie des
Verhaltens der Strecke. Und das Verhalten der Strecke, also quasi das
"Streckenmodell im Regler" wird dynamisch angepasst? Wie gesagt, das
Verhalten ist abhängig von der absoluten Temperatur, der Controller
kennt aber nur die Differenz zwischen Ist- und (per OP subtrahierten)
Soll-Wert.

Ich krame mal rum! ;)
Feini!

Gruß,
Michael.
 
Michael Eggert schrieb:

Wenns ein wenig Praxisbezug hat und einem nicht nur die Matrizen um
die Ohren fliegen, gerne!
Auf was für einem System hast das implementiert?
Du könntest es mal mit der absoluten Minimal-Variante des
prädiktiven Reglers versuchen. Einfach die letzten N Abweichungen
merken (FIFO) und dann die Gerade durch die älteste und die
jüngste Differenz (X-Achse = Zeit) verlängern und damit quasi die
Vorhersage für einen bestimmten Zeitpunkt M Takteinheiten voraus
machen.
Das Verfahren ist gut genug, um die Heizung rechtzeitig abzuschalten,
lange bevor der Istwert erreicht wird, denn nur so verhinderst Du
das Überschwingen aufgrund der Totzeiten im System.

Den Prädiktionsfaktor M kannst Du dann für Heizen und Abkühlen
auch wieder verschieden machen.

Dieses Verfahren eignet sich aber nur zum ersten Anregeln, für die
spätere Temperaturregelung ist es nicht genau und ruhig genug.
Dafür ist es mit minimalem Aufwand implementierbar, ich habe das
mal mit einem 89C2051 gemacht, und auch der hat noch reichlich
Zeit für andere Sachen gehabt...

--
Dipl.-Ing. Tilmann Reh
Autometer GmbH Siegen - Elektronik nach Maß.
http://www.autometer.de

==================================================================
In a world without walls and fences, who needs Windows and Gates ?
(Sun Microsystems)
 
Hi!

Du könntest es mal mit der absoluten Minimal-Variante des
prädiktiven Reglers versuchen. Einfach die letzten N Abweichungen
merken (FIFO) und dann die Gerade durch die älteste und die
jüngste Differenz (X-Achse = Zeit) verlängern und damit quasi die
Vorhersage für einen bestimmten Zeitpunkt M Takteinheiten voraus
machen.
Sowas ähnliches hab ich vorhin mal ausprobiert:
Sobald ich beim Aufheizen mit der Differenz in den für den A/D-Wandler
sichtbaren Bereich komme (dann bin ich noch 5 Grad von der
Solltemperatur entfernt), bilde ich _einmal_ die Ableitung und rate
den Abschalt-Zeitpunkt (unter der Voraussetzung, daß die Steigung der
Temperatur konstant bleiben wird, ich also von "weit genug unten"
angefangen habe zu heizen).

Das Verfahren ist gut genug, um die Heizung rechtzeitig abzuschalten,
lange bevor der Istwert erreicht wird, denn nur so verhinderst Du
das Überschwingen aufgrund der Totzeiten im System.
Funktioniert noch nicht optimal, aber ich hab auch grad nur den
Widerstand ohne weiteren Wärmespeicher und ohne Isolation. Scheint
jedenfalls schon mal ein brauchbarer Ansatz zu sein.


Den Prädiktionsfaktor M kannst Du dann für Heizen und Abkühlen
auch wieder verschieden machen.
Beim Abkühlen brauch ichs wahrscheinlich gar nicht, denn wieder
aufheizen kann ich so schnell, daß mich ein Überschwinger zu niedrigen
Temperaturen nicht weiter stören würde.


Dieses Verfahren eignet sich aber nur zum ersten Anregeln, für die
spätere Temperaturregelung ist es nicht genau und ruhig genug.
Wie schauts denn mit PID bei Totzeit aus? Wo liegen da die Grenzen?


Dafür ist es mit minimalem Aufwand implementierbar,
Absolut.

Gruß,
Michael.
 
Michael Eggert schrieb:

Funktioniert noch nicht optimal, aber ich hab auch grad nur den
Widerstand ohne weiteren Wärmespeicher und ohne Isolation. Scheint
jedenfalls schon mal ein brauchbarer Ansatz zu sein.
Ebent. :)

Dieses Verfahren eignet sich aber nur zum ersten Anregeln, für die
spätere Temperaturregelung ist es nicht genau und ruhig genug.

Wie schauts denn mit PID bei Totzeit aus? Wo liegen da die Grenzen?
Totzeit ist immer problematisch. Je länger die Zeit, desto
langsamer und vorsichtiger muß der Regler reagieren.
Das bedeutet recht kleine P- und I- Anteile; den D-Anteil kannst
Du Dir bei prädiktiver Anregelung vermutlich schenken.
Dementsprechend wird es aber auch recht lange dauern, bis der
PI-Regler anschließend stabil Istwert auf Sollwert gebracht hat.
Dem Reglerwechsel beim Erreichen des Zielfensters gebührt daher
besondere Aufmerksamkeit, sonst läuft die Temperatur wieder aus
dem Fenster heraus, bevor der PI-Regler "gegriffen" hat.

Gehe außerdem davon aus, daß Du recht schnell die Heizung an- und
ausschalten mußt (also PWM), um eine einigermaßen fein stellbare
Heizleistung zu haben. Das kann der Controller aber mit links.

--
Dipl.-Ing. Tilmann Reh
Autometer GmbH Siegen - Elektronik nach Maß.
http://www.autometer.de

==================================================================
In a world without walls and fences, who needs Windows and Gates ?
(Sun Microsystems)
 
Schau mal unter Luenberg Beobachter oder Zustandsregelung mit
Beobachter.
Klingt saukompliziert, ist aber ganz simpel.

Du rechnest in deinem Controller die Strecke mit , Daumen mal Pi reicht,
einfach z.B. I (Addier mal schön) oder PI + Totzeit (Ringpuffer).
Dann bekommst du einen Streckenausgang yb vor der Totzeit und yb' nach
der Totzeit.
Regeln (z.B. klassisch mit PID oder noch einfacher Zwipunkt)
tust du yb, nicht das Temperatursignal y vom Fühler !
D.h. du hast virtuell eine Strecke ohne Totzeit, das ist dann machbar.
Dann berechnest du noch k(y-yb') als Korrektur der Abweichung Modell -
Real
und ziehst das vom Eingang deines Modells (1 oder 0 bei Zweipunktregler)
ab.

Das geht ziemlich gut und ist magisch stabil. Wähle k nicht zu groß!
Mit PID wir dich die Totzeit immer erschlagen.

Vielleicht ist die Erklärung etwas dürftig, aber sonst müsste ich
wirklich weit ausholen. Aber ich hab das alles schon auf einem 80552 vor
10 Jahren realisiert , inzwischen 80186. An sich sind das
100 Zeilen Pascal Code..

Grüße

Markus Greim

Ich hoff das liest mein alter Regelungstechnik-Professor nicht...;-)
 

Welcome to EDABoard.com

Sponsor

Back
Top