Eine Übersicht über Status, Warnungen und Ausfälle lasse ich mir gesondert in einer Tabelle anzeigen, die die Unregelmäßigkeiten der letzten Tage aufdeckt. So fällt mir beispielsweise die häufige Warnung auf, dass die Spreizung, also der Temperaturunterschied zwischen Vor- und Rücklauf, zu hoch ist. Tatsächlich kehrt das Heizungswasser um 7 bis 8 Grad kälter aus dem Estrich zurück, als es der Vorlauf hineingeschickt hat. Wünschenwert sind 4 bis 5 Grad Spreizung, was die Vorlauftemperatur und damit den Heizaufwand senkt. Ich plane mit einer stärkeren Umwälzpumpe Abhilfe zu schaffen.
|
Listing 4: Schleife positioniert |
|---|
01 $arrItems = array(
02 array( 'name' => 'Kompressor', 'mask_do_buffer' => 0x02, 'mask_di_buffer' => 0x01,
03 'icon_on' => 'ico_kompr_on.png', 'icon_fail' => 'ico_kompr_fail.png',
04 'right' => '347', 'top' => '355'),
05
[...]
06 array( 'name' => 'Pumpe Wärmequelle', 'mask_do_buffer' => 0x80, 'mask_di_buffer' => 0x08,
07 'icon_on' => 'ico_pumpewq_on.png', 'icon_fail' => 'ico_pumpewq_fail.png',
08 'right' => '740', 'top' => '278'),
09
[...]
10 array( 'name' => 'Pumpe Heizung', 'mask_do_buffer' => 0x20, 'mask_di_buffer' => 0x00,
11 'icon_on' => 'ico_pumpehzg_on.png', 'icon_fail' => 'ico_pumpehzg_fail.png',
12 'right' => '240', 'top' => '433'),
13
[...]
14 );
15
[...]
16
17 foreach ($arrItems as $currItem)
18 {
19 $currIcon = (bindec($arrQ['DO_buffer']) & $currItem['mask_do_buffer'])?$currItem['icon_on']:'spacer.png';
20 if (bindec($arrQ['DI_buffer']) & $currItem['mask_di_buffer']) $currIcon = $currItem['icon_fail'];
21
22 echo "<div style='position:absolute; right:".$currItem['right']."px; top:".$currItem['top']."px;'>n" .
23 "t<img src='img/".$currIcon."' alt='' width='50' height='40' title='".$currItem['name']."'>n" .
24 "</div>n";
25 }
|
Die Kurve kriegen
Die Anzeige der Heizkurve ist das wichtigste Instrument zum Konfigurieren der Anlage. Aus den aktuell gesetzten Parametern zeichnet das Skript den linearen Verlauf der Rücklauf-Solltemperatur über den gesamten Außentemperaturbereich. Ein Beispiel: Der Screenshot in Abbildung 1 stammt vom 27. Februar 2010, 23 Uhr, als die Außentemperatur 4,2 Grad Celsius betrug. Gemeinsam mit den anderen Heizeinstellungen folgt daraus eine Mindesttemperatur des Rücklaufs von 24,8 Grad – es ergibt sich kein Heizbedarf, da die Temperatur des Rücklaufwassers gerade 26,4 Grad warm war.
Im Laufe der nächsten Stunden fällt das dunkelblaue Kügelchen kontinuierlich ab. Beim Erreichen der Mindesttemperatur erwärmt die Anlage das Heizungswasser bis zum Wert der zartrosa Linie (Hysterese) und der Vorgang beginnt von Neuem: Bei den Außentemperaturen Ende Februar heizte die Anlage alle zweieinhalb Stunden ungefähr 40 Minuten lang, Abbildung 5 zeigt den Verlauf über 14 Stunden.
Die blaue Heizkurve in Abbildung 1 wartet darauf, über das Frontend neu positioniert zu werden. Ich darf die kippen und verschieben, bis die Heizeinstellungen zu den Außentemperaturbereichen passen. Ein Klick auf das Icon »Werte in die Wärmepumpe übernehmen« trägt die neuen Parameter in die Jobtabelle ein. Der Perl-Daemon hat daraufhin wieder Arbeit.

Abbildung 1: Die Heizkurve beschreibt den Zusammenhang zwischen Außentemperatur und Heizaufwand. In der Praxis beeinflussen sich die Werte heftig.
Blick ins Zeitfenster
Fünf Liniendiagramme veranschaulichen die Verläufe: Temperatur Heizung/Warmwasser, Temperatur Erdsonde ein/aus, Temperatur Vorlauf/Kondensator, Temperatur Wärmequelle aus/Kondensator sowie Wirkungsgrad. Um Code zu sparen, verwende ich das globale Array »$arrLineValues«, das die Eigenschaften jedes Linienwerts über die ganze Anwendung hinweg global definiert. Dazu gehören die Auswahlliste des Select-Statements, die Farbe der Linie und ob diese zu zeichnen ist, wenn die Anlage gerade nicht läuft. Beim Anzeigen der Außentemperatur scheint dies sinnvoll, bei der Vorlauf-Rücklauf-Spreizung dagegen nicht.
Das Array »$arrGraphs« definiert, welche Einträge aus »$arrLineValues« in jedem der fünf oben genannten Liniendiagramme zum Tragen kommen. Über den im Query-String als Parameter enthaltenen Index adressiert, generiert das Skript aus Listing 5 die Diagramme. Diese Vorgangsweise erlaubt es, die Liste jederzeit zu modifizieren oder zu ergänzen. Feinschmecker mit Hang zu individueller Sicht erhalten zudem die Möglichkeit, sich ein Diagramm aus wählbaren Attributen zusammenzustellen.
Die Abbildung 5 zeigt das Diagramm Heizung/Warmwasser. Im Vergleich zur Heizkurve, die zeitlich gesehen einen Schnappschuss darstellt, veranschaulicht das Liniendiagramm über einen längeren Zeitraum die zur Außentemperatur (türkise Linie) korrelierende Rücklauf-Soll-Temperatur (hellblaue Linie). Wird es draußen kälter, steigt die Linie des Sollwerts. Sinkt daraufhin die Temperatur des Istwerts (Rücklauf-Ist, dunkelblaue Linie) unter den Sollwert, beginnt der Heizbetrieb. Die Pumpe leitet warmes Wasser als Vorlauf in den Heizkreislauf und hebt so den Rücklauf bis zum Erreichen des Hysteresewerts an. Die orange Linie zeigt die Vorlauftemperatur an.

Abbildung 5: Im Schnitt heizt die Anlage alle 2,5 Stunden für 40 Minuten, um vier Uhr morgens bereitet sie Warmwasser.
Das Verfahren bei der Warmwasserbereitung ist einfacher strukturiert: Sinkt die Temperatur des Speichers unter einen Sollwert, dann heizt die Anlage ihn auf. Das ist deutlich erkennbar an der roten Linie und den entsprechend hohen Vor- und Rücklauftemperaturen zwischen 04:00 und 04:45 Uhr.





