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

Abbildung 1 zeigt ein Haus mit einer Heizung, die Wärme Q an den Wohnraum abgibt. Im Idealfall ist:

In diesem Fall kann die Heizung bei konstanter Leistung P weiterlaufen und die Raumtemperatur bleibt unverändert.

Abbildung 1: Wärmeströme in einem geheizten Haus: Die Heizung gibt Energie an die Raumluft ab; das Haus gibt Energie an die Umgebung ab. Hier ist schon der stationäre Zustand dargestellt, den man durch eine Heizungsregelung erreichen möchte.Abbildung 1: Wärmeströme in einem geheizten Haus: Die Heizung gibt Energie an die Raumluft ab; das Haus gibt Energie an die Umgebung ab. Hier ist schon der stationäre Zustand dargestellt, den man durch eine Heizungsregelung erreichen möchte.

Dass dieser stationäre Zustand eintritt und längere Zeit beibehalten wird, ist sehr unwahrscheinlich. Im Normalfall

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

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

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:

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

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:

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:

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

  1. 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.)
  2. Leistungen werden in W (Watt) mit fünf gültigen Stellen ohne Nachkommastellen angegeben.