Einfaches Wärmebedarfsrelais

Mit der HomeMatic und einer geeigneten Heizung kann optimal die Heizungsanlage gesteuert werden, indem die Ventilantriebe bzw. Thermostatköpfe sie bei Bedarf aktivieren

8391 Zeichen
Score aktualisiert
100%
Code: 708cebb9567c409da216358279df79f6
Token in Entwicklung nicht aktualisiert
img-Tag in Entwicklung deaktiviert

Für das alte FS20-System gibt es einen speziellen Aktor als Wärmebedarfsrelais. Das Teil wertet die Stellantriebe aus und schaltet die Umwälzpumpe ein, sobald ein Wert überschritten ist. Mit der HomeMatic und der CCU braucht man das eigentlich nicht, da reicht ein normaler Aktor.

Arbeiten an elektrischen Anlagen dürfen nur von Elektrofachkräften durchgeführt werden. Netzspannung ist kein Spielzeug! Bei fehlerhafter Ausführung drohen Sach- und Personenschäden durch Brand oder elektrischen Schlag!

Beauftragen Sie einen Elektriker oder Heizungsbauer mit Arbeiten an der Installation, wenn Sie selbst keine Fachkraft sind.

Variablen in HomeMatic-Scripten

Die CCU hatte früher ein Limit von maximal 200 Variablen, das mit Firmware-Version 2.29.18 aufgehoben wurde. Dieses Limit bezog sich auf alle Variablen, die in allen Scripten verwendet werden. Gemeint sind Variablen, die direkt im Script definiert werden: object x; object y; var z;

Wenn Scripte nicht mehr funktionieren und bei der Prüfung unerklärliche Syntax-Fehler auftreten, sollte versuchsweise dieses Programm wieder gelöscht oder deaktiviert werden – oder, noch besser, auf die aktuelle Firmware-Version aktualisiert werden.

Ansteuerung der Heizung

Es ist nicht immer sinnvoll, die Umwälzpumpe direkt anzusteuern. Oft bietet die Heizung einen Schalteingang, über den sie komplett geschaltet werden kann. Ein guter Kandidat ist zum Beispiel der Schalteingang für einen mechanischen Raumthermostat: Wenn man da einen Aktor anschließt, schaltet er die Anlage genau so, wie vom Hersteller vorgesehen. Wenn man dagegen nur die Umwälzpumpe schaltet, springt die Heizung unter Umständen immer wieder kurz an, weil sie gar nicht weiß, dass keine Wärme gebraucht wird.

Als Aktor bietet sich der HM-LC-Sw1-FM an, wenn das zu schaltende Element dauernd unter Strom steht und ein 230V-Eingang geschaltet werden soll. Beispiel mechanischer Raumthermostat: Da gehen normalerweise Neutralleiter und Phase ins Wohnzimmer, dort hängt ein Klotz mit Relais, der bei passender Temperatur die Phase auf eine dritte Leitung schaltet. Statt Raumthermostat kommt der Aktor dran, fertig.

Wenn andere Spannungen geschaltet werden sollen oder die zu schaltende Leitung nicht dauerhaft unter Strom ist, kann z. B. der HM-LC-Sw1-SM benutzt werden, der ein potentialfreies Relais hat. Beispiel: Der Aktor ist dauerhaft an 230V angeschlossen. Die Zuleitung zur Umwälzpumpe wird aufgetrennt und durch den Aktor geleitet: Wenn er geschaltet wird, kann die Heizung die Umwälzpumpe ganz normal einschalten. Wenn nicht, bleibt die Pumpe aus.

Programmlogik

Die Logik, wann die Pumpe laufen soll, steckt bei diesem Wärmebedarfsrelais in der CCU. Bewährt hat sich eine Steuerung anhand der Stellantriebe: Wenn der Antrieb offen ist, wird offenbar Wärme benötigt, also schaltet die Heizung ein. Sind die Antriebe zu, braucht auch die Heizung nichts zu tun.

Das Script macht im Detail folgendes:

Programm in der WebUI:

Es werden alle Stellantriebe im Programm aufgenommen, das Programm wird bei allen Stellantrieben bei „Ventilstellung >= 0 bei Aktualisierung“ ausgeführt. Das bedeutet effektiv: Immer, wenn ein Stellantrieb seine neue Stellung meldet, wird das folgende Script ausgeführt.

Wichtig ist auch, dass die Antriebe in der WebUI alle zusammen im allerersten „Wenn … “-Block des WebUI-Programms stehen – sonst findet das Script sie später nicht.

Das Script sollte auch mit den neuen Heizkörperthermostaten funktionieren, zumindest sind die Datenpunkte laut Dokumentation angepasst. Ich habe jedoch nur die alten Ventilantriebe und kann es daher nicht testen.

Um das folgende Script einzufügen, bitte komplett markieren, in der WebUI auf den den Button „Script“ klicken und den gesamten Text einfügen. An den angegebenen Stellen muss das Script an den eigenen Bedarf angepasst werden.

! HomeMatic-Script
! EINFACHES WäRMEBEDARFSRELAIS
! http://www.christian-luetgens.de/homematic/programmierung/klima/waermebedarf/Waermebedarf.htm

! BEZEICHNUNG DES AKTORS MUSS AN DIESER STELLE ANGEPASST WERDEN
object d_heizung = dom.GetObject("Heizungsrelais");

! Stellantriebe aus dem WebUI-Programm abfragen
object o_prg=dom.GetObject("$this$");
integer i_count=0;
integer i_summe=0;
object o_dp_err;
object o_chn;
object o_dp = dom.GetObject(o_prg.Rule().RuleCondition(0).CndSingleCondition(i_count).LeftVal());

while (o_dp) {
   o_chn = dom.GetObject(o_dp.Channel());
   o_dp_err=o_chn.DPByHssDP ("ERROR");
   if (!o_dp_err) { 
     o_dp_err=o_chn.DPByHssDP ("FAULT_REPORTING");
   }
   if (o_dp_err) {
     if (o_dp_err.Value() == 0) {
       i_summe = i_summe + o_dp.Value();
     }
   } else {
     i_summe = i_summe + o_dp.Value();
   }
   i_count = i_count + 1;
   o_dp = dom.GetObject(o_prg.Rule().RuleCondition(0).CndSingleCondition(i_count).LeftVal());
}

! Heizung bei Bedarf schalten
object d_heizung_state = d_heizung.DPByHssDP ("STATE");
time t_timestamp = d_heizung_state.Timestamp();
time t_now = system.Date("%Y-%m-%d %H:%M:%S").ToTime();
integer i_diff = t_now.ToInteger() - t_timestamp.ToInteger();

! VENTILÖFFNUNG, BEI DER DER AKTOR ABSCHALTET, MUSS AN DIESER STELLE 
! ANGEPASST WERDEN
if ((i_summe <= 20) && (d_heizung_state.Value())) {
   d_heizung_state.State (false);
}

! VENTILÖFFNUNG, BEI DER DER AKTOR EINSCHALTET, MUSS AN DIESER STELLE
! ANGEPASST WERDEN; ZEIT KANN EBENFALLS GEÄNDERT WERDEN (600 SEKUNDEN =
! 10 MINUTEN)
if ((i_summe >= 30) && (i_diff > 600) && (!d_heizung_state.Value())) {
   d_heizung_state.State (true);
}

!  Ende des Scripts

Programmablauf

Zunächst wird Gerät „Heizungsrelais“ gesucht. Das ist ein einfacher Schaltaktor, der die Heizung schaltet. Die Bezeichnung muss an dieser Stelle ggf. angepasst werden, wenn das Gerät anders heißt. Anschließend geht das Script alle Stellantriebe durch, die im Programm angegeben sind. Zunächst wird auf Vorliegen einer Fehlermeldung geprüft, danach – wenn alles OK ist – die Werte addiert.

Zum Schluss wird die Heizung eingeschaltet, wenn insgesamt mindestens 30 % offen sind und die Heizung seit mindestens 10 Minuten ausgeschaltet war. Sie wird wieder ausgeschaltet, wenn nur noch weniger als 20 % offen sind. Auch diese Werte können natürlich angepasst werden.

Noch ein paar Hinweise zu Dingen, die sich nicht bewährt haben:

Raumtemperatur in die Logik einbeziehen

Erscheint auf den ersten Blick verlockend, ist es aber nicht, weil die Raumthermostate immer ihre eigene Regelung dagegensetzen.

Bei „nur heizen, wenn es auch wirklich kalt im Haus ist“ passiert folgendes: Die Raumthermostate stellen den Stellantrieb ein und erwarten eine Reaktion. Kommt die nicht – weil es in Wirklichkeit noch gar nicht so kalt ist, dass man heizen müßte – drehen sie weiter auf. So schaukeln sie sich hoch, bis irgendwann der Stellantrieb voll aufgedreht ist und der Raum gnadenlos überheizt, wenn dann die Heizung wirklich anspringt.

Bei „heizen, wenn die Temperatur zu niedrig ist, auch wenn der Stellantrieb noch gar nicht als offen gemeldet wird“ passiert folgendes: Beim ersten Kälteeinbruch wird der Raumthermostat noch nicht damit rechnen, dass das Haus nicht „von selbst“ warm wird wie in den Wochen zuvor. Er wird also – trotz niedriger Temperatur  – den Antrieb nicht öffnen. Die Umwälzpumpe drückt dadurch gegen die geschlossenen Ventile – unnötiger Verschleiß und Stromverbrauch, genau das, was wir verhindern wollen.

Heizung nicht dauerhaft einschalten, sondern je nach Öffnungswinkel nur für einige Zeit laufen lassen

Theoretisch könnte man mit so einem Programm die Restwärme der Heizkörper besser ausnutzen. Praktisch – siehe oben: wenn der Raumthermostat heizen will, dann will er heizen, und wenn dann nicht genug kommt, dreht er auf. Am Ende stehen alle Antriebe beim kleinsten Wärmebedarf auf 98 %, die Batterien sind aufgrund der langen Stellwege nach zwei Wochen leer und warm wird es trotzdem nicht.

Heizen, sobald ein Stellantrieb einen bestimmten Wert erreicht hat

Geht als Provisorium, ist aber nicht optimal.

Wenn ein einzelner Stellantrieb auf 15 % steht, dann ist das Ventil noch fast zu – unnötige Quälerei für die Umwälzpumpe. Notfalls dreht der Raumthermostat den Stellantrieb irgendwann weiter auf, so dass auch wirklich was durchfließt. Andererseits: Selbst wenn 10 Stellantriebe auf 5 % stehen, würde die Heizung nicht anspringen, obwohl da schon ordentlich Wärme abgefordert wird.

Evolution: Verbessertes Wärmebedarfsrelais

Die beiden verbesserten Scripte auf den Folgeseiten basieren darauf, die Vorlauftemperatur mit in die Steuerung der Heizung einzubeziehen.

Einen anderen Weg, der vor allem mit den Heizkörperthermostaten hervorragend funktioniert und keine weiteren Sensoren braucht, habe ich in unserer Zweitwohnung beschritten.

Navigation