Ankündigung

Einklappen

Sammelbestellung ETS6 Vollversionen aktiv!

Sammelbestellung für ETS6 Vollversionen (Prof., Home, Lite) mit 40% Rabatt aktiv! Infos im Forum!
Mehr anzeigen
Weniger anzeigen

Bedarfsgeführte Heizungsregelung mit Gira X1

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

  • guluma
    antwortet
    hyman
    vielen Dank für die ausführliche Beschreibung.
    Ich finde es einfach nur gut

    Einen Kommentar schreiben:


  • tsb2001
    antwortet
    …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.

    Einen Kommentar schreiben:


  • willisurf
    antwortet
    Na dann beschreibe doch mal an welchen Stellen Du das mit welchen Auswirkungen einfacher und besser gemacht hast.

    Einen Kommentar schreiben:


  • rosebud
    antwortet
    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.

    Einen Kommentar schreiben:


  • Sweeny
    antwortet
    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.

    Einen Kommentar schreiben:


  • willisurf
    antwortet
    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.

    Einen Kommentar schreiben:


  • hyman
    antwortet
    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

    Einen Kommentar schreiben:


  • hyman
    antwortet
    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.

    Einen Kommentar schreiben:


  • hyman
    antwortet
    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.

    Einen Kommentar schreiben:


  • hyman
    hat ein Thema erstellt X1 Bedarfsgeführte Heizungsregelung mit Gira 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.
Lädt...
X