C++ Programmieraufgabe: Simulation einer Heizung und eines Heizungsreglers
Vorgestellt wird ein Problem der Regelungstechnik: Es soll die Umgebung eines Hauses und dessen Heizung simuliert werden. Dabei sollen in konstanten Zeitabständen die Außentemperatur und die Raumtemperatur gemessen werden und ein Algorithmus entwickelt werden, der dafür sorgt, dass die Raumtemperatur der vorgegebenen Soll-Temperatur möglichst nahe kommt.
Einordnung des Artikels
- Einführung in die Informatik
- C++ Programmieraufgaben
- C++ Programmieraufgabe: Simulation einer Heizung und eines Heizungsreglers
- C++ Programmieraufgaben
Einführung
Abbildung 1 zeigt ein Haus mit einer Heizung, die Wärme Q an den Wohnraum abgibt. Im Idealfall ist:
- dieser Wärmestrom (als Energie pro Zeit) identisch dem Wärmestrom, der vom Haus an die Umgebung abgegeben wird und zugleich
- die Temperatur im Haus auf den angenehmsten Wert eingestellt (Soll-Temperatur).
In diesem Fall kann die Heizung bei konstanter Leistung P weiterlaufen und die Raumtemperatur bleibt unverändert.
Dass dieser stationäre Zustand eintritt und längere Zeit beibehalten wird, ist sehr unwahrscheinlich. Im Normalfall
- stimmt die tatsächliche Raumtemperatur nicht mit der gewünschten Temperatur überein und
- die Außentemperatur verändert sich laufend, wodurch auch der Wärmestrom an die Umgebung variiert.
Um die Raumtemperatur möglichst nahe an der Soll-Temperatur zu halten, ist eine Regelung der Heizung nötig, die immer wieder die Heizleistung an die aktuelle Raum- und Umgebungstemperatur anpasst.
Die konkreten Programmier-Aufgaben
Es soll ein Programm entwickelt werden, das die folgenden vier Komponenten enthält:
1. Ein physikalisches Modell für die Temperaturentwicklung im Haus in Abhängigkeit von
- der Heizleistung P
- der Raumtemperatur TR und der Umgebungstemperatur TU
Einige Hinweise, wie dieses Modell aussehen kann, folgen weiter unten.
2. Einen Temperatur-Regler, also einen Algorithmus, der in regelmäßigen Zeitabständen t die Raumtemperatur TR und die Außentemperatur TU misst, und der durch Regelung der Heizleistung P versucht, die Raumtemperatur möglichst nahe an einer vorgegebenen Soll-Temperatur TS zu halten.
Der Temperatur-Regler kennt natürlich das oben beschriebene Modell für die Temperaturentwicklung nicht; das Modell dient dazu, die Umgebung, die Heizung und die Temperaturentwicklung zu simulieren. Dem Regler wird die Soll-Temperatur TS vorgegeben und er soll nur mit den Messwerten
- Umgebungstemperatur TU
- Raumtemperatur TR
- Heizleistung P
arbeiten, wobei vergangene Zustände gespeichert werden können. Weitere Anforderungen an den Temperatur-Regler werden unten beschrieben.
3. Testdaten, mit denen typische Szenarien simuliert werden können. Etwa:
- lange Dauerfrostperiode
- Aprilwetter mit starken und schnellen Temperaturschwankungen
- Rückkehr aus dem Winterurlaub: die Wohnung ist deutlich abgekühlt und die Außentemperaturen sehr niedrig.
Die Ergebnisse beim Durchlauf der Testdaten können natürlich verwendet werden, um den Temperatur-Regler zu verbessern.
4. Graphische Aufbereitung der Testdaten, aus der man das Verhalten des Temperatur-Reglers ablesen kann. Dabei sollen die Testdaten vom eigentlichen Programm berechnet und anschließend weitergereicht werden, so dass eine geeignete Auswertung erfolgen kann.
Physikalisches Modell für die Temperaturentwicklung
Die Wärmemenge (in Joule), die pro Zeit t vom Haus an die Umgebung abgegeben wird, ist proprtional zur Temperaturdifferenz zwischen Raumtemperatur TR und Umgebungstemperatur TU:
Q = k (TR - TU) t
Dabei ist k eine Konstante, die man auch modellieren könnte, da sie von der Größe der Oberfläche des Hauses abhängt und davon, wie gut die Wärmedämmung des Hauses ist. Wie man einen geeigneten Wert für k finden kann, wird unten gezeigt.
Die Temperaturdifferenz (TR - TU) kann natürlich auch negativ sein, nämlich wenn es draußen wärmer ist als im Haus. Dann strömt Wärme aus der Umgebung ins Haus und die Heizleistung muss auch negativ werden; das heißt die Heizung muss als Klimaanlage arbeiten.
Die Energie QH, die die Heizung während der Zeitdauer t abgibt, ist proprtional zur Leistung P der Heizung:
QH = P t
Das Modell muss jetzt noch wiedergeben, wie sich die Temperatur TR verändert, wenn eine gewisse Außentemperatur TU herrscht und die Heizung die Leistung P abgibt. Dazu nimmt man an, dass
- die Zeitdauer t klein genug gewählt ist, so dass während t keine merkliche Veränderung der Außentemperatur eintritt (etwa t = 1 h)
- die Leistung P und der nach außen abgegebene Wärmestrom Q (wie oben mit Hilfe von k berechnet) während der Zeitdauer t konstant bleiben und
- das Haus durch seine Wärmekapazität C (in Joule pro Kelvin) charakterisiert ist.
Es ergibt sich dann eine einfache Energiebilanz:
1. Ist die Differenz P t - Q positiv, wird dem Haus die überschüssige Energie zugeführt und die Raumtemperatur steigt auf den neuen Wert TR,neu, der sich leicht berechnen lässt aus:
P t - Q = C (TR,neu - TR)
2. Ist die Differenz P t - Q negativ, wird dem Haus Energie entzogen und die Raumtemperatur sinkt auf den neuen Wert TR,neu, der sich aus der selben Formel berechnen lässt — nur sind jetzt beide Seiten der Gleichung negativ:
P t - Q = C (TR,neu - TR)
Aufgelöst nach TR,neu ergibt sich:
TR,neu = TR + C-1 (P t - Q)
Das Modell ist also vollständig, wenn man die beiden Konstanten angeben kann:
- k, die Größe, die den Wärmeübergang vom Haus an die Umgebung beschreibt und
- C, die Wärmekapazität des Hauses.
Zudem muss man eine maximale Leistung Pmax angeben, die die Heizung bei Volllast liefern kann.
Die folgenden Überlegungen sollen einen Hinweis geben, wie man die drei Größen k, C, Pmax sinnvoll festlegen kann.
1. Die Größe C, die Wärmekapazität des Hauses, ist für den Regler gar nicht so wichtig wie man zunächst meinen wird. Denn ein großes C steht für ein großes Haus, ein kleines C für ein kleines Haus. Entsprechend wird in einem großen Haus auch eine leistungsfähigere Heizung zur Verfügung stehen (also größeres Pmax). Der Algorithmus, nach dem der Regler die Heizleistung steuert (als Prozentzahl, also im Verhältnis zu Pmax), sollte nicht vom absoluten Wert von C abhängen. Diese Aussage ist natürlich nur in erster Näherung richtig. In zweiter Näherung muss man nämlich berücksichtigen: Ein Haus mit dicken Mauern hat eine sehr große Wärmekapazität, ein Haus mit dünnen Mauern eine kleinere Wärmekapazität und ein Holzhaus eine sehr kleine Wärmekapazität.
2. Besonders einfach zu behandeln ist der stationäre Fall, der in Abbildung 1 dargestellt ist: Angenommen die Raumtemperatur hat genau ihren Sollwert, der Regler schafft es die richtige Heizleistung einzustellen und die Außentemperatur bleibt längere Zeit unverändert. Dann ist die Energiebilanz besonders einfach:
P t = k (TS - TU ) t, also P = k (TS - TU )
Für den Fall, dass TU die kleinstmöglichen Wert annimmt (TU,min = -20°C), kann man diese Gleichung verwenden, um die Heizung zu dimensionieren, denn man benötigt jetzt
Pmax = k (TS - TU,min )
Man kann die Gleichung aber auch umgekehrt lesen: Ist bei einer bestimmten Umgebungstemperatur TU bekannt, welche Heizleistung P aufzubringen ist, um den stationären Zustand aus Abbildung 1 aufrecht zu erhalten, kann man sich die Konstante k ausrechnen:
k = P (TS - TU )-1
3. Ein anderer einfacher Fall ergibt sich, wenn die Heizung abgeschaltet wird: Jetzt strömt Wärme nach draußen und diese Wärme wird allein aus der im Haus gespeicherten Energie entnommen - und dafür steht gerade die Wärmekapazität C. Wartet man etwa bis die Temperatur um 1 K abgenommen hat, was einer Zeitdauer t1 entsprechen soll, so gilt
C (TR - 1 K) = k (TR - TU ) t1
Kennt man einen einigermaßen verlässlichen Wert für t1, kann man C/k mit dieser Gleichung ausrechnen.
Nach diesen Überlegungen sollte es nicht schwer fallen, realistische Zahlenwerte für C, k und Pmax anzugeben.
Einwände und Verbesserungen
Man kann gegen dieses Modell viele Einwände erheben zum Beispiel:
- Die Temperaturen bleiben während der Zeitdauer t nicht konstant, folglich stimmen obige Formeln nicht exakt.
- Der Energieverlust an die Umgebung hängt nicht nur vom Temperaturunterschied ab: bei starkem Wind ist der Wärmeübergang von der Wand zur Luft höher, was zu einem höheren Energieverlust führt.
- Es gibt weitere Wärmequellen, die das Modell nicht berücksichtigt, etwa Heizung durch Sonneneinstrahlung durch die Fenster, Heizung durch weitere Wärmequellen im Haus (Elektrogeräte).
- Wärmeverluste durch Lüften, Tür öffnen.
Diese Liste kann man beliebig verlängern — Sie können gerne das Modell um Eigenschaften erweitern, die Sie für relevant halten.
Anforderungen an den Temperatur-Regler
Oben wurde bereits beschrieben, dass der Regler das Modell zur Berechnung der neuen Raumtemperatur (aus den Größen C, k, P, TR und TU) nicht kennt; stattdessen muss er mit den Messwerten P, TR und TU arbeiten und kann alte Messwerte speichern.
Die Zeitdauer t, die durch das Modell vorgegeben ist (etwa t = 1 h) und die Abstände beschreibt, in denen sich die Umgebungstemperatur TU verändert, soll zunächst auch als Intervall für den Regler verwendet werden: Immer nach der Zeitspanne t erhält der Regler die neuen Messwerte und stellt die neue Heizleistung P ein.
Untersuchen Sie, wie groß dann etwa die Schwankung der Raumtemperatur TR ist.
Wie verändern sich die Schwankungen der Raumtemperatur TR, wenn der Regler schon nach Zeitabständen t/2, t/4 beziehungsweise t/8 die neue Heizleistung berechnet? Achten Sie bei der Entwicklung des Modells und des Algorithmus für den Regler darauf, dass Sie diese verkürzten Zeitabstände leicht in Ihr Programm einbauen können.
Untrsuchen Sie, ob der Regler besser arbeitet, wenn die Heizung überdimensioniert ist; das soll heißen, dass die maximale Heizleistung Pmax deutlich größer ist als es C und k (siehe Diskussion oben) erfordern!
Aufbereitung der Testdaten
Versuchen Sie Ihr Programm so zu gestalten, dass die Testdaten leicht exportiert werden können, um sie graphisch aufzubereiten.
Wählen Sie eine geeignete graphische Aufbereitung aus und diskutieren Sie damit die Ergebnisse.
Einheiten und gültige Stellen
- Temperaturen werden generell in K (Kelvin) angegeben; damit vermeidet man Verwechslung von absoluten Temperaturen und Temperaturdifferenzen. Sinnvoll sind drei Stellen vor dem Komma und eine Stelle nach dem Komma. (Es gibt zwar viele Temperaturmesser, die zwei gültige Stellen nach dem Komma angeben; um absolute Temperaturen — also nicht nur Temperaturdifferenzen — so genau zu messen, benötigt man aber sehr teure Geräte.)
- Leistungen werden in W (Watt) mit fünf gültigen Stellen ohne Nachkommastellen angegeben.