Nach einigem Herumexperimentieren und einer spannenden Beobachtung von sakko, habe ich jetzt dank fhem Einstellungen für meine 504 gefunden, die ich gerne mal teilen möchte. Mein Problem ist, dass im interessanten Bereich von 0-10°C Aussentemperatur die Heizlast vom Haus unterhalb der Minimalheizlast der 504 liegt. Damit kommt der PID-Regler und die An/Auslogik nicht gut klar. Ausgangspunkt war:
...
Ich habe Integralanteil-INV jetzt auf 0 und damit vermutlich 100% Steuerung durch Hysterese. Die erratischen Leistungsanstiege nach Kompressorstart sind nunmehr passé - jippieh!
Komischerweise fällt HC1-Ist nie mehr unter HC1- Soll. Womit hängt das zusammen?
...
Bei mir funktionierte diese Einstellung allerdings nicht, weder mit PropAnteil 10%/K noch etwas kleineren Werten. Und daher habe ich erstmal versucht zu verstehen, was hier passiert. Setzt man Integralanteil Inv auf 0, dann wird der Intergralregelanteil im PID ausgeschaltet und man bekommt einen PD-Regler. Das HC1-Ist nicht unter HC1-Soll fällt, wie von sakko beobachtet, liegt wohl daran, dass intern der Integralwert nicht gelöscht wird, es erfolgt einfach kein update des Integralwertes mehr. Bei meinen Experimenten habe ich daher nach dem Setzen auf 0 immer auch ein Regler-Reset ausgeführt, um diese Störgröße auf 0 zu bekommen.
Ein PD-Regler ist eigentlich keine gute Sache, da er nicht auf das Soll regeln kann, es bleibt immer eine Regelabweichung da. Aber es ist tatsächlich möglich, T_soll so einzustellen, dass das T_ist gegen das *gewünschte* T_soll konvergiert (falls die Heizlast oberhalb vom Minimum liegt), oder zumindest das Haus in langen Takten mit sehr geringer Leistung langsam aufgeheizt wird. Leider laufen damit die eingestellte und die reale Heizkurve (weit) auseinander, und man muss etwas um die Ecke denken. Meine aktuellen Überlegungen und Einstellungen sehen wie folgt aus:
Der Verdichter wird gestartet, wenn heatingRelativePower (HRP) 40% überschreitet, und ausgeschaltet, wenn der Wert 20% unterschreitet (so ganz exakt scheint das noch nicht zu stimmen, aber fast).
Ohne I-Anteil im PID Regler wird HRP errechnet aus:
HRP = HRP_0(Kennlinie mit T_aussen) + K_p*(T_soll-T_ist) + D-Anteil
Den D-Anteil ignoriere ich im weiteren. K_p ist ungefähr PropAnteil, aber nicht exakt. Mein PropAnteil steht im Moment auf 6.7%/K, während K_p=7.4%/K zu sein scheint. HRP wird von fhem ausgelesen. Damit sieht der Wert HRP_0(T_aussen), geplottet mit der Formel HRP-K_p*(T_soll-T_ist), ziemlich konstant aus, wenn man die aktuelle und nicht die gefilterte Aussentemperatur betrachtet und diese im betrachtet Zeitraum etwa konstant ist.
Einschalten erfolgt bei T_ein=(40%-HRP_0)/K_p und Ausschalten bei T_aus=(20%-HRP_0)/K_p. Die Temperaturdifferenz von T_ist bei Ein- und Ausschalten ist damit ungefähr 20%/K_p. Für mein Haus ist 2.5K akzeptabel. Einschalten bei etwa T_ist=22°C und Ausschalten bei 24.5°C (abhängig von Aussentemperatur), sonst wird es zu kalt oder zu warm. Daraus ergibt sich K_p=8%/K, was aber noch zu gross ist, da HRP real etwas zappelt und statt mit 20% Regelband mit etwas weniger gerechnet werden muss. PropAnteil=6.7 und damit K_p=7.4%/K funktioniert bei mir gut.
Um T_soll setzen zu können, müßte ich wissen, wie HRP_0 bestimmt wird. Da habe ich noch keine Idee. Meine Annahme, die nicht völlig unsinnig zu sein scheint, ist: HRP_0 = -40/37 %/K * T_aussen + konstanten Wert, wobei Auslegungstemperatur -25°C und Leistung bei Auslegung 40% eingestellt ist (37=25+12 Temperaturdifferenz von Auslegungstemperatur zu 12°C, wo die Heizlast ungefähr 0kW sein müßte). Gerade bei niedrigen Temperaturen dürfte diese Formel nicht im Ansatz stimmen, aber wann haben wir hier schonmal Minusgrade.
Wenn ich T_soll auf einen konstanten Wert setze, ergibt sich daraus in meinem Fall eine effektive Steigung der realen Heizkurve von 40/37 / K_p = 0.145. Der im Display einstellbare Gradient Grad führt zu einem Gradienten von ungefähr 14*Grad/RT (siehe heatcurve im THZ Perlmodul), d.h. die 0.145 entsprechen ungefähr Grad=0.22 und damit einem halbwegs vernünftigen Wert, den ich auch vorher ungefähr hatte. T_soll habe ich mit etwas probieren auf ungefähr 26°C eingestellt (26=RT+Fusspunkt und Gradient = 0), so dass die Anlage bei ungefähr 21.5-22.5°C einschaltet, je nach Aussentemperatur. Die Theorie und groben Abschätzungen passen auch ungefähr zu den gemessenen Werten.
Mit diesen Einstellungen komme ich mit 1-2 mehr oder weniger langen Takten über den Tag (getestet bei -1°C bis 7°C Aussentemperatur). Nach dem Einstalten bei grundsätzlich ca. 40Hz fährt der Verdichter zügig auf 30Hz und dann weiter auf ca. 25-20Hz und geht schliesslich nach 3-7 Stunden wieder aus. Die Vorlauftemperatur ist ca. 26-26.5°C. Der vom Gerät "gemessene" COP liegt bei meist Qh/Pel = 6 bis 7.
Um die Leistung noch schneller zu reduzieren, habe ich den Vorlaufanteil momentan auf 25% gesetzt, andere Einstellung (also insbesondere Parallelverschiebung der Heizkurve wie sonst notwendig) muss ich nicht anpassen. Wenn der Verdichter aus ist, dann ist ungefähr T_vor=T_rück=T_ist, und das Einschaltverhalten ändert sich nicht. Wenn der Verdichter angeht, dann springt Vorlauf um ca. 3-4K hoch, damit geht T_ist um ca. 0.25*3.5K = 0.9K hoch und HRP geht um 0.9K * 7.4%/K = 6.5% runter. Damit bin ich nach kurzer Zeit unter 30Hz und der Heiztakt wird theoretisch länger und effizienter. Auf der anderen Seite schaltet die Anlage eher ab, weil die T_ist-Abschalttemperatur eher erreicht wird. Mit 25% Vorlaufanteil hält sich dies ungefähr bei mir die Waage. Aber ich werde mit dem Wert sicher noch etwas rumspielen und die effektiven Taktlängen vergleichen.
Ingesamt ist dies eine etwas verrückte (sprich unschöne) Form der Steuerung. Sie hat aber zusätzlich noch den Charme, dass man mit wenigen Schreiboperationen (zwei pro Heiztakt) über RT die Anlage und insbesondere die dauerhaft durchlaufende Heizkreispumpe gezielt ein- und ausschalten (in den Schnüffelmodus versetzen) kann. Denn es gilt einfach HRP_Tag - HRP_Absenk = K_p*(RT_Tag - RT_Nacht). Also kann ich, wenn RT_Nacht eingestellt ist, einfach HRP_Tag aus HRP_Nacht ausrechnen, und sobald dieser über 40% kommt, setze ich RT auf RT_Tag. Aber den fhem-Code mit allen potentiellen Ausnahmeregelungen dazu muss ich erst noch schreiben...
Angehängt sind meine Plots von heute. Die Anlage ist kurz vor dem Abschalten.
Ich hoffe, dass war nicht zu lang. Vielleicht hilft es ja jemanden beim Optimieren. Oder jemand hat noch interessante Anregungen und Verbesserungen?