Reaktion der FHT80b verbessern

Script Gummi-Steuerung

Ich benutze derzeit zwei FHT80b im Probebetrieb und habe festgestellt, das die (nicht zu beeinflussende) Steuerung der FHT80b einige Verhaltensweisen hat, die inbesondere bei dem von mir gesteuerten Haus sehr nachteilig auffallen.
Ich muß vorrausschicken, daß dieses Haus (besser als KW 40, schlechter als Passivhaus) einerseits sehr „träge“ reagiert, andererseits leicht überheizt wird, sobald zusätzliche Wärmequellen auftauchen.

Einerseits träge - bei Aussen-Temperaturen um 0 Grad und einer 10-stündigen Nachtabsenkung fällt die Innen-Temperatur um nur 2-3° ab. Auch fahre ich die Heizung in einem so niedrigen Temperaturbereich (damit das Brennwertgerät optimalen Ertrag bringen kann), daß der Aufheizprozess mehrer Stunden dauert.

Andererseits reichen ein großer LCD-Fernseher und ein Deckenfluter (zusammen ca. 500 Watt) schon aus, die Temperatur deutlich ansteigen zu lassen.

Die FHT steuert die Ventile normalerweise so, daß sie einerseits lange vor Erreichen der Solltemperatur die Ventile abregelt (verlängert den Aufheizprozess), andererseits auch bei Überschreiten der Solltemperatur um mehr als 1° immer noch weiterheizt. Das führt dann bei Auftauchen weiterer Wärmequellen (wie Sonne, Deckenfluter, Fernseher oder auch Duschen) zu einem Überschießen um mehrere Grad bei gleichzeitigem Weiterheizen.

Folge: Fenster auf und die schöne Wärme rausgeworfen!

Ich habe nun ein Script geschrieben, das diese Aspect der FHT verbessern soll. Es läuft bei derzeit im Probebetrieb und ich will an vergleichbaren Tagen Kurven aufzeichnen und das Script optimieren.

[ul]
[li]Der PC merkt sich die ZIEL-Temperatur, errechnet die notwendige Übersteuerung und setzt die Target der FHT. Target (Soll) von FHT wird genutz also genutzt, um zu übersteuern.
[/li][li]Dadurch wird bei Annäherung an die Ziel-Temperatur länger voll geheizt
[/li][li]Weiterhin wird bei Überschreiten der Zieltemperatur früher das Nachheizen runtergefahren
[/li][li]Das Script merkt, wenn die FHT-Steuerung eingreift, z.B. Nachtabsenkung beginnt oder manuelle Wunschtemperatur gesetzt wird. Es übernimmt diesen Wert als neue ZIEL-Temperatur
[/li][li]Ein Faktor kann diesen Effekt verstärken oder mildern (wird einmalig im Script eingestellt)
[/li][li]Es wird alle 5 min neu gerechnet aber nur eingegriffen bzw. nachgeregelt, wenn es nötig ist.
[/li]
[li]ggf. werde ich noch nachrüsten, daß bei Erreichen der Zieltemperatur das Heizen völlig eingestellt wird und erst wieder beginnt, wenn die Temperatur fällt.
[/li][/ul]

Wie ist Euere Meinung dazu?

ps wie kann ich das script hier hochladen?

Wenn Du einen Post verfasst kannst Du im Kasten Zusätzliche Einstellungen unter Dateien anhängen auf Anhänge verwalten klicken ;).

Ja, aber da gibt´s kein PHP-Dateiformat.

„Erlaubte Dateierweiterungen: doc gif jpe jpeg jpg mov pdf png psd rar txt xls xml zip“

Soll ich einfacht html oder txt nehmen? Bei den anderen sehe ich aber über einem solchen Anhang PHP.

Oh, :stuck_out_tongue: gerade sehe ich oben rechts im Editor ein kleines Blattsymbol, auf dem kaum lesbar PHP steht!!!

Es klappt !!

hier ist also mein Script „Ziel-Gummi“


// Wohnen Ziel-Gummi

$PCfaktor = 2 ;  // Anpassung, wie stark das Gummi ziehen soll

$FHTsoll_txt = GetValue(17764);
$FHTsoll_txt = str_replace(",", ".", $FHTsoll_txt);    
$FHTsoll_val = floatval($FHTsoll_txt);

$FHTist_txt = GetValue(18371);
$FHTist_txt = str_replace(",", ".", $FHTist_txt);     
$FHTist_val = floatval($FHTist_txt);

// merken
SetValue(31608,$FHTist_val);

$PCsoll        = GetValue(10855);
$PClastdiff    = GetValue(44706);
$PCendziel 	= GetValue(13084);

// prüfen, ob Veränderung von Aussen

if ($FHTsoll_val+$PClastdiff == $PCsoll) 	{echo "#(1) FHT hat nix gemerkt, nochmal"; $PCsoll = $FHTsoll_val;}
elseif	($FHTsoll_val <> $PCsoll)		  {echo "#(2) Wert von aussen"; echo $FHTsoll_val; $PCendziel = $FHTsoll_val;}
elseif   ($FHTsoll_val == $PCsoll)		   {echo "#(3) OK gemerkt";}
else                                         {echo "#(4) ??? Was ist das";}   // sollte es nicht geben

$PCdiff = intval(($PCendziel - $FHTist_val)* 2 * $PCfaktor)/2;
$PCsoll = $PCendziel + $PCdiff;

SetValue(10855,$PCsoll);
SetValue(44706,$PCdiff);
SetValue(13084,$PCendziel);

if ($PCsoll <> $FHTsoll_val) {FHT_SetTemperature(12846, $PCsoll); echo " : übertragen";}
else {echo " : nicht übertragen";}

Prinzipiell eine gute Idee!

So etwas ähnliches hatte ich auch mal vorgesehen…

Man stößt jedoch jenseits von 4-5 Reglern langsam an die Grenzen der Funkbandbreite und muss aufpassen, dass man die FHZ-Queue nicht überlädt.

Noch eine schicke Schleife (for each oder ähnliches) drum, damit man nicht für jeden Regler eine extra Script braucht und testen.

Interessieren würde mich auch die grafische Darstellung des Temp-Verlaufes.
… kannst Du ja als zip anhängen…

Grüße
Fabian

hi,

ich werde deinen script bei mir auch mal checken. vor allem finde ich schön, dass du berücksichtigst, dass manchmal werte nicht ankommen bei dem fht80b.
…heute nacht erst wieder.
ich drücke immer eine taste am bett… die verriegelt die tür, macht die lichter aus und fährt die heizungen alle runter.
heute morgen war die heizung in der küche noch an.
das sollte ich ja mit deinem script abfangen können und die temperatur erneut setzen lassen bis sie übertragen wurde.

vllt. ist es ja auch möglich, dass die macher von ip-symcon das im modul/instanz der fht80b gleich mit einbauen… so dass die sollwerte wenn sie nicht als targettemp ankommen automatisch neu gesetzt werden. das würde so eine ständig laufende skriptlösung in dem hinblick unnötig machen.

@prof Fabian

Zeichne ich gerade auf, will auch jeweils den Verlauf ohne und mit Steuerung aufzeichnen. Dauert etwas, dann stell ich es hier hin

Ich sollte vlt. noch einen Zähler einbauen, damit man die Warteschleife nicht überlädt, wenn die Geräte nichts annehmen …

hallo nochmal,

kannst du nochmal kurz erläutern welche IDs welchem Wert des FHTs entsprechen und welche Werte du in weitere Variablen abspeicherst.
Bin gerade etwas verwirrt was welcher Wert ist.

$FHTsoll(txt/val) ist ausgelesene „Target Temperature“
$FHTist(txt/val) ist ausgelesene „Temperature“

$PCsoll = errechneter Sollwert, der in die FHT als „Target“ geschrieben wird
$PClastdiff = die zuletzt errechnet Differenz zwischen vormaligem „Target“ und PCsoll
$PCendziel = Zielwert der Temperatur

Also wenn 22° angestrebt werden (Zielwert), nehme ich die Differenz zwischen FHTist 20° und dem Zielwert, multipliziere mit einem Faktor (hier 2,0) ergibt den überstuerungswert, plus Zielwert ergibt den vorübergeneden Sollwert der Steuerung 26°., den ich in FHTsoll schreibe (Befehl FHT_SetTemperature(12846, $PCsoll). Das führt dazu, daß die Ventile nicht nur teilweise sondern weit geöffnet werden -> Das Aufheizen geht schneller.

Je weiter ich mit dem Istwert an den Zielwert, die 22°, herankomme, desto geringer wird die Übersteuerung.

Die Differenz merke ich mir, um unterscheiden zu können, ob der nach 5 min in der FHT vorgefundene Wert im Falle des Abweichens auf Fremdeingreifen oder auf nicht ankommen zurückzuführen ist. Im ersten Fall wird das der neue Zielwert, im zweitenfall muss das alte Ergebnis neu gesendet werden.

Hallo Junker,

wieviel FHTs hast Du denn im Einsatz an wieviel FHZ Basisgeraeten?

Eine solche Regelung (noch etwas mehr an die Kurvengeometrie der SHK Branche angepasst) hat msr_junky mir auch gemacht, allerdings eben fuer die intelligente Regelung von 1-Wire gesteuerten thermischen Stellreglern. Dadurch ist da natuerlich das Regelverhalten wesentlich besser als bei den FHTs, die aus meiner Sicht hier viel zu traege sind.

Hallo Junker,

habe gerade gelesen, dass Du zwei FHTs derzeit im Einsatz hast. Darf ich fragen, wieviel FHTs und welche FHZ Version denn Dein Endausbau haben soll? Da sehe ich naemlich das eigentliche Problem kommen…

Hallo Torro,

Vielen Dank für Dein Interesse.

Das wird nicht so schlimm, ich steuere ein Einfamilienhaus, Wohnraum 1 FHT 4 Ventile, Bad 1 FHT 1 Ventil, Schlafzimmer (soll kühl bleiben, daher normales Thermostaventil auf kleiner Stellung, springt aufgrund der hohen Wärmedämmung nie an), ein weiterer Raum kommt in Kürze mit 1 FHT 1 Ventil hinzu, zwei weitere Räume sind derzeit ungenutz, werden bei Bedarf mit normalen Thermostatventilen betrieben, kommen aber ggf. hinzu.

Max. Gesamtausbau 5 FHT.

Bei derzeitiger 5min Abtastung ergeben sich nur ca 24 gesendete Befehle in 24h je FHT. Werde das Programm aber noch weiter optimieren und hoffe mit der Hälfte der Befehle auskommen. So werde ich die Zeit der Nachtabsenkung völlig ungesteuert lassen …

anbei ein Temperaturverlauf. Zur Erläuterung: Nachtabsenkung in der FHT 19:00 bis 5:00, Zwischenabsenkung zum Testen bei 13:00-14:00 (heute 15:00), der Sprung bei 2:00 scheint ein Fehler im Programm zu sein

tmiw37q1z_day.png

Hallo Junker,

ok, mit 5 FHTs ist das sicher auch kein Problem, aber wenn es noch mehr werden, wird es problematisch. Ich selber hatte 14 Stueck mit vielen Problemen und steuere nunmehr ausschliesslich per Kabel mittels 1-Wire.de Technik.

Hallo Torro,

das ist bestimmt nicht falsch und ich werde demnächst auch mit 1-wire an die Heizung rangehen. Leider ist das Haus fertig und nachträgliche Kabel sind ein Problem.

Hast Du Erfahrung mit dem USB-Anschluss von 1-wire? läßt der sich z.B. irgendwo im vorhandenen Netzwerk anbinden, z.B. hinter einem WLAN-Repeater oder brauche ich dann an der Heizung zwingend einen eigenen PC?

Hallo,

jetzt driften wir abe rvom FHT Thema ab…

schau mal hier, da kommt ein 1-wire LAN Modul in Kuerze. Ich denke, das waere die bessere Variante.

Weitere Fragen dazu aber bitte im 1-Wire Bereich…

ok. habs drin.

muss jetzt mal beobachten was so passiert.
arbeite momentan mit multiplikator 5.

habe endziel auf 19 gestellt.
der thermostat ging dann erstmal runter.
steht momentan auf 13,5 obwohl schon die raumtemperatur auf 18,3 gefallen ist.
sollte er nicht jetzt auf 19 zurükgehen?

Sind die 18,3 der Wert, den der FHT gemessen hat oder von einem anderen Thermom. Da kann esleicht differenzenngeben.

Das soll passieren: sinkt die aktuelle temp unter den Zielwert, sollte der Sollwert um das fünffache der Differenz über den Zielwert steigen. (faktor 5 ist viel zu gross, da ja mit zweimal Faktor gerechnet wird).

Ich überprüfe nochmal das script, da ich schon weiter bin … nee so ist das script bei mir gelaufen.

hi, ich glaub es funktioniert mittlerweile ganz gut.
ich hab den multiplikator auf 2 gesetzt. werde mich jetzt mal ranmachen das für alle meine anderen räume einzusetzen.