Forum: Digitale Signalverarbeitung / DSP / Machine Learning Modell für Sprungantworten. PT2 passt nicht genau. Will Heizelement regeln.


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Gerald M. (gerald_m17)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe ein Heizelement mit einem Fühler, welches ich regeln möchte.
Bin zunächst einmal klassisch vorgegangen mit einem PID Regler, wobei 
ich durch das lange Nachlaufen den D-Teil so anziehen musste, dass das 
Rauschen des Signals trotz Filter zu hoch war.

Als nächstes habe ich anhand einer Sprungantwort ein Pt2 Glied 
angefittet und ein diskretes State Space Modell erstellt um anhand der 
States die zukünftige Peak-Temperatur zu bestimmen.
Das Problem hierbei ist aber, dass die angefitteten Pt2 Glieder am 
Anfang schneller steigen als meine Messdaten, weshalb die berechnete 
zukünftige Peak-Temperatur immer zu niedrig ausfällt, weshalb zu stark 
aufgeheizt wird.

Ich habe einmal exemplarisch drei Messungen angehängt, als Text und als 
Matlab iddata.
In den Daten ist die reine Temperaturdifferenz zur Raumtemperatur 
aufgetragen (wobei diese auch nur auf etwa 1°C stimmt). Da zwischen den 
Messungen sonst mehrere Stunden vergehen, fangen die Messungen nicht bei 
0 Kelvin Differenz an, sondern haben meist so 8 Kelvin über 
Raumtemperatur. Entsprechend ist der Anfangszustand nicht der 
Ruhezustand vom System. Ich kann außerdem nur Heizen und nicht Kühlen.

Gerne würde ich nach einem Modell regeln, wobei ich auch andere Methoden 
ausprobieren würde. Die Zieltemperatur ist später mal bei ca. 100°C 
(also 75K Differenz), welche ich gerne in spätestens 3 Minuten stabil 
erreicht haben möchte.

Hat jemand Ideen oder kann mir sonst helfen?

von Joachim B. (jar)


Lesenswert?

Gerald M. schrieb:
> Hat jemand Ideen oder kann mir sonst helfen?

nimm einen elektronischen 2-Punktregler ist einfacher und funktioniert.

Gerald M. schrieb:
> Die Zieltemperatur ist später mal bei ca. 100°C

Power ON, wenn 100°C überschritten wird OFF und wenn unterschritten 
wieder ON
Je nach deiner Auflösung pendelt das halt um deine Wunschtemperatur.
Der P Anteil darf sowieso nicht zu groß werden, der I Anteil erreicht 
den Wunschwert erst im Unendlichen. Für Öfen sehe ich da keinen Sinn 
einen PID Regler einzusetzen.

Beitrag "Re: Temperaturregelung PID auf Zweipunktregler"
Beitrag "Re: Temperaturmessung bis 1000°C"

: Bearbeitet durch User
von Gerald M. (gerald_m17)


Lesenswert?

Hi,

ein Zweipunktregler bedeutet bei mir wenn ich von Raumtemperatur aus 
starte, selbst wenn nur mit 10% geheizt wird, eine Überhitzung von etwa 
80°C. Ich hätte dann etwa 180°C, was etwa eine Stunde dauert bis wieder 
auf 100°C heruntergekühlt wurde.
Das würde ich nicht als "funktioniert" bezeichnet, obwohl "einfach" 
zutrifft.
Wenn man nahe der Solltemperatur ist sieht das natürlich anders aus, 
aber da muss man halbwegs intelligent hinkommen.

von Joachim B. (jar)


Lesenswert?

Gerald M. schrieb:
> ein Zweipunktregler bedeutet bei mir wenn ich von Raumtemperatur aus
> starte, selbst wenn nur mit 10% geheizt wird, eine Überhitzung von etwa
> 80°C.

das musst du mal für mich übersetzen.
Wieso sollte das überheizen?
Kommt Opa um die Ecke und schaltet die Heizung aus?

Ich schrieb doch:

Joachim B. schrieb:
> nimm einen elektronischen 2-Punktregler

Eine Überheizung kann doch nur stattfinden wenn du einen Zuse Rechner 
nimmst der die Messung noch per Relais nach digital konvertiert.

von Gerald M. (gerald_m17)


Lesenswert?

Schau dir Mal bitte das Bild mit den Temperaturverläufen aus meinem 
ersten Post, gepaart mit den Ansteuerungen, an.
Eingang und Ausgang haben die selbe x-Achse

von Joachim B. (jar)


Lesenswert?

Gerald M. schrieb:
> Schau dir Mal bitte das Bild mit den Temperaturverläufen aus meinem
> ersten Post

geschaut, sagt mir nur das deine Reaktion zu langsam ist oder dein 
Messwertaufnehmer an der falschen Stelle ist, auch 2 Punkt-regler kann 
man in der Leistung drosseln.

Ich hatte selbst beim 40kW Heizer nur das Überschwingen von der ADC 
Auflösung +-5K (8-bit 1200°C Endwert) und konnte die Leistung auch 
drosseln.

Ich kenne deine thermischen Zeitkonstanten nicht, dein Überschwingen 
liegt am D Anteil

Gerald M. schrieb:
> mit einem PID Regler

1. Versuch P-Regler (ID auf Null)
2. Versuch I-Regler (PD auf Null)
3. Versuch PI-Regler (D auf Null)

dann kannst du es selber feststellen.

: Bearbeitet durch User
von Noname (Gast)


Lesenswert?

Das Kühlen ist viel langsamer als das Aufheizen. Versuchs mal mit viel 
weniger Heizleistung auch wenns erst mal länger als 3 min dauert bis der 
Sollwert erreicht wird.

von Gerald M. (gerald_m17)


Lesenswert?

Joachim B. schrieb:
> geschaut, sagt mir nur das deine Reaktion zu langsam ist oder dein
> Messwertaufnehmer an der falschen Stelle ist, auch 2 Punkt-regler kann
> man in der Leistung drosseln.

An der Position kann ich nichts ändern. Die Heizung ist innen in 
Aluminium gegossen und ich kann nur von außen mit einem Anschraubfühler 
messen.

Ich habe dort keine Reaktion von mir drin. Das ist lediglich dir 
Reaktion des Fühlers auf den Input der Heizung. Mein Mikrocontroller 
gibt diese Werte mit 100Hz aus und nimmt diese mit 100Hz auf. Die 
Temperaturwerte aus dem Diagramm sind nicht gefiltert sondern roh.
Wie gesagt, die breite Kurve ist bereits mit nur 10% Leistung.

Joachim B. schrieb:
> ICh hatte selbst beim 40kW Heizer nur das Überschwingen von der ADC
> Auflösung +-5K (8-bit 1200°C Endwert) und konnte die Leistung auch
> drosseln.

Ich habe 1.4kW und meine Auflösung beträgt deutlich unter einem 
Millikelvin. Das Rauschen liegt Peak2Peak bei etwa 60mK (siehe Bild, nur 
jeder zehnte Messwert über 20 Sekunden). Ich kann bis 150°C messen.

Joachim B. schrieb:
> Ich kenne deine thermischen Zeitkonstanten nicht, dein Überschwingen
> liegt am D Anteil

Ich kenne sie für das angefittete Pt2 Modell (angehängt):
2433 Sekunden und 46,7 Sekunden. Gain ist übrigens 7070.
Das Überschwingen liegt nicht am D-Teil, da im Bild im ersten Post rein 
die Strecke ohne Regler zu sehen ist.

Joachim B. schrieb:
> Versuch P-Regler (ID auf Null)
> Versuch I-Regler (PD auf Null)
> Versuch PI-Regler (D auf Null)

Diese Regler funktionieren aufgrund der Zeitkonstanten nicht.

von Gerald M. (gerald_m17)


Angehängte Dateien:

Lesenswert?

Bilder vergessen

Edit: bei dem PT2 Glied gibt es einen Input von 0,15 für 250 Sekunden 
dann ist er 0. Das ist schlecht dargestellt (war nur ein Screenshot für 
mich)

Edit2:
Noname schrieb:
> Das Kühlen ist viel langsamer als das Aufheizen. Versuchs mal mit
> viel weniger Heizleistung auch wenns erst mal länger als 3 min dauert
> bis der Sollwert erreicht wird.

Ja, das funktioniert, dauert dann aber deutlich im zweistelligen 
Minutenbereich.

Insgesamt dachte ich schon daran, eine Erstansteuerung über die Energie 
zu machen.
Wie man im ersten Post sieht, sind bei allen Stufen die Endtemperatur 
ziemlich gleich. Das liegt daran dass die Fläche der Impulse (Zeit * 
Energie) gleich sind.
Wenn ich dann nahe an der Zieltemperatur bin, kann ich auf einen 
P-Regler.

: Bearbeitet durch User
von Joachim B. (jar)


Lesenswert?

Gerald M. schrieb:
> Ja, das funktioniert, dauert dann aber deutlich im zweistelligen
> Minutenbereich.
>
> Insgesamt dachte ich schon daran, eine Erstansteuerung über die Energie
> zu machen.

ist ja nicht falsch, aber der Überschwinger beweist das du zuviel 
Energie reingesteckt hast!

Gerald M. schrieb:
> An der Position kann ich nichts ändern. Die Heizung ist innen in
> Aluminium gegossen und ich kann nur von außen mit einem Anschraubfühler
> messen.

Dann muss man damit leben, reduziere die Leistung und/oder den D-Anteil 
um Überschwingen zu meiden.

von Gerald M. (gerald_m17)


Angehängte Dateien:

Lesenswert?

Joachim B. schrieb:
> ist ja nicht falsch, aber der Überschwinger beweist das du zuviel
> Energie reingesteckt hast!

Nur für mich, von welchem Überschwinger redest du?

Joachim B. schrieb:
> reduziere die Leistung und/oder den D-Anteil um Überschwingen zu meiden.

Der D-Anteil ist das einzige was was das Überschwingen bremsen kann. Ich 
müsste den D-Anteil vergrößern. Denn der ist der einzige Gegenspieler 
zum P-Term, der ja dauernd heizen möchte, bis ich über der 
Zieltemperatur bin. Und das ist deutlich zu lange.

Ich habe ein Bild der PD-Steuerung. Rot ist der P-Anteil, grün der 
D-Anteil. Blau ist die Summe und damit das Ansteuersignal.
Hier hatte ich zum Testen den Anteil des D-Regler nur auf kleiner Null 
beschränkt.
Man sieht dass nach 30 Sekunden der D-Term die Ansteuerung bereits auf 0 
zieht, ich aber trotzdem ein Überschwingen habe.
Deshalb würde nur ein reduzieren des P-Teils, oder ein erhöhen des 
D-Teils helfen. Wie man aber an dem Signal sieht ist der Gain aber schon 
so hoch, dass das mit 1Hz Tiefpass gefilterte Signal trotzdem extrem 
rauscht (und ich habe oben gezeigt wie niedrig mein Rauschen ist).

von Joachim B. (jar)


Lesenswert?

Gerald M. schrieb:
> Nur für mich, von welchem Überschwinger redest du?

vom ersten Beitrag.

Gerald M. schrieb:
> Der D-Anteil ist das einzige was was das Überschwingen bremsen kann.

na denn weist du besser bescheid als ich, bei mir ist das 40 Jahre her 
und ich kann nicht helfen!

von Gerald M. (gerald_m17)


Lesenswert?

Joachim B. schrieb:
> vom ersten Beitrag.

Dort gibt es keinen Überschwinger. Das ist die Antwort des Systems. Es 
wird aufgeheizt, dann kühlt es wieder langsam ab. Ich habe nur einen 
Impuls rein gesteckt, und das kam heraus. Keine Regelung oder ähnliches. 
Einfach nur um das Verhalten des Systems zu sehen. Deshalb gibt es auch 
kein "zu viel Energie reingesteckt", weil ich keine Zieltemperatur 
hatte.

Joachim B. schrieb:
> na denn weist du besser bescheid als ich, bei mir ist das 40 Jahre her
> und ich kann nicht helfen!

Hier weiß ich leider nicht ob das ernst gemeint ist. Die Beiträge des 
P-Teils und des D-Teils sind in meinem letzten Post ersichtlich. Der 
D-Teil wird eben negativer, je schneller ich mich an den Zielwert 
annähere. Und das ist das einzige was mich vom Überheizen abhält, da ja 
die Wärme lange brauch bis sie beim Fühler ist.

von Maxe (Gast)


Lesenswert?

Gerald M. schrieb:

> Gerne würde ich nach einem Modell regeln, wobei ich auch andere Methoden
> ausprobieren würde.

Das Problem ist ja die verzoegerte Messung. D.h. es ist ein Zeitglied in 
deiner Rueckkopplung. (In deinem Sprachraum heisst das Feedback).
Also einfach ein zusaetzliches PT-Glied in der Rueckfuehrung 
modellieren und den Zustandsregler entsprechend berechnen.

von Walter T. (nicolas)


Lesenswert?

Woher sollen eigentlich die PT2 kommen? Wärmeleitung hat keinen 
"Geschwindigkeitsanteil", kann also nur PT1 sein. PT2 wird das System 
erst mit dem Regler zusammen.

Und ich stimme Maxe zu: Für die Modellierung ist es wahrscheinlich 
sinnvoller, den PT1-Teil im Feedback-Zweig zu modellieren.

von Joachim B. (jar)


Lesenswert?

Joachim B. schrieb:
> und ich kann nicht helfen!

Gerald M. schrieb:
> Hier weiß ich leider nicht ob das ernst gemeint ist.

ist ernstgemeint, der Überschwinger kann nur vom D-Teil oder vom P-Teil 
mit zu großer Verstärkung kommen, ich denke so sehr hat sich die 
Regelungstechnik in den letzten Jahren nicht geändert!
Das mit der Zeit wurde auch erklärt!

Maxe schrieb:
> Das Problem ist ja die verzoegerte Messung. D.h. es ist ein Zeitglied in
> deiner Rueckkopplung. (In deinem Sprachraum heisst das Feedback).
> Also einfach ein zusaetzliches PT-Glied in der Rueckfuehrung
> modellieren und den Zustandsregler entsprechend berechnen.

PT-Gieder hatte ich vergessen, stimmt!

von Noname (Gast)


Lesenswert?

Sieht wie eine I-Strecke mit Totzeit aus. Die Zeitkonstante PT1 für die 
Temperaturmessung sollte ausreichend klein sein oder im Modell 
berücksichtigt werden. Es gibt Regler, die die Totzeit berücksichtigen. 
Google mal unter Smith Predictor. Hier wird's dann aber richtig 
interessant.
Dein Problem ist, dass der Regler in die Zukunft sehen müsste. Es ist 
eigentlich noch gar nichts da, auf das der D-Anteil reagieren könnte. 
Blöd ist auch, dass die Regelstrecke fürs Aufheizen und Abkühlen 
unterschiedlich ist. Beim Aufheizen wirkt 
Heizung-Wärmewiderstand1-Aluklotzkapazität. Beim Abkühlen wirkt 
Alukotzkapazität-WärmeübergangswiderstandzuLuft nach 
Umgebungstemperatur. Ist so ähnlich wie bei dem früheren Windowsspiel 
Moon Lander.

von Gerald M. (gerald_m17)


Lesenswert?

Maxe schrieb:
> Das Problem ist ja die verzoegerte Messung. D.h. es ist ein Zeitglied in
> deiner Rueckkopplung. (In deinem Sprachraum heisst das Feedback).
> Also einfach ein zusaetzliches PT-Glied in der Rueckfuehrung
> modellieren und den Zustandsregler entsprechend berechnen.

Kannst du das vielleicht näher erläutern? In meinem ersten Post ist ein 
Bild der Strecke. Als Sensor habe ich einen PT100 Anschraubfühler. Ich 
denke nicht dass ich eine so starke Verzögerung durch den Sensor habe. 
Dort gibt es auch übrigens noch keine Rückkopplung. Deshalb kann ich mit 
deiner Aussage ersteinmal nichts anfangen.

Noname schrieb:
> Sieht wie eine I-Strecke mit Totzeit aus.

In erster Näherung sieht das so aus und kann auch so modelliert werden. 
Allerdings hat man dann keine runden Verkäufe wie bei mir, sondern es 
würde mit einer Ecke nach oben gehen. Das tut es aber nicht.

Noname schrieb:
> Es gibt Regler, die die Totzeit berücksichtigen. Google mal unter Smith
> Predictor.

Den kenne ich, der passt aber leider nicht, da es keine Konstante 
Totzeit ist, sondern wie man im ersten Post sieht ist die Zeit abhängig 
vom Eingang, eben genau wie bei einem Pt2 Glied.
Ich vermute auch dass es in Wirklichkeit eine Art Pt2 Glied ist, wobei 
eine Zeitkonstante von Wärmeleitung Heizung an Alublock kommt, und die 
zweite von Alublock an Luft. Die Abweichung zum idealen Pt2 Glied kommt 
vermutlich daher, dass ich kein "eindimensionales" Objekt habe, sonder 
eben drei Dimensionen, so dass dass durch die Geometrie Abweichungen 
kommen.

von Maxe (Gast)


Lesenswert?

Gerald M. schrieb:
> Maxe schrieb:
>> Das Problem ist ja die verzoegerte Messung. D.h. es ist ein Zeitglied in
>> deiner Rueckkopplung. (In deinem Sprachraum heisst das Feedback).
>> Also einfach ein zusaetzliches PT-Glied in der Rueckfuehrung
>> modellieren und den Zustandsregler entsprechend berechnen.
>
> Kannst du das vielleicht näher erläutern? In meinem ersten Post ist ein
> Bild der Strecke. Als Sensor habe ich einen PT100 Anschraubfühler. Ich
> denke nicht dass ich eine so starke Verzögerung durch den Sensor habe.

Ja, du hast Recht. Da du ja auch nichts anderes misst, als das was auf 
dem Temperaturfühler erscheint, ist das nicht auf der Rückführung zu 
berücksichtigen. D.h. selbst wenn der Sensor verzögert misst, ist das 
Teil deiner Strecke und nicht Teil der Rückführung. Ich nehm meine 
Aussage daher zurück :-)

In deinem Bild mein ich eine Totzeit von etwa 10s zu erkennen. 
Vielleicht passt dein PT2-Verhalten, wenn du die Totzeit noch 
berücksichtigst. Das vereinfacht die Reglerauslegung aber natürlich 
nicht.

Am Besten wäre es aber wohl, die Strecke richtig zu modellieren (Ich hab 
jetzt keinen Nerv dazu). Die Temperatur hat mit der Wärmekapazität zu 
tun, das wäre der integratorische Anteil (Delta-T = Wärmekapazität * 
Wärmezufuhr), aber dazu kommt noch dass der Wärmeverlust mit der 
Temperatur steigt. Das bildet dann die Asymptote. Und dann spielen noch 
Abstände bei endlich schneller Wärmeübertragung mit rein, also 
Zeitverhalten inkl. Totzeit.

von Noname (Gast)


Lesenswert?

Gerald M. schrieb:
> Insgesamt dachte ich schon daran, eine Erstansteuerung über die Energie
> zu machen.
> Wie man im ersten Post sieht, sind bei allen Stufen die Endtemperatur
> ziemlich gleich. Das liegt daran dass die Fläche der Impulse (Zeit *
> Energie) gleich sind.
> Wenn ich dann nahe an der Zieltemperatur bin, kann ich auf einen
> P-Regler.

Einen Versuch wäre es wert:

Algorithmus:
Loop:
- Warten bis Temperatur nicht mehr steigt
- Energie berechnen um 80% der Temperaturdifferenz auszugleichen
- Energie auf Strecke geben
Goto Loop

Nach jedem Energieimpuls sieht man dann auch ob die Schätzung korrekt 
war und kann zur Not die Schätzung für nachfolgende Energieimpulse 
korrigieren.

von Gerald M. (gerald_m17)


Angehängte Dateien:

Lesenswert?

Maxe schrieb:
> In deinem Bild mein ich eine Totzeit von etwa 10s zu erkennen.
> Vielleicht passt dein PT2-Verhalten, wenn du die Totzeit noch
> berücksichtigst. Das vereinfacht die Reglerauslegung aber natürlich
> nicht.

Sobald man eine Totzeit mit einfittet, passt die Kurve gar nicht mehr. 
Denn diese "Totzeit" tritt nur zu Beginn auf. Hinten raus passt ja 
alles.

Maxe schrieb:
> Am Besten wäre es aber wohl, die Strecke richtig zu modellieren (Ich hab
> jetzt keinen Nerv dazu). Die Temperatur hat mit der Wärmekapazität zu
> tun, das wäre der integratorische Anteil (Delta-T = Wärmekapazität *
> Wärmezufuhr), aber dazu kommt noch dass der Wärmeverlust mit der
> Temperatur steigt. Das bildet dann die Asymptote. Und dann spielen noch
> Abstände bei endlich schneller Wärmeübertragung mit rein, also
> Zeitverhalten inkl. Totzeit.

Auch das habe ich gemacht. Ich habe ein elektrisches Ersatzbild 
entworfen (ist angehängt) und simuliert. Das hat optisch gut gepasst. 
Dann habe ich die Übertragungsfunktion per Hand ausgerechnet. Es war ein 
Pt2-Glied :)
Was ich dabei gedacht habe: Der Kondensator ist der Integrator, und 
hiervon fließt nur Strom weg, abhängig zur Spannungsdifferenz zwischen 
dem Kondensator und dem zweiten Kondensator, welcher für den Alublock 
steht. Der zweite Kondensator wird über einen großen WIderstand 
entladen, was für die Abkühlung an die Umgebung steht.

Noname schrieb:
> Algorithmus:
> Loop:
> - Warten bis Temperatur nicht mehr steigt
> - Energie berechnen um 80% der Temperaturdifferenz auszugleichen
> - Energie auf Strecke geben
> Goto Loop

Das ist dann ein P-Regler mit Pause :D
Aber ja, das habe ich mir auch schon überlegt, finde es aber nicht so 
hübsch (aber steht noch auf de Liste, wie gesagt ist zwischen den 
Messungen immer eine lange Pause).

Außerdem habe ich noch das Problem mit der model predictive control 
angehängt.

von Noname (Gast)


Angehängte Dateien:

Lesenswert?

Das Ergebnis der model predictive control sieht wirklich nicht so gut 
aus. Müsste ich selbst mal programmieren um das zu durchdringen.
Das System würde ich eher so wie im Anhang modellieren. Der PT100 hat 
eine ganz schön große Zeitkonstante, da der Wärmeübergangswiderstand zum 
Platinwiderstand recht groß ist und die thermische Masse des Gehäuses 
auch erst mal erwärmt werden muss.
Die Sprungantwort lässt sich leicht messen, wenn der Anschraubfühler an 
ein dünnes Blech geschraubt wird und dann ein Sprung mit Eiswasser oder 
kochendem Wasser draufgegeben wird.

von Gerald M. (gerald_m17)


Angehängte Dateien:

Lesenswert?

Ja, das kommt wohl drauf an ob das zweite Pt1 Glied vom Thermometer oder 
von der Anbindung der Heizung an den Alublock kommt.

ABER:
Ich rechne jetzt in der Zukunft mit einem Delay. Das angehängte Bild war 
der erste Versuch. Ist gerade am Abkühlen, nächste Messung mit etwas 
größerem Delay und mit mehr erlaubter Heizleistung (hatte ich auf 15% 
limitiert, da das Teil ordentlich hochheizt wenn man einen Fehler 
macht).

Edit: Die Raumtemperatur welche du modelliert hast, ziehe ich einfach 
immer vom Messwert ab und am Ende wieder drauf.

Edit2: Ich habe auch noch Thermoelemente welche ich an die gleiche 
Stelle halten kann. Die sind deutlich schneller. Dann sehe ich ob es am 
Sensor liegt.

: Bearbeitet durch User
Beitrag #6755487 wurde vom Autor gelöscht.
von Gerald M. (gerald_m17)


Angehängte Dateien:

Lesenswert?

Drop the mic

von Noname (Gast)


Lesenswert?

Ja, genau so!

Gerald M. schrieb:
> Ich rechne jetzt in der Zukunft mit einem Delay.

Würd mich jetzt schon genauer interessieren wie du den Regler 
programmiert hast. Arbeitest du immer noch mit einer Abtastrate von 
100Hz bzw. alle 10ms ein neuer Stellwert? Als Faustformel liest man oft, 
dass die Abtastzeit etwa 1/10 der Zeitkonstante der Strecke sein soll. 
Bei 40s wäre das dann alle 4s. Alle 1s wäre sicher auch noch ok. In 1s 
würde sich dann auch ein stabilerer D-Anteil ausbilden.
Jetzt aber zurück zu deinem Algorithmus. Die gelbe Kurve ist eine 
Schätzung des zu erreichenden Temperaturdeltas die aus der Stellgröße 
berechnet wird. Wenn die geschätzte Temperatur mit dem Sollwert 
übereinstimmt gibst du 0 aus. Ist das soweit richtig? Gibt es noch eine 
Rückführung der Regelgröße zur Korrektur der Schätzung? Woraus ergibt 
sich die grüne Kurve und wird sie zur Regelung benötigt?
Und ganz am Rande: Wie wird die Stellgröße generiert (PWM oder 
Schaltnetzteil oder ...)? Hat der Alublock auch eine Funktion oder dient 
er nur als Regelstrecke?

So, genug gelöchert. Freue mich schon auf deinen nächsten Post.

von Gerald M. (gerald_m17)


Lesenswert?

Also, der Grundtakt sind immer noch 10ms.
Diesen Grundtakt teile ich allerdings auf in einmal aktuelle States 
berechnen inkl. Ausgabe des berechneten Wertes, und 99 Mal zukünftige 
States berechnen.
Ich aktualisiere also alle States und auch das Ausgangssignal jede 
Sekunde.
Das Ausgangssignal sagt, wie viele Halbwellen der Netzfrequenz pro 
Sekunde durchgelassen werden (also 0 - 100).

Die gelbe Kurve ist die zukünftige Temperatur wenn ich aufhöre zu 
heizen. Deshalb steigt sie am Anfang mehr oder weniger linear an, und 
wenn die 90°C erreicht sind, geht die Heizung aus. Der zukünftige Wert 
steigt dann nicht mehr weiter an (wurde ja auch extra berechnet, wo man 
ankommt wenn die Heizung aus ist). In grün sieht man einfach nur in 
wieviel Sekunden dieser Wert erreicht wird. Den habe ich mir nur so 
ausgeben lassen. Aber auch hier sieht man, dass wenn die 90°C erreicht 
sind, die Zeit (in grün) linear nach unten läuft.
Die Rückführung besteht darin, dass ich ja jede Sekunde meine echten 
States neu berechne (anhand der gemessenen Temperatur), und auf dieser 
Basis wieder in die Zukunft rechne. Also jeder gelbe Punkt ist die 
höchste Temperatur innerhalb der nächsten 198 Sekunden. (Ich berechne 
also jede Sekunde einmal die zukünftigen 198 Sekunden, und merke mir den 
höchsten Wert)
Ich habe noch eine kleine Hilfe eingebaut, indem ich bei großer 
Differenz zwischen zukünftiger und aktueller Temperatur die heizung 
nicht erst bei 90°C Zukunfttemperatur ausschalte, sondern bei (90°C + 
(90°C - T_now)*0.08 ). So verhindere ich das Überheizen, da ja sobald 
der Wert etwas unterberechnet wird (durch Rauschen), die Heizung sofort 
anspringt. Je näher ich aber dem Zielwert komme, desto weniger macht der 
Term aus. Deshalb hört die Heizung etwas früher auf als bei 90°C und 
spring dann aber nochmal an, da ja quasi die Zieltemperatur virtuell 
erhöht wird.
Der Aluklotz ist übrigens ein Thermoblock aus einer Kaffeemaschine.

von Noname (Gast)


Lesenswert?

Danke für die ausführliche Erklärung! Eine super Regelung um 
Überschwinger zu vermeiden und möglichst schnell den Sollwert zu 
erreichen. Bin schon auf das Störverhalten gespannt, wenn durch den 
Block das Wasser fließt und nachgeregelt wird.
Ich bin sicher dass du das auch in den Griff bekommst ;-)

von Sebastian R. (sebastian_r569)


Lesenswert?

Hachja, Siebträger mit PID ausstatten steht mir auch noch bevor.

Daher bedanke ich mich auch als reiner Mitleser bei allen Tippgebern!

von Gerald M. (gerald_m17)


Lesenswert?

Dann nimm das Ito, davon höre ich am meisten positives :)

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]
  • [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.

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