Forum: Digitale Signalverarbeitung / DSP / Machine Learning Streckencharakteristik bei PID-Regler berücksichtigen?


You were forwarded to this site from EmbDev.net. Back to EmbDev.net
von Gerhard A. (Gast)


Lesenswert?

Hallo!

ich möchte den Mischer an meiner Heizungsanlage gerne selbst regeln. Der 
Mischermotor kann über ein PWM-Signal stufenlos von 0-100% gesteuert 
werden.

Ein einfacher PID-Regler funktioniert soweit, Nachteil ist die 
Verzögerung der Temperaturänderung zwischen Regler und 
Vorlauftemperatursensor. Das macht sich insbesondere beim Ausregeln von 
Sprüngen durch ein Nachschwingen bemerkbar, die Regelgeschwindigkeit ist 
doch recht träge.

Der Mischer selbst hat grob betrachtet eine lineare Kennlinie, darüber 
könnte ich mittels (Vorlauf_Soll - Rücklauf_Ist) / (Vorlauf_Kessel - 
Rücklauf_Ist) den erforderlichen Öffnungsgrad berechnen. Da ich die 
genaue Kennlinie allerdings nicht kenne, bleibt hier auch eine 
Abweichung.

Wie könnte ich beide Verfahren kombinieren, also aus der Kennlinie den 
ungefähren Öffnungsgrad bestimmen und den Rest per PID?

Danke & Gruß
Gerhard

Beitrag #7334315 wurde von einem Moderator gelöscht.
von Kai D. (robokai)


Lesenswert?

Niemand schrieb im Beitrag #7334315:
> Du bist dir bewusst dass Heizunfgsmischer nicht für dauernachstellen
> gebaut sind?

Was heisst denn hier konket "Dauernachstellen"?

von Gerhard A. (Gast)


Lesenswert?

P-, I- und D-Anteil sind schon mehrfach iterativ optimiert, trotzdem 
überzeugt die Reglerperformance nicht, ohne dass das System schwingt. 
Die Totzeit ist einfach zu hoch (Rohranlegefühler) und die Strecke 
Mischer bis Sensor eher PT2 als PT1.

Der Mischermotor ist mit 50% ED angegeben, davon bin ich noch weit 
entfernt. Der Regler hat aktuell eine Zykluszeit von 5s.

Beitrag #7334385 wurde von einem Moderator gelöscht.
von Andreas R. (rebirama)


Lesenswert?

Das was du suchst nennt sich Vorsteuerung. Die kann man parallel zum 
Regler auf die stellgröße geben.

von Gerhard A. (Gast)


Lesenswert?

> Das was du suchst nennt sich Vorsteuerung. Die kann man parallel
> zum Regler auf die stellgröße geben.

Danke, das habe ich gesucht! :-)

von Thomas-jhfd (Gast)


Lesenswert?

Gerhard A. schrieb:
> Danke, das habe ich gesucht! :-)
Dann kannst du ja auch mal nach Smith-Predictor suchen.
Lässt sich auch kombinieren.

Niemand schrieb im Beitrag #7334385:
> Nicht der Motor, die Dichtungsringe vom Schieber sind heikel.
Guter Punkt.
Also Regler nach Stellgröße optimieren, z.B. dass sie auf einem Sprung 
mit einer e-Kurve reagiert anstatt zu schwingen.
Spart Energie und erhöht die Lebensdauer.
In der Regelungstechnikvorlesung oft vernachlässigt, ist in der Praxis 
aber sehr relevant.

von Noname (Gast)


Lesenswert?

Wenn du eine Aufzeichnung der Sprungantwort rein stellen könntest, ließe 
sich das Ganze mal simulieren.

von Da Baby (Gast)


Lesenswert?

Versuchs doch mal mit KI. Vielleicht kommt ja was gutes bei rum^^
Zeichne mal die Sprungantwort auf. Dann kann man schon mal ein 
näherungsweises Modell aufstellen und rumsimulieren

von Gerhard A. (Gast)


Lesenswert?

> Also Regler nach Stellgröße optimieren, z.B. dass sie auf einem Sprung
> mit einer e-Kurve reagiert anstatt zu schwingen.

Genau, das ist das Ziel. Eine schnelle, asymptodische Annäherung an den 
Zielwert mit einer Regelabweichung von +/-2K ist völlig i.O. und mir 
auch lieber als dass der Mischer überschwingt und sich einpendelt.

Muss mal schauen wie ich da eine saubere Sprungantwort aufzeichnen kann, 
da ja der Zulauf zum Mischer nicht konstant ist sondern der 
Kesseltemperatur folgt. Erklärt aber warum es eher nach PT2 aussieht: 
Kessel PT1, Rohrstrecke PT1.

Die Frage, die ich mir stelle: Muss ich überhaupt regeln oder ließe sich 
das auch nur steuern, wenn die Regressionsfunktion Mischerposition zu 
Zulauf, Vorlauf-Soll und Rücklauf-Ist ermittle?

Eine reine Steuerung über Mischerposition = (Vorlauf_Soll - 
Rücklauf_Ist) / (Vorlauf_Kessel - Rücklauf_Ist) ergibt ein schwingendes 
Gesamtsystem.

von Wolfgang (Gast)


Lesenswert?

Gerhard A. schrieb:
> Erklärt aber warum es eher nach PT2 aussieht:
> Kessel PT1, Rohrstrecke PT1.

Die Rohrstrecke ist kein PT1, sondern primär eine Verzögerung. Die 
Sprungantwort sieht völlig anders aus. Allenfalls bekommst du über das 
Strömungsprofil und die thermische Masse des Rohres einen parallelen 
PT1-Anteil.

von Noname (Gast)


Lesenswert?

Eine sich optimierende Steuerung würde vielleicht auch reichen.
Ich kenne deinen Aufbau nicht, denke aber dass der Mischer zwei Eingänge 
hat. Der eine Eingang bekommt das Wasser vom Kesselausgang mit TKessel 
und der andere das Wasser vom Rücklauf, das nicht durch den Kessel geht, 
mit TRücklauf. Das Rücklaufwasser wird vor dem Kessel aufgeteilt. Ein 
Teil geht direkt an den Mischer und der andere durch den Kessel. Die 
Aufteilung wird als konstant angenommen. Das Wasser, das aus dem Mischer 
kommt hat die Temperatur TMischer. Sie ist jetzt nur abhängig von 
TKessel und TRücklauf und von dem konstanten 
Rücklaufaufteilungsverhältnis. Die Stellung des Mischers kann mit diesen 
Werten berechnet werden. Wenn sich im Betrieb eingeschwungene Zustände 
zeigen wird TMischer, TKessel, TRücklauf und die Mischerstellung in 
einer Tabelle abgelegt. Aus den aufgezeichneten Werten können dann 
Korrekturwerte ermittelt werden. Problematisch sind die Anlegefühler. 
Sie sollten möglichst eine gleiche Trägheit aufweisen oder die Trägheit 
eines jeden Sensors (mit Rohr) muss ermittelt werden und kann dann 
rechnerisch kompensiert werden.

von Gerhard A. (Gast)


Lesenswert?

> Die Rohrstrecke ist kein PT1, sondern primär eine Verzögerung. Die
> Sprungantwort sieht völlig anders aus. Allenfalls bekommst du über das
> Strömungsprofil und die thermische Masse des Rohres einen parallelen
> PT1-Anteil.

Bei 1" Stahlrohr schwarz mit Rohranlegefühler dominiert aber doch der 
PT1-Anteil und ist verantwortlich für die Verzögerung. 
Strömungsgeschwindigkeit ca. 0,5m/s, Abstand Mischer-Rohranlegefühler 
ca. 20cm.
Wobei, in einer Tauchhülse paar cm weiter ist der Temperaturverlauf fast 
identisch.

von Noname (Gast)


Lesenswert?

Noname schrieb:
> Die
> Aufteilung wird als konstant angenommen.

Stimmt natürlich nicht, sie ist abhängig von der Mischerstellung.

Mit der Mischerstellung xE[0...1] gilt dann:
Tout = x*Twarm + (x-1)*Tkalt

von Gerhard A. (Gast)


Lesenswert?

> Mit der Mischerstellung xE[0...1] gilt dann:
> Tout = x*Twarm + (x-1)*Tkalt

Pi*Daumen. Die Kennlinie ist nicht linear. Ist ein 4-Wege Mischer, 
Kesselvorlauf, Kesselrücklauf, Heizungsvorlauf, Heizungsrücklauf. Kessel 
ist ein Niedertemperaturöler, kein Tieftemperatur. Heizkreislauf sind 
großzügig dimensionierte Flachheizkörper. Dadurch reicht eine niedrige 
Vorlauftemperatur. Die geringe thermische Trägheit im Vergleich zu den 
alten Rippenheizkörpern erfordert natürlich eine geringere Schwankung 
wenn man keinen Wechseljahrsimulator haben will.

> Wenn sich im Betrieb eingeschwungene Zustände
> zeigen wird TMischer, TKessel, TRücklauf und die Mischerstellung in
> einer Tabelle abgelegt.

Es gibt keine eingeschwungenen Zustände, TKessel ändert sich periodisch 
(Brennerzyklen), TRücklauf ändert sich mit zeitlicher Verzögerung zu 
TMischer.

Wie kann man eigentlich einen PID-Regler im lfd. Betrieb anhand den 
Messwerten optimieren? Gibt es da ein einfaches Verfahren, das lfd. 
angewendet werden kann und das ich 30 Jahre nach der letzten 
Regelungstechnikvorlesung auch noch verstehe? :)

TKessel und TRücklauf wären doch eigentlich Störgrößen, die bekannt 
sind. Daher die Überlegung mit der Vorsteuerung. Die Vorsteuerung müsste 
sowohl die Mischerkennlinie abbilden als auch die zeitliche Verzögerung 
zu TMischer.

von Gerhard A. (Gast)


Lesenswert?

> Dann kannst du ja auch mal nach Smith-Predictor suchen.
> Lässt sich auch kombinieren.

Kurze Verständnisfrage hierzu (mit dem was ich so finden konnte und 
diesem Bild https://de.wikipedia.org/wiki/Datei:Smith_Predictor.png):
Die Mischerkennlinie wäre dann meine totzeitfreie Übertragungsfunktion. 
Diese würde dann zum Sensorwert hinzurechnen und das Ergebnis der 
Übertragungsfunktion entsprechend verzögert davon abziehen um daraus den 
Istwert für den Regler zu berechnen?

von Noname (Gast)


Lesenswert?

Bisher hat der PID-Regler ja nur TMischer, nach der er einen neuen 
Stellwert berechnet. Wenn sich jetzt auch noch TKessel laufend ändert 
kann ja sein berechneter Stellwert nicht stimmen. Hast du den Regler in 
einem Mikrocontroller programmiert oder ist es einer, bei dem nur noch 
die Parameter eingestellt werden können? Wenn du den Regler selbst 
programmiert hast, kannst du alles berücksichtigen. Dann wäre auch eine 
Zeichnung des Systems mit allen Sensoren, die man verwenden könnte 
sinnvoll.

von Gerhard A. (Gast)


Lesenswert?

Zeichnung kann ich heute Abend mal erstellen, als Sensoren stehen 
Temperaturfühler für Kesseltemperatur, Heizungsvor- und Rücklauf zur 
Verfügung. Abgastemperatur oder WW-Speicher dürften uninteressant sein. 
Mischermotor ist ein Servoantrieb mit 0-100% per PWM.

Den Regler habe ich in einem uC (ESP32) implementiert, also vollen 
Zugriff auf Algorithmus und Parameter. Deshalb versuche ich ja 
herauszufinden, wie ich die Störgröße TKessel gut einbinden kann damit 
es der Regler einfacher hat.

von Noname (Gast)


Lesenswert?

Gerhard A. schrieb:
> Die Mischerkennlinie wäre dann meine totzeitfreie Übertragungsfunktion.

Ich denke dass der Mischer sehr schnell seine Position erreicht. Die 
Kennlinie hat dann keine Totzeit. Wenn du aber eine Sprungantwort von 
deiner Regelstrecke aufzeichneichnest und dort siehst, dass erst mal 4s 
nichts passiert und dann das System mit einer PT1-Sprungantwort 
antwortet, dann wären die 4s die Totzeit und die PT1-Antwort dein G(s). 
Dies ist nur ein Beispiel und wird bei dir nicht so sein.

ESP32 lese ich gerne. Dann kannst du ja richtig loslegen. Lässt du dir 
die Messwerte am seriellen Plotter der Arduinoumgebung anzeigen oder 
speicherst du sie auf einer SD-Karte ab?
Hast du schon mal versucht den Stellwert des Mischers zu schätzen? Dies 
wäre einen Versuch wert, da du dabei alle deine Sensorwerte mit 
einbeziehen könntest und nur dann einen Stellwert ausgeben müsstest, 
wenn TMischer zu stark von deiner Solltemperatur abweicht. Der 
Algorithmus wäre dann:

LOOP:
Sensorwerte erfassen
Schätzung überprüfen (Ist die Temperatur so stark angestiegen wie 
gedacht?)
neue Stellgröße (Mischerstellung) schätzen
Stellgröße ausgeben
x Sekunden warten
GOTO LOOP

x nicht zu klein wählen, da das System erst reagieren muss.

In der Schätzung würde ich die Mischergleichung verwenden. Je näher du 
an die Solltemperatur kommst, je kleiner müssen dann die 
Stellgrößenänderungen werden.
Das Gesamtsystem (ganze Heizungsanlage) ist ziemlich träge, so dass 
keine Sprünge zu erwarten sind und man sich langsam rantasten kann.

von Gerhard A. (Gast)


Angehängte Dateien:

Lesenswert?

> Ich denke dass der Mischer sehr schnell seine Position erreicht.

Mischerlaufzeit (0-100): 60s.

> ESP32 lese ich gerne. Dann kannst du ja richtig loslegen. Lässt du dir
> die Messwerte am seriellen Plotter der Arduinoumgebung anzeigen oder
> speicherst du sie auf einer SD-Karte ab?

Nein, alle Werte gehen über einen MQTT-Broker in eine SQL-DB. 
Reglerparameter kann ich zur Laufzeit ebenfalls per MQTT ändern. Bin zu 
faul jedesmal 2 Stockwerke in den Keller zu laufen.

> Hast du schon mal versucht den Stellwert des Mischers zu schätzen?

Ja, siehe Eingangspost: (Vorlauf_Soll - Rücklauf_Ist) / (Vorlauf_Kessel 
-
Rücklauf_Ist). Da sich die Rücklauftemperatur mit ein wenig Verzögerung 
ebenfalls ändert sorgt eine reine Steuerung über diese Formel für ein 
schönes Schwingen. Durch die Einbeziehung der Rücklauftemperatur ist das 
ja automatisch eine Closed Loop die halt auch Schwingen kann.

Aber über den Smith-Prädikator sollte es möglich sein, die 
Temperaturänderung am Sensor vorherzusagen und damit den PID-Regler zu 
optimieren.

> Das Gesamtsystem (ganze Heizungsanlage) ist ziemlich träge, so dass
> keine Sprünge zu erwarten sind und man sich langsam rantasten kann.

Eben nicht. Der Kessel ist mit seinen 18-20kW deutlich überdimensioniert 
zur Gebäudeheizlast. Demzufolge steigt die Kesseltemperatur in max. 5min 
von 20° auf 60°. In der Nähe der Heizkörper merkt man einen 
Temperaturhub von 5K deutlich.

von Manfred (Gast)


Lesenswert?

Gerhard A. schrieb:
>> Das Gesamtsystem (ganze Heizungsanlage) ist ziemlich träge, so dass
>> keine Sprünge zu erwarten sind und man sich langsam rantasten kann.
> Eben nicht. Der Kessel ist mit seinen 18-20kW deutlich überdimensioniert
> zur Gebäudeheizlast. Demzufolge steigt die Kesseltemperatur in max. 5min
> von 20° auf 60°.

Na und? Den Vierwegemischer auf eine konstante Ausgangstemperatur zu 
regeln, ist ziemlich trivial, dafür braucht es keine mathematischen 
Berechnungen. Wenn die mal für einige zehn Sekunden überschwingt, 
interessiert das nicht.

Bei mir sitzt ein Anlegefühler am Eingang der Heizkreisverteilers, der 
Mischer fährt alle paar Sekunden hin oder her. Das ist eine serienmäßige 
Regelung von Klöckner, die das gut kann.

Das Problem ist, die Höhe der Vorlauftemperatur zu bestimmen, weil die 
Fußbodenheizung extrem träge reagiert. Wenn die zu hoch wird, kannst Du 
die nächsten 24h Fenster aufmachen, bei zu niedrig ist es erst am 
nächsten Tag wieder mollig warm.

von Gerhard A. (Gast)


Lesenswert?

> Das ist eine serienmäßige Regelung von Klöckner, die das gut kann.

Freut mich für dich, wenn die das kann. Konnte die alte 
Viessmann-Regelung auch. Bis sie abgefackelt ist.

> Na und? Den Vierwegemischer auf eine konstante Ausgangstemperatur zu
> regeln, ist ziemlich trivial, dafür braucht es keine mathematischen
> Berechnungen.

Dann lass' mal hören. Ich scheitere leider am popeligen Parameterisieren 
des PID-Reglers.

> Das Problem ist, die Höhe der Vorlauftemperatur zu bestimmen, weil die
> Fußbodenheizung extrem träge reagiert. Wenn die zu hoch wird, kannst Du
> die nächsten 24h Fenster aufmachen, bei zu niedrig ist es erst am
> nächsten Tag wieder mollig warm.

Habe zwar nur Heizkörper (mit deaktivierter ERR) konnte aber mit 
bisschen linearer Regression und den Messdaten eine sehr gut passende 
Heizkurve bestimmen.

von Noname (Gast)


Lesenswert?

Gerhard A. schrieb:
> Wie könnte ich beide Verfahren kombinieren, also aus der Kennlinie den
> ungefähren Öffnungsgrad bestimmen und den Rest per PID?

Stellgröße= Offset + delta
Der Ausgang des Reglers ist delta.
Wenn die Stellgröße zwischen 0,3 und 1 ist könnte man Offset auf 0,65 
legen.
Wenn man Offset ändert, muss Kp, Ki und Kd wieder neu bestimmt werden.

Mit einer Störgrößenaufschaltung kann man den Einfluss der Änderung von 
Twarm berücksichtigen. Die Änderung wird dann vom Regler sofort 
berücksichtigt.
error= Tsoll - TMischerout - Kw*Twarm

Gerhard A. schrieb:
> Ja, siehe Eingangspost: (Vorlauf_Soll - Rücklauf_Ist) / (Vorlauf_Kessel
> -
> Rücklauf_Ist).

Man muss sich dem Sollwert annähern, daher nur ca. 90% vom berechneten 
Wert nehmen und beim abkühlen 110% vom berechneten Wert. Wenn man nah am 
Sollwert ist nur noch in kleinen Schritten die Stellgröße in die 
richtige Richtung ändern (wirkt sich wie ein I-Anteil beim Regler aus). 
Bevor wieder eine neue Stellgröße ausgegeben wird muss die Änderung im 
letzten Intervall bewertet werden und für die Schätzung herangezogen 
werden.

Gerhard A. schrieb:
> Nein, alle Werte gehen über einen MQTT-Broker in eine SQL-D

Super, kannst du eine Grafik mit
-Solltemperatur
-Mischerausgangstemperatur
-Kesseltemperatur
-Rücklauftemperatur
-Mischerstellung
posten? In der wird man dann eher sehen was schief läuft und wo die 
Grenzen des Systems sind.
Bei den Reglersignalen ist mir aufgefallen dass out nicht die Summe aus 
P- I- und D-Anteil ist. Der I-Anteil scheint sehr dominant zu sein. Also 
fast ein reiner I-Regler.

von Gerhard A. (Gast)


Angehängte Dateien:

Lesenswert?

> Mit einer Störgrößenaufschaltung kann man den Einfluss der Änderung von
> Twarm berücksichtigen.

Ja, ich glaube da habe ich beim Reglerentwurf absolut gepennt :-D

Der I-Anteil ist deshalb dominant, da nur so der Regler halbwegs stabil 
wurde. Größere P-Anteile und es schwingt. Ist ja auch logisch, durch die 
schwankende Kesseltemperatur machen 5% mehr Öffnungsgrad mal mehr und 
mal weniger aus.

Anbei eine neue Grafik, Result = Mischeröffnung. Grüne Kurve wäre die 
theoretische Ausgangstemperatur am Mischer nach der Formel x*a+(1-x)*b 
und linearem Zusammenhang zwischen Öffnungsgrad durch Durchfluss. Die 
Mischerkennlinie entspricht aber eher y=-2,1x³+3,1x²-0,01x-0,02.

Daten sind schon paar Tage älter, da war es kalt genug die Ölheizung 
wieder anzuschmeißen. Lasse die zum Test dann immer gegen den 
Warmwasserspeicher als Loaddummy laufen, daher die höheren Temperaturen.

Habe nun also Soll-Mischeröffnung + Totzeit (Mischerlaufzeit?) + Strecke 
(PT1) und könnte damit Pi*Daumen den Wert am Sensor vorhersagen und auf 
die Differenz zum tatsächlichen Messwert nachregeln.

von Regelfix (Gast)


Lesenswert?

Du solltest! deine Zahlenwerte in y Richtung besser anpassen!!

Mit solchen Diagrammen kann ja niemand etwas anfangen!

von Noname (Gast)


Lesenswert?

Wenn die Boilertemperatur steigt, sieht man, dass der Mischer viel zu 
lange offen bleibt. Dies liegt am I-Anteil. Auch hier ist der Einfluss 
von P-Anteil und D-Anteil des Reglers wieder nicht in Result zu sehen. 
Entweder stimmt deine Reglergleichung nicht oder es liegt an der 
Skalierung.
Wenn es wieder kälter wird solltest du mal nur einen P-Regler nehmen und 
den so einstellen, dass er noch nicht schwingt und folgende Werte 
posten:

Noname schrieb:
> -Solltemperatur
> -Mischerausgangstemperatur
> -Kesseltemperatur
> -Rücklauftemperatur
> -Mischerstellung

Mit dem I-Regler wird das so nichts.
Welche Temperatursensoren verwendest du eigentlich und wie oft werden 
die abgefragt?

von svensson (Gast)


Lesenswert?

D-Anteil schon mal weglassen, das ist kein hochdynamisches System.

von svensson (Gast)


Lesenswert?

Das Grundproblem ist, daß die Regelung keine statische Auslegung hat, 
weil T-Vorlauf (Kesselwasser kühlt ab), T-Rücklauf (Heizlast) und 
Durchflußmenge (Heizlast, geregelte Pumpe) sich ändern können. 
Vermutlich ist auch die Reaktionszeit des Systems von der Durchflußmenge 
abhängig.

Beim P-Anteil eine "Ausschlagsbegrenzung" einbauen, damit kein starkes 
Übersteuern stattfinden kann.
Starte mal mit Kd=0 und Ki=0,2 x Kp.

Vom Gefühl her müßte die Regelung eigentlich besser als 1K arbeiten 
können.

von Gerhard A. (Gast)


Lesenswert?

> Wenn die Boilertemperatur steigt, sieht man, dass der Mischer viel zu
> lange offen bleibt. Dies liegt am I-Anteil. Auch hier ist der Einfluss
> von P-Anteil und D-Anteil des Reglers wieder nicht in Result zu sehen.
> Entweder stimmt deine Reglergleichung nicht oder es liegt an der
> Skalierung.

Ja, I dominiert, da ein reiner P-Regler bereits ab kp > 2 zu schwingen 
beginnt. Regler wurde eingestellt in dem zunächst kp erhöht wurde, bis 
es schwingt, dann kp etwas zurück, dann ki bis er wieder schwingt, dann 
kd.

> Mit dem I-Regler wird das so nichts.

Ja, daher werde ich das ganze in Richtung modellbasierte Steuerung o.ä. 
umbauen bei der ggf. nur noch der Fehler zwischen Modell und Realität 
ausgeregelt wird. Tkessel hat ja einen signifikanten Einfluss auf die 
Strecke, warum also nicht berücksichtigen?

> Welche Temperatursensoren verwendest du eigentlich und wie oft werden
> die abgefragt?

DS18B20, Abfragezyklus 5s mit Moving Median Filter über 6 Werte.

von Noname (Gast)


Lesenswert?

Gerhard A. schrieb:
> Der Regler hat aktuell eine Zykluszeit von 5s.
Gerhard A. schrieb:
> DS18B20, Abfragezyklus 5s mit Moving Median Filter über 6 Werte.

Kannst du die DS18B20 auch jede Sekunde abfragen und über 5 Werte 
mitteln?
Die Sensoren sind so schon recht träge und werden durch die Mittelung 
noch träger. Sind die Sensoren im TO92-Gehäuse? Wie hast du sie am Rohr 
befestigt um einen kleinen thermischen Übergangswiderstand zu erzielen?
Der Mischer braucht schon lange um auf den Stellwert zu kommen und dann 
noch Temperaturmessungen die ewig hinterher hängen. Das muss ja 
schwingen.

Gerhard A. schrieb:
> Ja, daher werde ich das ganze in Richtung modellbasierte Steuerung o.ä.
> umbauen bei der ggf. nur noch der Fehler zwischen Modell und Realität
> ausgeregelt wird. Tkessel hat ja einen signifikanten Einfluss auf die
> Strecke, warum also nicht berücksichtigen?

Du musst erst mal deine Regelstrecke kennenlernen. Vieles kann man aus 
dem Versuch mit dem reinen P-Regler, der gerade noch nicht schwingt, aus 
der Aufzeichnung raus lesen. Wenn die Strecke bekannt ist, ist der 
passende Regler schnell programmiert. Mach aber erst deine 
Temperaturmessung schneller.

svensson schrieb:
> Vom Gefühl her müßte die Regelung eigentlich besser als 1K arbeiten
> können.

Vielleicht nicht 1K, aber doch viel viel besser als jetzt.

von Gerhard A. (Gast)


Lesenswert?

> Das Grundproblem ist, daß die Regelung keine statische Auslegung hat,
> weil T-Vorlauf (Kesselwasser kühlt ab), T-Rücklauf (Heizlast) und
> Durchflußmenge (Heizlast, geregelte Pumpe) sich ändern können.
> Vermutlich ist auch die Reaktionszeit des Systems von der Durchflußmenge
> abhängig

Jup, wobei die Reaktionszeit Mischer - Vorlaufsensor weniger von der 
Durchflußmenge abhängt als die Reaktionszeit Vorlaufsensor - 
Rücklaufsensor.

> Beim P-Anteil eine "Ausschlagsbegrenzung" einbauen, damit kein starkes
> Übersteuern stattfinden kann.

Bei niedriger Differenz zwischen Kessel und Vorlaufsoll brauche ich mehr 
Mischeröffnung als bei hoher Differenz. Aber ich kann Vorlauf 
einigermaßen Vorhersagen, da ich die Größen Kesseltemperatur, 
Rücklauftemperatur und Mischerkennlinie kenne. Das könnte ich natürlich 
auch als Anschlagsbegrenzung nehmen.

Ziel ist ja nicht die hochgenaue Ausregelung der Vorlauftemperatur, da 
sind +/- 1K egal, Ziel ist vielmehr das Ganze mit wenig Mischerbewegung 
zu erreichen.

Werde das Ganze mal in Richtung modellbasiert umbauen.

> Der Mischer braucht schon lange um auf den Stellwert zu kommen und dann
> noch Temperaturmessungen die ewig hinterher hängen.

Der Messwert entspricht dem Kontrollwert eines Thermoelements geringer 
Trägheit. Die Trägheit kommt also vom Rohr, nicht von der Anbindung der 
Sensoren oder deren Filterung.

von svensson (Gast)


Lesenswert?

> Abfragezyklus 5s mit Moving Median Filter über 6 Werte.

Das sind dann ja 30 Sekunden. Nimm' mal den direkten Wert und vermindere 
Kp und Ki auf jeweils 1/5.

> Bei niedriger Differenz zwischen Kessel und Vorlaufsoll brauche ich mehr
Mischeröffnung als bei hoher Differenz.

Dann ermittle Kp mal für die maximale Spreizung Kesseltemp - 
Rücklauftemp.

Dann hat Kp den unteren "Grenzwert" für die Öffnung. Die restliche 
Annäherung muß dann über Ki erfolgen.

> Ziel ist ja nicht die hochgenaue Ausregelung der Vorlauftemperatur, da
> sind +/- 1K egal, Ziel ist vielmehr das Ganze mit wenig Mischerbewegung
> zu erreichen.

Dann baue eine "Hysterese" ein. Z.B. wenn Meßwert = Sollwert +/- 2K, 
dann ändere nichts an der Mischerstellung. So verhindert man, daß sich 
Miniabweichungen aufsummieren. Das geht zwar zu Lasten der Genauigkeit, 
dürfte aber der Lebenserwartung der Mischer zuträglich sein.

> Vielleicht nicht 1K

Sag' das nicht: Ich habe Kühlwasseregler, die ähnlich aufgebaut sind, 
die halten die Temperatur auf +/- 0,3K konstant ohne viel Heckmeck.

von svensson (Gast)


Lesenswert?

Läuft eigentlich die Umwälzpumpe, wenn der Kessel feuert?

Wenn die Heizungssteuerung die Pumpe abschaltet (das kommt wohl relativ 
häufig vor), dann muß das auch irgendwie an Deine Mischerregelung 
weitergemeldet werden, weil sonst der Mischer über- oder untersteuert.

Gleiches gilt evtl. für die Warmwasserbereitung.

von Gerhard A. (Gast)


Lesenswert?

> Das sind dann ja 30 Sekunden.

Nein, max. 15s. Der spuckt alle 5s den Median der letzten 6 Messungen 
aus. Selbst bei starker Temperaturänderung ist der Temperaturverzug 
durch den Filter im Nachkommabereich. Dämpft dafür gut das Zappeln der 
DS18B20.

> Dann ermittle Kp mal für die maximale Spreizung Kesseltemp -
> Rücklauftemp.
> Dann hat Kp den unteren "Grenzwert" für die Öffnung. Die restliche
> Annäherung muß dann über Ki erfolgen.

So entstanden ja die aktuellen Reglerwerte.

> Dann baue eine "Hysterese" ein. Z.B. wenn Meßwert = Sollwert +/- 2K,
> dann ändere nichts an der Mischerstellung. So verhindert man, daß sich
> Miniabweichungen aufsummieren. Das geht zwar zu Lasten der Genauigkeit,
> dürfte aber der Lebenserwartung der Mischer zuträglich sein.

Ebenso bereits implementiert wie eine Mindeststellwertänderung bevor 
überhaupt ein anderer Stellwert ausgeben wird.

> Sag' das nicht: Ich habe Kühlwasseregler, die ähnlich aufgebaut sind,
> die halten die Temperatur auf +/- 0,3K konstant ohne viel Heckmeck.

Schwankt dort dort auch was so wie die Kesseltemperatur?

> Läuft eigentlich die Umwälzpumpe, wenn der Kessel feuert?

Ja, die läuft bei Heiz- oder Warmwasserbetrieb ständig. Volumenstrom ist 
sichergestellt.

> Wenn die Heizungssteuerung die Pumpe abschaltet (das kommt wohl relativ
> häufig vor), dann muß das auch irgendwie an Deine Mischerregelung
> weitergemeldet werden, weil sonst der Mischer über- oder untersteuert.

Die originale Heizungssteuerung gibt es nicht mehr, die hat ihr Leben 
mit dem Magic Smoke beendet. Aber der Fall, dass ohne laufende Pumpe der 
Mischer nicht regelt, ist berücksichtigt. Genauso wenn unterhalb der 
Kesselsockeltemperatur der Mischer zwecks Kondensationsschutz zufährt, 
dann wird der I-Anteil eingefroren.

von svensson (Gast)


Lesenswert?

> Schwankt dort dort auch was so wie die Kesseltemperatur?

Ja, die Sole ist auch nicht konstant. Allerdings sind die Wärmetauscher 
überdimensioniert.

Wie groß ist denn die Hysterese bei dem Kessel?

Die untere Einschalttemperatur des Kessels ist hoffentlich größer als 
die Solltemperatur?

Wenn ich mir die Grafik ansehe, dann hast Du einen Fehler von ca. -7K 
bis 7K, das sind 15K!

Mir scheint der P-Anteil eher etwas zu niedrig und der I-Anteil ist viel 
zu groß. I macht ja fast das gesamte Resultat aus - das ist ja ein 
reiner I-Regler...
Baue zudem mal untere und obere Grenzen für Sum(I) ein, denn I liegt ja 
teilweise 10fach über dem P.
Und schmeiß das dämliche D raus, das macht nur Ärger.

> Genauso wenn unterhalb der Kesselsockeltemperatur der Mischer zwecks
> Kondensationsschutz zufährt, dann wird der I-Anteil eingefroren.

Was heißt das? Die Umwälzpumpe pumpt das Wasser nur durch den Kessel?

Besser den I-Anteil = 0 setzen. Dieser Fall sollte aber im normalen 
Betrieb eigentlich nicht auftreten.

von Alf (Gast)


Lesenswert?

svensson schrieb:
> Baue zudem mal untere und obere Grenzen für Sum(I) ein, denn I liegt ja
> teilweise 10fach über dem P.

Das ist gefährlich. Mit solchen nichtlinearen Behelfskorrekturen hat 
sich schon so mancher die Regelung zerschossen. Das sollte bei korrekter 
Dimensionierung nicht nötig sein.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.