Ankündigung

Einklappen
Keine Ankündigung bisher.

Bedarfsgeführte Heizungsregelung mit Gira X1

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    X1 Bedarfsgeführte Heizungsregelung mit Gira X1

    Hallo allerseits,

    Da sich seit meiner ersten Beschreibung doch noch so dies und das geändert hat, mache ich die hier mal -- leichter auffindbar -- neu.

    Das Haus stammt aus den 80er Jahren und ist -- mit Ausnahme des Satteldaches -- nicht energetisch saniert. Es wird mit Fernwärme beheizt, was aber in diesem ersten Teil noch keine Rolle spielt. Realisiert ist eine bedarfsgeführte Regelung, wobei die maximal bereitgestellte Heizleistung/Vorlauftemperatur für 100% Bedarf mit einer Heizkurve bestimmt wird. Besteht seitens der Raumtemperaturregler (RTR) weniger Bedarf, dann senkt der Regler die Vorlauftemperatur unter die Heizkurven-Temperatur ab. Besteht gar kein Bedarf mehr, dann wird die Heizung komplett abgeschaltet. Da die RTR schon Zeitschaltuhren haben, ist für die Nachtabsenkung/-abschaltung keine zentrale Schaltuhr mehr nötig: Sind alle Räume auf Nachtbetrieb abgesenkt, so ist automatisch auch die Vorlauftemperatur entsprechend abgesenkt oder die Heizung sogar komplett abgeschaltet.

    In diesem Teil 1 der Beschreibung beschäftigen wir uns mit:
    • Erfassung und Aufbereitung der Außentemperatur
    • Heizkurve
    • Feststellung und Aufschaltung des tatsächlichen Heizbedarfs
    • Sommer/Winter-Umschaltung
    Das Kernstück jeder Heizungsregelung ist die Erfassung der Außentemperatur und die Berechnung der Heizkurve. Ich habe dies unter Verwendung eigener Logikbausteine wie folgt gelöst:

    Heizungsregelung1.png

    Die über 6 Stunden gemittelte Außentemperatur Tavg aus dem Baustein "Statistik für Zeitreihen" wird für die Heizkurve verwendet, die in der ersten Formel des Formelberechnungs-Bausteins steckt:
    Hlk.HeatingCurve({Tavg:N}, 18, -12, {Trmax:N}, 70, 1.33)

    Die weiteren Parameter der verwendeten Funktion sind:
    • die Heizgrenze (über 18 Grad Außentemperatur wird generell nicht geheizt)
    • die minimal zu erwartende Außentemperatur (-12 Grad), bei der die maximale Vorlauftemperatur erreicht wird
    • die maximale Raumtemperatur von 22 Grad
    • die Auslegungstemperatur (maximale Vorlauftemperatur) der Heizungsanlage von 70 Grad
    • Der Heizkörperexponent 1.33, der die Krümmung der Heizkurve (Überhöhung bei milden Außentemperaturen) bestimmt
    Die so ermittelte Vorlauftemperatur wird nur angewendet, wenn mindestens ein RTR eine Stellgröße von 100% liefert oder wenn der Komfort in den Räumen aufgrund zu großer Regelabweichungen schlecht ist. In der Praxis geschieht das nur bei der morgendlichen Wiederaufheizung, also wenn ein oder mehrere RTR nach Nachtabsenkung wieder höhere Raumtemperaturen anfordern.

    Die weiteren Formeln befassen sich anhand weiterer Eingabegrößen mit der bedarfsgeführten Reduzierung der Vorlauftemperatur bis hin zur Abschaltung der Heizung:
    • Formel 2 reduziert die Vorlauftemperatur linear entsprechend dem Bedarf des RTR mit der größten Stellgröße:
      ({Bedarf:N} / 100) * (_out1_ - {Trmax}) + {Trmax}
    • Formel 3 errechnet anhand des Komfortverlustes (im Bereich 0.0 = kein Komfortverlust .. 1.0 = erheblicher Komfortverlust) die endgültige Vorlauftemperatur, die irgendwo zwischen denen aus den ersten beiden Formeln liegt:
      ({Komfortverlust:N} * _out1_) + ((1.0 - {Komfortverlust}) * _out2_)
    • Formel 4 legt die minimale Vorlauftemperatur fest, unterhalb derer keine nennenswerte Heizleistung zu erwarten ist:
      /* Tvsmin = */ {Trmax} + 1.0
    • Formel 5 ermittelt anhand von Heizperiode ("Winterbetrieb") und finaler Vorlauftemperatur, ob die Heizung laufen soll (Ausgabewert aus Formel 3 gerundet auf 0.25 Grad) oder abgeschaltet werden soll (Ausgabewert 0.0):
      ({Heizperiode:B} && ({Bedarf} >= 5.0) && (_out3_ >= _out4_)) ? (Math.Round(_out3_ * 4.0) / 4.0) : 0.0
    • Formel 6 sorgt dafür, dass dem Heizungsregler nur dann eine neue Vorlauftemperatur vorgegeben wird, wenn die Änderung mindestens 0.5 Grad beträgt:
      (Math.Abs(_out5_ - _previousOut6_) > 0.49) ? _out5_ : _previousOut6_
    Schauen wir uns als nächstes an, wo die weiteren Eingabegrößen Komfortverlust und Heizperiode her kommen:

    Heizungsregelung2.png

    Auch hier ist wieder eine Formelberechnung zentrales Element im Logikblatt. Sie erhält folgende Eingabegrößen:
    • Soll- und Ist-Temperaturen sowie Heiz-Kühlmodus von (jederzeit erweiterbaren) 2 Räumen
    • Die erwartete Höchst-Außentemperatur der nächsten 18 Stunden (aus OpenWeatherMap-Vorhersage)
    • Die höchste in den letzten 18 Stunden benötigte Vorlauftemperatur
    Daraus berechnen die einzelnen Formeln folgendes:
    • Formel 1 ermittelt den Komfortverlust, der sich aus der Temperaturabweichung im Wohn-/Esszimmer ergibt, im Bereich 0.0 (kein Komfortverlust) .. 1.0 (erheblicher Komforverlust):
      {WEZKühlen:B} ? 0.0 : Math.Max( ({WEZSoll:N} - 0.5 - {WEZIst:N}) / 2.5, 0.0 )
    • Formel 2 tut das Gleiche fürs Bad:
      {BadKühlen:B} ? 0.0 : Math.Max( ({BadSoll:N} - 0.5 - {BadIst:N}) / 2.5, 0.0 )
    • Formel 3 gibt den höheren dieser Komfortverluste aus und begrenzt ihn auf 1.0:
      /* Max. Komfortverlust */ Math.Min( 1.0, Math.Max(_out1_, _out2_) )
    • Formel 4 schaltet auf Winterbetrieb, wenn sie true ergibt. Das geschieht, wenn der Komfortverlust in den (unbeheizten) Räumen zu hoch wird. Dabei hängt der akzeptable Komfortverlust auch von der demnächst erwarteten Außentemperatur ab. Ist sie niedrig, wird weniger Komfortverlust akzeptiert:
      _out3_ > (1.0 - (20.0 - {Tamax:N}) / 12.0)
    • Formel 5 schaltet auf Sommerbetrieb, wenn sie true ergibt. Das geschieht, wenn entweder der Heizbedarf in den letzten 18 Stunden sehr gering war oder wenn die Außentemperatur voraussichtlich demnächst über 20 Grad steigen wird:
      ( (_previousOut6_ && {Tvsmax:N} < 27.0) ) || ({Tamax:N} > 20.0)
    • Formel 6 ergibt und speichert aus den vorigen beiden die Heizperiode (true = Winterbetrieb; false = Sommerbetrieb):
      (_out4_ && !_out5_) ? (bool?)true : ( (_out5_ && !_out4_) ? (bool?)false : null )
    Diese Berechnung ist bewusst keine Sommer-/Winterumschaltung nach DIN, sondern basiert im Wesentlichen -- wie schon die Steuerung der Vorlauftemperatur -- auf dem tatsächlichen Heizbedarf in den einzelnen Räumen.

    Ein Statistikbaustein ermittelt aus den Ergebnissen der ersten beiden Formeln den Index des Raums mit dem größten Komfortverlust, sofern dieser über 0.5 liegt (ansonsten einen ungültigen Index). Diesen benötigen wir zur Steuerung der Zwangsöffnung von Heizkörper-Stellventilen (da kommen wir später dazu).

    Ein weiteres Logikblatt ermittelt
    • die größte RTR-Stellgröße als den Bedarf (zwischen 0 und 100%),
    • welcher Raum -- der so genannte Führungsraum -- diesen Bedarf bedingt (als Index)
    Beides leitet ein Statistik-Baustein aus den RTR-Stellgrößen ab:

    Heizungsregelung3.png
    Die Eingangswahlschalter+-Bausteine wählen anhand des Indexes von den Raumwerten (Soll- und Ist-Temperatur) jeweils den des Führungsraums aus.

    Die folgenden beiden Logikblätter öffnen Stellventile voll, wenn das gewünscht ist, so z. B. im Führungsraum und in dem Raum mit dem größten Komfortverlust. Dazu wandelt das folgende Logikblatt zunächst die Indizes des Führungsraums und des Raums mit dem größten Komfortverlust in Wahrheitswerte für jeden Raum um:

    Heizungsregelung5.png

    Diese werden anschließend für jeden Raum gleich weiterverarbeitet, um zu entscheiden, ob das Stellventil im Raum zwangsgeöffnet werden soll:

    Heizungsregelung4.png
    Die erste Formelberechnung (im Bild ganz unten) errechnet die Abregelgrenze. Liegt in einem Raum eine Stellgröße oberhalb dieses Werts -- also in der Nähe der Stellgröße des Führungsraums -- an, dann soll auch dort das Ventil zwangsgeöffnet werden:
    Math.Max(0.9 * {Smax:N} - 7.5, 0.01)

    wobel Smax die größte Stellgröße eines RTR in irgend einem Raum ist.

    Die beiden anderen Formelberechnungen -- eine pro Raum -- sind identisch mit folgenden Formeln parametriert:
    • Formel 1 ergibt true, wenn die Stellgröße höher als die Abregelgrenze ist. Um bei kleinen Änderungen der Stellgröße das Ventil nicht unnötig zu verfahren, bleibt der vorherige Ausgabewert innerhalb eines Korridors von 5% erhalten:
      {Stellgröße:N} > ({UntereSchwelle:N} + 5) ? true : ({Stellgröße:N} < {UntereSchwelle:N} ? false : _previousOut1_)
    • Formel 2 ergibt true, wenn Heizbedarf > 10% besteht und die Heizkreispumpe nachläuft, um Restwärme im Haus zu verteilen:
      ({Stellgröße:N} > 10) && {Nachlauf:B}
    • Formel 3 öffnet das Ventil zwangsweise, wenn eine der beiden obigen Bedingungen zutrifft, der entsprechende Raum der Führungraum ist oder erheblichen Komfortverlust hat:
      _out1_ || _out2_ || {Führungsraum:B} || {Komfortverlust:B}
    Räume mit zwangsgeöffneten Stellventilen werden nicht mehr über den Durchfluss, sondern über die (entsprechend der Stellgröße des Führungsraums abgesenkte) Vorlauftemperatur geregelt. Das Prinzip nennt man Kaskadenregler; gegenüber einer direkten Steuerung des Wärmeerzeugers mit der RTR-Stellgröße hat es den Vorteil, dass sich die Eigenschaften der Raumtemperatur-Regelstrecke beim Wechsel zwischen Führungsraum- und Normal-Betrieb weniger ändern.

    Ende Teil 1
    Zuletzt geändert von hyman; 25.12.2021, 13:39.

    #2
    Teil 2 behandelt folgende Themen:
    • Bedingter Vorrang für Warmwasserbereitung
    • Regelung der Vorlauftemperatur
    • Gleitende Begrenzung der Fernwärme-Rücklauftemperatur
    • Ansteuerung des Primär-Stellventils der Fernwärme-Übergabestation
    Um der Warmwasserbereitung Vorrang vor dem Heizbetrieb zu geben, muss zunächst festgestellt werden, welche Art(en) von Wärmebedarf gerade vorliegen. Für die Warmwasserbereitung macht das ein externer Zweipunktregler, der in einem Kanal eines Temperaturcontrollers arcus-EDS SK08-T8 realisiert ist. Für den Heizwärmebedarf und den Gesamtbedarf ist das folgende Logikblatt zuständig:

    image_119173.png

    Die Ausgänge dieses Logikblatts geben an,
    • ob überaupt Wärmbedarf besteht (um die Heizung andernfalls abzuschalten)
    • ob Heizwärmebedarf besteht (um diesen ggf. auf Vereinbarkeit mit einer gleichzeitig anliegenden Warmwasser-Anforderung prüfen zu können)
    • ob die Warmwasseraufheizung freigegeben ist (was nur zu bestimmten Uhrzeiten der Fall ist, und nur dann wenn die Heizungspumpe abgeschaltet werden kann)
    Damit lässt sich ermitteln, ob Warmwasser- und Heizbedarf gleichzeitig oder nacheinander zu erfüllen sind (bedingter Warmwasser-Vorrang). Gleichzeitig erfüllbar sind diese, wenn folgende Bedingungen erfüllt sind:
    • Die Vorlauftemperatur für die Warmwasserbereitung ist nicht zu viel höher als die gewünschte Vorlauftemperatur des Heizkreises
    • Die verfügbare Heizleistung reicht aus, um das Warmwasser zu erwärmen, obwohl der Heizkreis mit läuft
    image_119174.png
    Zwei Telegrammverzögerer ermöglichen die Erfassung, wie schnell das Warmwasser erwärmt wird. Der Rest sind die ersten fünf Formeln in der Formelberechnung. Ergibt Formel 1 oder 3 true, so ist die Aufheizung zu langsam. Ergeben Formel 2 und 4 beide true, dann ist sie schnell genug. Im Bereich dazwischen ist beides möglich; der Zustand ändert sich nicht:
    • Formel 1: ({WWist:N} - {WWist20min:N}) < 1.0
    • Formel 2: {WWBedarfVerz:B} ? (({WWist:N} - {WWist20min:N}) > 2.0) : true
    • Formel 3: ({WWist:N} - {WWist2min:N}) < -0.5
    • Formel 4: {WWBedarfVerz:B} ? (({WWist:N} - {WWist2min:N}) >= 0.1) : (!_out3_)
    • Formel 5: (_out2_ && _out4_) ? true : ((_out1_ || _out3_) ? false : _previousOut5_)
    Gibt Formel 5 true aus, dann erfolgt die Warmwasser-Erwärmung ausreichend schnell.

    Die Formeln 6 bis 9 legen fest, wie weit die Vorlauftemperatur gegenüber der normalen Regelung überhöht werden darf. Bei größerem Komfortverlust (z. B. während der morgendlichen Aufheizung nach Nachtabsenkung) ist mehr Überhöhung erlaubt:
    • Formel 6: ({Komfortverlust:N} * 3.0) + ((1.0 - {Komfortverlust}) * 1.5)
    • Formel 7: ({Tvssoll:N} - {Tvsmin:N}) * _out6_ + {Tvsmin}
    • Formel 8: {Tvsmax:N} - ( ({Tvsmax:N}-{Tvssoll:N}) / (2*_out6_) )
    • Formel 9: {Tvs:N} <= Math.Min(_out7_, _out8_)
    Gibt Formel 9 true aus, dann ist die aktuelle Vorlauftemperatur für den Heizkreis zulässig.

    Die Freigabe der Heizkreispumpe erfolgt schließlich nur, wenn beide Bedingungen dafür erfüllt sind oder gar kein Warmwasser-Ladebedarf vorhanden ist:
    • Formel 10: (_out5_ && _out9_) || !{WWBedarf:B}
    Die restlichen Formeln ermitteln Sollwerte für Warmwasser- und Vorlauftemperatur je nach Betriebszustand und setzen den Regler für die Vorlauftemperatur bei Lastsprüngen zurück:
    • Formel 11: Math.Min(({WWist}+60.0)/1.7, ({LegionellenSch:B} ? 90.0 : {Tvsmax}))
    • Formel 12: {LegionellenSch:B} ? 73.0 : 45.0
    • Formel 13: {WWBedarf} ? (Math.Max({Tvssoll}, _out11_)) : {Tvssoll}
    • Formel 14: {WWBedarf} /* speichern für Flankendetektor in nächster Formel */
    • Formel 15: (_out14_ != _previousOut14_) || ((!_out10_ && _previousOut10_) && ({Tvs} > 58.0))? (bool?)true : null
    Die Heizungs-Vorlauftemperatur aus Formel 13 regelt nicht der X1, sondern ein Kanal des Temperaturcontrollers arcus-EDS SK08-T8, der auch die Ist-Temperatur mit einem PT1000-Sensor misst. Dazu ist der entsprechende Kanal als PI-Regler mit einem Proportionalbereich von 100K und einer Nachstellzeit von 8 Minuten parametriert.

    Der Fernwärmeversorger verlangt eine primärseitige Rücklauftemperaturbegrenzung auf statisch 60 °C. Die hier vorgestellte Regelung macht das deutlich moderner: Sie realisiert eine gleitende Rücklauftemperaturbegrenzung, die mit dem folgenden Logikblatt berechnet wird:

    image_119168.png

    Die Formelberechnung ermittelt aus der Rücklauftemperatur des Heizkreises (bei Heizungsbetrieb) oder der Warmwasser-Speichertemperatur (bei Warmwasseraufladung) den Sollwert für die primärseitige Rücklauftemperaturbegrenzung. Zusätzliche Maßnahmen sind notwendig, damit die Regelung nicht längere Zeit zu macht, nachdem sich dieser Wert zu niedrigeren Werten hin verändert hat:
    • Eine minimale Ventilöffnung soll sicherstellen, dass überhaupt ein sinnvoller Wert für die Rücklauftemperatur gemessen werden kann (und die Regelung nicht darauf wartet, dass warmes stehendes Wasser in der gedämmten Leitung sich von alleine abkühlt)
    • Steigende Werte für den Sollwert werden schneller, sinkende Werte langsamer wirksam. (Das wird mit den beiden "Statistik für Zeitreihen"-Bausteinen und der nachfolgenden Bildung des Maximums erreicht.)
    Die Formeln im Einzelnen:
    • Formel 1 errechnet den Wert für Heizbetrieb:
      Math.Min({Trpmax:N}, {Trs:N} + ({Trpmax} - {Trs}) / 3.0)
    • Formel 2 modifiziert diesen ggf. für Warmwasser-Aufladung:
      {BedarfWW:B} ? MoreMath.Max({Twwist:N} + 8.0, 45.0, _out1_) : _out1_
    • Formel 3 legt die minimale Ventilöffnung für sinnvolle Messungen der Rücklauftemperatur fest:
      Math.Min(25 + ({Trpmax} - Math.Min({Trp:N}, {Trs}+2.0)), 60)
    Die Regelung auf den Temperatur-Sollwert erfolgt wieder nicht im X1, sondern im Temperaturcontroller arcus-EDS SK08-T8, der auch die Ist-Temperatur mit einem PT1000-Sensor misst. Dazu ist der entsprechende Kanal als PI-Regler mit einem Proportionalbereich von 50K und einer Nachstellzeit von 2 Minuten parametriert.

    Beide Stellgrößen des Temperaturcontrollers
    • aus dem Regler für die Vorlauftemperatur und
    • aus dem für die Rücklauftemperaturbegrenzung
    fasst das folgende Logikblatt wieder im X1 mit einer Formelberechnung zur finalen Stellgröße zusammen:

    image_119169.png
    • Formel 1: {Trpsoll:N} - {Trpist:N}
    • Formel 2: _out1_ > 20.0 ? 100 : {StellgrTrpBegr:N}
    • Formel 3: Math.Max(_out2_, {MinStellgrTrpBegr:N})
    • Formel 4: Math.Min(_out3_, {StellgrTvs:N})
    • Formel 5: {WärmeFreigabe:B} ? _out4_ : 0.0
    • Formel 6: ((_out5_ == 0.0) || (Math.Abs(_out5_ - _previousOut6_) > 0.78)) ? ((double?)_out5_) : null
    Die ersten drei Formeln sorgen für die oben schon angesprochene Minimalöffnung des Ventils und für schnelle Ausregelung großer Abweichungen der Rücklauftemperaturbegrenzung. Die vierte Formel macht die kleinere Stellgröße aus Rücklauftemperaturbegrenzung und Vorlauftemperaturregelung wirksam. Die letzten beiden Formeln geben die Stellgröße nur aus, wenn die entsprechende Freigabe vorliegt (sonst 0.0) und wenn die Änderung nicht gar zu klein ist (sonst keine Ausgabe des neuen Werts; der alte Wert bleibt wirksam).

    Die "rohe" Stellgröße im Bereich 0..100% am Ausgang dieses Logikblatts gibt an, welcher Prozentsatz der Wärmeleistung des Wärmeerzeugers abgerufen werden soll.

    Im vorliegenden Fall einer Fernwärme-Übergabestation ist das entsprechende Stellglied das primärseitige Stellventil. Direkt ansteuern lässt sich das mit der "rohen" Stellgröße allerdings nicht, weil es eine stark nichtlineare Kennlinie hat. Deshalb dient ein weiteres Logikblatt dazu, das Stellventil grob zu linearisieren. Diese Maßnahme verbessert das Regelverhalten stark:

    image_119170.png

    Im Logikblatt ist auch vorgesehen, die Kennlinie des Stellventils manuell aufnehmen zu können (Eingangswahlschalter vor dem Eingang "roh" der Formelberechnung). Nur dadurch war es mir möglich, die Kennlinie des Ventils durch vier Geradensegmente wie folgt anzunähern:
    • Formel 1: 0.9 * {roh:F} + 2.0
    • Formel 2: 0.08 * {roh:F} + 6.1
    • Formel 3: 1.22 * {roh:F} - 50.9
    • Formel 4: 7.0 * {roh:F} - 600.0
    • Formel 5: ({roh} < 5.0) ? _out1_ : (({roh} < 50.0) ? _out2_ : (({roh} < 95.0) ? _out3_ : _out4_))
    Die letzten beiden Formeln dienen der Selbstkalibrierung des Stellventils (durch Referenzfahrt) beim Übergang von großen zu kleinen Stellgrößen sowie zum Schließen des Ventils, wenn es keine Freigabe gibt:
    • Formel 6: {KalFreigabe:B} && (_out5_ <= 18.0) && (_previousOut5_ > 18.0)
    • Formel 7: ({Freigabe:B} && (!_out6_)) ? _out5_ : 0
    Die Ausgabegröße dieses Logikblatts geht auf einen Kanal einer Schalt-/Dimm-Steuereinheit 1..10V (Gira 222400; baugleich auch von anderen Herstellern verfügbar), die mittels eines nachgeschalteten Konverters den 0..10V-Stellmotor des primärseitigen Ventils ansteuert.

    Zur ebenso wichtigen Ansteuerung der Umwälzpumpen kommen wir im Teil 3.
    Zuletzt geändert von hyman; 25.12.2021, 14:11.

    Kommentar


      #3
      Teil 3 behandelt folgende Themen:
      • Pumpensteuerung
      • Aufschaltung von Sonneneinstrahlung und Wettervorhersage
      • Visualisierung
      Nachdem wir in Teil 2 dafür gesorgt haben, dass die benötigte Wärme bereitgestellt wird, geht es nun darum, sie dorthin zu transportieren, wo sie benötigt wird. Dafür sorgen zwei Umwälzpumpen:
      • Eine für den Heizkreis und
      • eine weitere für die Warmwasseraufladung
      Für die Ansteuerung dieser beiden Pumpen ist in erster Linie der Wärmebedarf für Heizung und Warmwasser entscheidend. Grundsätzlich hat dabei die Warmwasseraufladung Priorität. Nur wenn die Heizungspumpe durch den in Teil 2 beschriebenen bedingten Warmwasser-Vorrang freigegeben ist, darf sie gleichzeitig mit der Warmwasserladepumpe laufen. Die Pumpen werden beim "Kaltstart" verzögert eingeschaltet, um nicht kaltes Wasser zu pumpen. Sie werden, wenn kein anderweitiger Bedarf besteht, auch verzögert wieder ausgeschaltet, um die Restwärme aus dem Fernwärmetauscher zu nutzen, die sonst nutzlos im Technikraum verpuffen würde:

      image_119200.png

      Nach dem Ende des Pumpennachlaufs läuft oft noch weitere Restwärme im Wärmetauscher auf, wahrscheinlich durch Wärmeleitung aus dem stehenden -- aber noch warmen -- Primärwasser. Bei Bedarf wird diese durch weiteren kurzen Pumpenlauf in den Heizkreis gespeist. Dafür ist der obere Teil des nächsten Logikblatts zuständig. Der untere Teil sorgt (zusammen mit dem letzten Logikblatt aus Teil 1) für Ventilöffnung in den Räumen, in denen der Bedarf besteht:

      image_119201.png
      Die Formelberechnung "Trigger Restwärmenutzung" arbeitet mit folgender Formel:
      {Tv:N} > ({TIstFührung:N} + 5) ? (bool?)true : null
      Sie sorgt dadurch immer dann für 6 Minuten Pumpenlauf, wenn die Restwärme dafür ausreicht. Die nachfolgende Logik unterbindet dies, wenn es keinerlei Wärmebedarf gibt.

      Ein letztes Logikblatt kümmert sich um den Pumpenschutz (also dass die Pumpe auch außerhalb der Heizperiode gelegentlich läuft, damit sie nicht festgeht) und fasst alle drei Eingangsgrößen (Bedarf, Restwärmenutzung und Pumpenschutz) zur finalen Ansteuerung der Heizkreispumpe zusammen:

      image_119203.png
      Aus Gründen der Übersichtlichkeit ist auch die Steuerung der Warmwasser-Ladepumpe über dieses Blatt geführt, wird darin aber nicht mehr modifiziert sondern nur durch gereicht.

      Wenden wir uns der Aufschaltung der Sonneneinstrahlung zu. Ohne diese führen die goßen Südfenster im Wohnzimmer an sonnigen Tagen zu einer Überhöhung der Raumtemperatur um bis zu 1.5 °C, bevor der RTR ausreichend abregelt. Deshalb soll die Abregelung nicht erst stattfinden, wenn der Raum bereits wärmer geworden ist als er muss, sondern proaktiv wenn entsprechende Sonneneinstrahlung zu erwarten oder bereits vorhanden ist:
      • Der Mittelwert aus aktueller Solarstrahlung und Bedeckungsgrad von OpenWeatherMap jetzt und in zwei Stunden führt zu einem Sonnenwärmekoeffizienten, der irgendwo zwischen 0.0 (keine Sonnenwärme) und 1.0 (maximale Sonnenwärme) liegen kann.
      • Die Auswertung des Sonnenstands führt zu einer Aussage, ob direkte Sonneneinstrahlung -- vorbei an Bäumen und Nachbarhäusern -- möglich ist.
      image_119204.png

      Der so gewonnene Sonnenwärmeindex senkt direkt die Soll-Raumtemperatur des begünstigten Raums um bis zu 1.5 °C ab:

      image_119205.png

      Wenn die Sonnenvorhersage nicht stimmt und die vorhergesagte Einstrahlung ausbleibt, führt diese Logik zu einem Abfall der Raumtemperatur um max. 0.3 °C.

      Die Visualisierung der Heizzentrale sieht wie folgt aus:

      image_119206.png

      Sie besteht aus folgenden Kacheln:
      • Textkachel Außentemperaturführung: Hier wird die durchschnittliche Außentemperatur der letzten 6 Stunden, die aktuelle Außentemperatur und die erwartete Tageshöchsttemperatur angezeigt, dazu die maximale Vorlauftemperatur aus der Heizkurve und der Sensorstatus aller Sensoren der Heizungsanlage.
      • Textkachel Sekundärkreis: Zeigt an ob und seit wann Heizwärmebedarf besteht, ob die Heizkreispumpe läuft, Ist-/Sollwert der bedarfsreduzierten Vorlauftemperatur, Rücklauftemperatur.
      • Textkachel Primärkreis: Zeigt an ob und seit wann Heiz- oder Warmwasserladebedarf besteht, wie weit das primäre Stellventil geöffnet ist (vor/nach Linearisierung), wie viele Verstellbewegungen es in den letzten 24 Stunden gab, Rücklauftemperatur/Begrenzung, Vorlauftemperatur.
      • Textkachel Sonnenaufschaltung: Sonnenwärmeindex, Absenkung des Raumsollwerts.
      • Textkachel Bedarfsführung: Welcher Raum aktuell Führungsraum ist und dessen Ist-/Solltemperatur und RTR-Stellgröße.
      • Textkachel Warmwasser: Ladebedarf und seit wann, ob die Ladepumpe läuft, Ist-/Solltemperatur des Speichers, Vor-/Rücklauftemperatur der Warmwasser-Zirkulationsleitung.
      • Textkachel Heizung Wohnzimmer | Bad: Zusammenfassung des Zustands der beiden wichtigsten RTR im Haus.
      • Schalter Warmwasser-Freigabe: Die Funktionsuhr dahinter steuert die Zeiten, zu denen Warmwasser aufgeladen werden darf. Der Schalter erlaubt bei Bedarf (den es erfahrungsgemäß so gut wie nie gibt) manuelle Eingriffe.
      • Schalter Warmwasser-Ringleitung: Zeigt ob die Warmwasser-Zirkulationspumpe gerade läuft und erlaubt sie manuell für einige Minuten einzuschalten (danach schaltet sie sich automatisch wieder ab).
      Alle Textkacheln werden mit dem Textformatierer aus entsprechenden Variablen-Datenpunkten befüllt.

      So, das war's. Die Heizungsregelung läuft jetzt schon seit einigen Jahren stabil (wobei ich natürlich immer mal wieder Änderungen vorgenommen habe).
      Zuletzt geändert von hyman; 25.12.2021, 14:51.

      Kommentar


        #4
        So, die dreiteilige Beschreibung meiner bedarfsgeführten Heizungsregelung ist fertig -- siehe die ersten drei Beiträge in diesem Thread.

        An dieser Stelle sind später evtl. noch folgende Themen nachzutragen, die aber noch nicht fertig sind:
        • Ansteuerung der Warmwasser-Zirkulationspumpe
        • Thermische Desinfektion / Legionellenschutz
        • Datenlogging

        Kommentar


          #5
          Vielen Dank Horst für die ausführliche Beschreibung! Das ist eine sehr ausgeklügelte Regelung, so etwas gefällt mir
          Nebenbei kann man viel über den effizienten Einsatz Deiner Bausteine lernen.
          Gruß Bernhard

          Kommentar


            #6
            Krass, hyman . Unser Haus ist auch an ein Fernwärmenetz angebunden (über eine HABO Übergabestation)... und da heißt es immer, es gäbe keine Möglichkeit einer KNX-Steuerung. Sollte das doch gehen?

            Ich werde mich in Deine komplexe Dokumentation (ganz vielen Dank) einlesen und dann auch gerne berichten!

            Viele Grüße und frohe Weihnachten!

            Alex
            Zuletzt geändert von Sweeny; 26.12.2021, 09:31.

            Kommentar


              #7
              Ehrlich gesagt: Ich habe mein Berufsleben mit der Programmierung von Steuerungen für komplexe HVAC-Anlagen verbracht. Aber soviel aufgeblasener Schwachsinn wie zuvor beschrieben ist mir noch nie begegnet. Was soll das Ganze bringen? Energieeinsparungen irgendwo hinter dem Komma? Das habe ich viel einfacher hinbekommen, und zwar vor dem Komma.

              Kommentar


                #8
                Na dann beschreibe doch mal an welchen Stellen Du das mit welchen Auswirkungen einfacher und besser gemacht hast.
                Gruß Bernhard

                Kommentar


                  #9
                  …vor allem, wenn der GiraX1 als „Single Point Of Failure“ sich verabschiedet und das Haus einmal auskühlt…
                  …ganz gut kommt sowas am 24.12. abends…

                  Das ist zwar schön gelöst, aber erstens bringt es keine nennenswerte Ersparnis und zweitens baue ich doch kein unanfälliges Bussystem mit KNX und verlagere eines der wichtigsten Gebäudefunktionen (Heizen) als Software in ein Logikmodul von Gira.

                  Kommentar


                    #10
                    hyman
                    vielen Dank für die ausführliche Beschreibung.
                    Ich finde es einfach nur gut
                    Gruß

                    Gunter

                    "Die Fehler des Tuns sind meist weitbringender als die des Lassens"

                    Kommentar


                      #11
                      Zitat von rosebud Beitrag anzeigen
                      aufgeblasener Schwachsinn
                      Ts, Deine Wortwahl ... Ist halt Hobby. Wär's Beruf, könnte oder wollte das keine(r) bezahlen.

                      Zitat von rosebud Beitrag anzeigen
                      Was soll das Ganze bringen? Energieeinsparungen irgendwo hinter dem Komma?
                      "Das Ganze" bringt so ca. 20..25% Einsparung gegenüber der vorher verwendeten 80er-Jahre Analogregelung mit nur einem Führungsraum und ohne Sonnenaufschaltung. Außerdem hat sich der Komfort verbessert, weil's im Badezimmer jetzt nicht mehr kalt bleibt, wenn ich im Wohnzimmer den Kamin an mache.

                      Zitat von rosebud Beitrag anzeigen
                      Das habe ich viel einfacher hinbekommen
                      Was genau hast Du viel einfacher hin bekommen? Für konkrete Vorschläge zur Vereinfachung bin ich offen, für unsachliche Angriffe nicht.

                      Zitat von tsb2001 Beitrag anzeigen
                      wenn der GiraX1 als „Single Point Of Failure“ sich verabschiedet und das Haus einmal auskühlt…
                      Jede Heizungssteuerung ist doch ein Single Point of Failure. Die Frage ist also, ob der X1 wesentlich unzuverlässiger ist als ein "normale" Heizungssteuerung. Das halte ich für schwer abschätzbar. Kann jemand Gründe für eine besondere Unzuverlässigkeit des X1 ins Feld führen?

                      Sicher ist, dass ich beim Ausfall des X1 -- anders als beim Ausfall eines "normalen" Reglers -- nicht auch meine Aktorik verliere. Ich kann also einen Notbetrieb mit ein paar Telegrammen auf dem Bus hin bekommen, bis ich den X1 ersetzen kann. Fällt mir die Schalt-/Dimm-Steuereinheit oder der Temperaturcontroller aus, wird's schwieriger, deshalb habe ich beide als Ersatzteil liegen.

                      Kommentar


                        #12
                        Hallo hyman,
                        ich find's top und werde mich mal damit auseinandersetzten.
                        Weiter so

                        Kommentar


                          #13
                          Zitat von hyman Beitrag anzeigen
                          Jede Heizungssteuerung ist doch ein Single Point of Failure. Die Frage ist also, ob der X1 wesentlich unzuverlässiger ist als ein "normale" Heizungssteuerung. Das halte ich für schwer abschätzbar. Kann jemand Gründe für eine besondere Unzuverlässigkeit des X1 ins Feld führen?

                          Sicher ist, dass ich beim Ausfall des X1 -- anders als beim Ausfall eines "normalen" Reglers -- nicht auch meine Aktorik verliere. Ich kann also einen Notbetrieb mit ein paar Telegrammen auf dem Bus hin bekommen, bis ich den X1 ersetzen kann. Fällt mir die Schalt-/Dimm-Steuereinheit oder der Temperaturcontroller aus, wird's schwieriger, deshalb habe ich beide als Ersatzteil liegen.
                          Das Problem ist, dass du dir mehrere Single Points of Failures eingebaut hast:
                          • X1 bezüglich Heizungsregler: Fällt z.B. bei eine klassischen Wärmepumpe der Regler aus, kannst du schlimmstenfalls noch mit dem Heizstab heizen. Zudem sind die Regler meist langlebiger als das Heizgerät selbst. Ich 20 Jahre als externer Elektroinstallateur für einen Heizungsbauer Serviceeinsätze mitgefahren. Insgesamt hatte ich zwei Regler, die einen Totalausfall hatten. Bei dem einen war es jedoch nur ein Sicherungshalter mit defekter Lötstelle am angelöteten Kabel, beim anderen war es ein Blitzeinschlag. Bei normalen Heizungssystemen hilft zudem meist der Kunden(not)dienst eines jeden Fachbetriebs mit Ersatzteilen oder deren Beschaffung innerhalb kürzester Zeit aus. Mancher Hersteller schickt da zur Not auch mal gegen Bezahlung ein Taxi auf direktem Weg. Und jeder Heizungsinstallateur mit einem vernünftigen Kundendienst kann das reparieren - es hängt nicht von einer einzigen Person (von Dir) ab.
                          • Sensordaten: Jede Heizung hat eine Notlaufeigenschaft, wenn irgendein Sensor fehlt oder defekt ist. Dann wird auf eine eingestellte Temperatur geregelt, die zumindest dafür sorgt, dass es im Haus warm bleibt. Zudem wirft dieser dann unmittelbar eine Fehlermeldung aus. Bei Dir wird es mitunter einfach kalt in der Wohnung; und zunächst weiß keiner warum das so ist. Ohne passende Diagnose und Tools geht da gar nichts.
                            Dann rechnest du munter komplett mit vorhandenen Sensordaten ohne Berücksichtigung, wenn die wegen Ausfall mal den Wert „0“ liefern. Ich habe jetzt nicht die kompletten Reglerberechnungen durchgeguckt, aber was macht der X1, wenn du mal wegen Sensorausfall in deiner Berechnung mal irgendwo durch „Null“ teilst. Fängt das System das auf, oder hängt sich der Regler auf? Auch das kannst nur du beseitigen, nicht aber ein Kundendienstler eines Heizungsfachbetriebes.
                          • Weiterhin rechnest du mit webbasierten Daten, folglich hängt dein Regelverhalten von einer Internetverbindung ab. Einfaches Beispiel: das Telefonkabel außerhalb des Hauses ist beim Netzbetreiber gestört. Der X1 hält den letzten empfangenen Wert fest und regelt dir permanent die Raumsolltemperatur wegen vorangegangener Sonneneinstrahlung um die 1,5 Grad ab. Auch nachts und am nächsten Tag. Oder gibt es einen Reset, wenn über eine gewisse Zeit keine Daten empfangen werden?
                          Der wichtigste SPOF bist jedoch mit dem Hinweis auf die Andeutungen von oben: Du selbst!
                          Ich bringe mal ein einfaches Beispiel: Fährst du im Winter bei Glatteis gegen den Baum (was ich niemals hoffe - aber auch nie auszuschließen ist) und du mit Operationen und Reha eventuell Monate nicht zu Hause bist, läuft deine Anlage im Blindflug. Wenn es nur die Knochen sind, geht es irgendwann wieder. Ist ein Schaden im Kopf entstanden, bist du vielleicht gar nicht mehr imstande, deine eigene Anlage zu reparieren. Gleiches gilt bei Tod.

                          Geht da irgendwas kaputt, kann keiner von deinen Angehörigen einen Heizungsbauer oder Elektriker mal einfach rufen, der hilft. Bei diesem komplexen Zusammenspiel an Funktionen, was sich größtenteils nur in dem X1 abspielt, ist ein Nachverfolgen und Beseitigen von Störungen für einen Externen fast unmöglich. Wer parametriert da „einfach mal was um“, wenn das Ding ausfällt und du nicht verfügbar bist?
                          Folglich machst du dich unabkömmlich.
                          Wichtig wäre, das beim Abstecken oder Ausfall des X1 automatisch eine Vorlauftemperatur generiert wird, die eine behagliche Raumtemperatur in allen Räumen bereitstellt und die Warmwasserversorgung sichert. Da das aber offensichtlich nicht vorgesehen ist, finde ich das Ganze recht fahrlässig.
                          Zuletzt geändert von tsb2001; 26.12.2021, 09:07.

                          Kommentar


                            #14
                            Hallo Torsten,

                            danke für Deine Gedanken zum Thema Ausfallsicherheit und Wartung.

                            Zitat von tsb2001 Beitrag anzeigen
                            Fällt z.B. bei eine klassischen Wärmepumpe der Regler aus, kannst du schlimmstenfalls noch mit dem Heizstab heizen.
                            Ich habe aber nun mal keine Wärmepumpe, sondern eine Fernwärmeübergabstation. Wenn da ein klassischer Regler ausfällt, gibt es keine Redundanz. Ich kann beim Ausfall des X1 trotzdem noch heizen, allerdings beim derzeitigen Anlagenkonzept nicht ohne manuelle Eingriffe. Das dürfte aber mit dem Heizstab ähnlich sein, oder sehe ich das falsch?

                            Zitat von tsb2001 Beitrag anzeigen
                            Zudem sind die Regler meist langlebiger als das Heizgerät selbst.
                            Gibt es Gründe anzunehmen, das sei bei einem X1 anders?

                            Zitat von tsb2001 Beitrag anzeigen
                            Und jeder Heizungsinstallateur mit einem vernünftigen Kundendienst kann das reparieren - es hängt nicht von einer einzigen Person (von Dir) ab.
                            Das ist natürlich schon ein Argument. Notfalls tauscht der den ganzen Heizungsregler. Bei meiner Anlage muss man erst mal raus finden, welche Komponente getauscht werden muss. Und die nach dem Tausch aus der ETS (beim X1 zusätzlich aus dem GPA) programmieren.

                            Zitat von tsb2001 Beitrag anzeigen
                            Sensordaten: Jede Heizung hat eine Notlaufeigenschaft
                            Das sollte ich in der Tat für die Außentemperatur noch machen. Derzeit wird ein Sensorausfall zwar (über den Vergleich mit Wetterdaten aus dem Netz) erkannt, in der Heizkurve aber munter mit dem ggf. falschen Wert gerechnet.

                            Zitat von tsb2001 Beitrag anzeigen
                            was macht der X1, wenn du mal wegen Sensorausfall in deiner Berechnung mal irgendwo durch „Null“ teilst
                            Das scheint mir eher abwegig. Jeder Sensorwert darf völlig legal den Wert 0.0 haben. Wenn in einer Formelberechnung Runtime-Fehler vorkommen, werden die dadurch abgefangen, dass eine Fehlermeldung generiert wird und die Berechnung abgebrochen wird (also keine neuen Werte ausgegeben werden).

                            Zitat von tsb2001 Beitrag anzeigen
                            Weiterhin rechnest du mit webbasierten Daten, folglich hängt dein Regelverhalten von einer Internetverbindung ab.
                            Das betrifft nur die Plausibilitätskontrolle der Außentemperatur und die Sonnenaufschaltung. Die könnte ich in der Tat mit einem Timeout vesehen, falls keine neuen Daten kommen.

                            Zitat von tsb2001 Beitrag anzeigen
                            Wer parametriert da „einfach mal was um“, wenn das Ding ausfällt und du nicht verfügbar bist?
                            Umparametrieren wird nicht nötig sein. Die Anlage tut ja. Wenn Hardware ausfällt, muss die identifiziert, getauscht und identisch parametriert werden. Auch das ist nicht völlig trivial, wie ich oben schon zugestanden habe. Ein Verständnis der Parametrierung und Logik ist dazu aber nicht erforderlich.

                            Zitat von tsb2001 Beitrag anzeigen
                            Wichtig wäre, das beim Abstecken oder Ausfall des X1 automatisch eine Vorlauftemperatur generiert wird, die eine behagliche Raumtemperatur in allen Räumen bereitstellt und die Warmwasserversorgung sichert. Da das aber offensichtlich nicht vorgesehen ist, finde ich das Ganze recht fahrlässig.
                            Das dürfte nicht ganz einfach sein, weil ja die Warmwasserbereitung und die Heizung nicht unabhängig voneinander sind. Was aber gehen könnte ist eine Dokumentation, die
                            • dem Anwender erlaubt ggf. einen Ausfall des X1 zu erkennen und den Notbetrieb zu aktivieren
                            • einem Elektriker hilft, die defekte Komponente zu ermitteln, zu tauschen und wieder identisch zu parametrieren.
                            Grüße von Horst
                            Zuletzt geändert von hyman; 26.12.2021, 10:39.

                            Kommentar


                              #15
                              Zitat von hyman Beitrag anzeigen
                              Das dürfte nicht ganz einfach sein, weil ja die Warmwasserbereitung und die Heizung nicht unabhängig voneinander sind.
                              Vielleicht ist trotzdem eine Art Split Notbetrieb möglich, der mindestens lauwarmes Wasser und etwas Heizleistung ermöglicht. Das könnte schon einen Gedanken wert sein.
                              Gruß Bernhard

                              Kommentar

                              Lädt...
                              X