Frei programmierbare Steuerung2018-12-13T12:18:11+00:00

Hintergrund und Anwendungen

Mit der frei programmierbaren Steuerung lassen sich beliebige Ausgänge und Sensoren in mathematischen Formeln verknüpfen. Diese Formeln werden vom System ausgewertet und das Ergebnis kann dann auf einen Ausgang gelegt werden.

Das Modul Raumanforderung erfüllt diese Funktion bereits in eingeschränkter Weise. In der Raumanforderung können die Ausgänge aus der Einzelraumregelung derart verknüpft werden, dass ein zusätzlicher Ausgang geschalten wird, sobald einer der verknüpften Ausgänge vom System geschalten wird. Damit lässt sich beispielsweise realisieren, dass eine Pumpe oder der zentrale Wärmeerzeuger geschalten wird, sobald ein Raum einen Wärmebedarf meldet.

Mit der FPS lassen sich deutlich kompliziertere Sachverhalte abbilden, vorerst können aber nur Heizraumsensoren, Differenz- und Vorlauftemperaturregelungen, Raumanforderungen sowie FPS untereinander miteinander verknüpft werden.

Beispielsweise kann so eine Differenzregelung für eine Solaranlage mit einer Raumanforderung verknüpft werden. Im ersten Schritt wird der Differenzregelung kein Ausgang zugeordnet. In der FPS wird dann eine Formel angelegt, die das Ergebnis der Berechnung der Differenzregelung mit dem Ergebnis der Raumanforderung mit einem logischen UND verknüpft. Eine Verknüpfung mit logischem UND liefert als Ergebnis eine 1 bzw. AN genau dann, wenn beide (bzw. alle) verknüpften Ausgänge/Regelungen 1 bzw. AN liefern. Das Ergebnis der Auswertung wird dann auf einen Ausgang gelegt. Im Beispiel bedeutet das, dass ein Ausgang für die Differenzregelung tatsächlich nur dann geschalten wird, wenn gleichzeitig auch eine Raumanforderung besteht. Die Berechnung lässt sich natürlich auch dahingehend umstellen, dass etwa der Ausgang nur dann geschalten wird, wenn die Differenzregelung auf 1 bzw. AN schaltet, gleichzeitig aber keine Raumanforderung besteht. Ebenso lässt sich die Berechnung ausweiten durch Hinzufügen zusätzlicher Raumanforderungen, Differenzregelungen oder mit dem Vergleich von Sensorwerten.

Einrichtung

Jede FPS wird intern eindeutig über eine ID gespeichert. In der Oberfläche wird allerdings der vom Benutzer zugewiesene Name verwendet. Es ist also zu empfehlen, einen eindeutigen, verständlichen Namen anzugeben.

Wenn die Auswertung der Formel scheitert, wird der Fehlerwert als Ergebnis der Berechnung zurückgegeben und auf etwaig zugeordnete Ausgänge ausgegeben. Die Auswertung scheitert, wenn einer oder mehrere der verknüpften Ausgänge und Sensoren keinen Wert zurückgibt bzw. nicht überträgt. Damit ist sichergestellt, dass z.B. beim Ausfall von Sensoren ein definiertes Verhalten eintritt.

Jede FPS definiert eine Formel, deren Ergebnis einem virtuellen Ausgang A0 zugewiesen wird. Dieser Ausgang kann in der Ausgangszuordnung einem oder mehreren physischen, digitalen Ausgängen an einem Heizraumgateway zugewiesen werden. Der virtuelle Ausgang wird in jeder FPS mit A0 bezeichnet, ist aber natürlich eindeutig definiert und wird in der Ausgangszuordnung über den Namen der FPS (s.o.) eindeutig identifiziert.

Das gleiche gilt für die Deklaration von zu verknüpfenden Ausgängen und Sensoren. So kann etwa ein Außentemperatursensor in einer Formel als S2, in einer anderen Formel als S1 deklariert und verwendet werden.

Funktionsweise

Operatoren

  • & (binäres UND).
  • | (binäres ODER).
  • not (Negation).
  • >, <, >=, <=, == (Vergleichsoperatoren).
  • +, -, *, / (Grundrechenarten).
  • () (Klammern).
  • if – else (WENN-DANN Verknüpfung)

Operatorenrangfolge

Die Operatorrangfolge definiert die Reihenfolge (auch: Präzedenz), in der Operatoren in einer Formel auszuwerten sind. Ein bekanntes Beispiel ist die Wertigkeit der Grundrechenarten. So gilt 1+2*3=7, da die Multiplikation vor der Addition ausgewertet wird. Soll bewusst die Addition vor der Multiplikation in dieser Gleichung ausgewertet werden, so sind Klammern zu verwenden, also (1+2)*3=9. Die Operatorrangfolge für die Formeln in der FPS ist in aufsteigender Reihenfolge:

  • if – else
  • not
  • <, >, <=, >=, ==, !=
  • |
  • &
  • +, –
  • *, /

D.h. Multiplikation und Division haben die höchste Präzedenz, if – else die niedrigste.

Hysterese und Ein-/Ausschaltverzögerung

Die Hysterese wird auf jeden Vergleich in der Formel angewandt (<, >, <=, >=, ==, !=). Um ggf. die gleichzeitige Anwendung der Hysterese auf mehrere Vergleiche in einer Formel zu vermeiden oder unterschiedliche Hysteresen für die jeweiligen Vergleiche einstellen zu können, müssen die Vergleiche in einzelne FPS Formeln heruntergebrochen werden und deren Ergebnisse dann in einer Gesamtformel zusammengeführt werden.
Die Ein-/Ausschaltverzögerung wird ganz am Ende, wenn das Ergebnis der Formel feststeht und damit der Schaltzustand für A0 berechnet ist, angewandt.

Raumwerte

Ohne gesonderte Deklaration können Soll/Offsets/Ziel und Istwerte von Räumen in Formeln verwendet werden. Eine Variable mit dem Namen “raum_1_soll” wird automatisch durch den Sollwert des Raumes mit der ID 1 ersetzt. “raum_X_offsets” wird durch den Gesamtoffset des Raumes ersetzt, “raum_X_temp” durch die Temperatur des Raumtemperatursensors, “raum_X_ziel” ist eine Abkürzung für “raum_X_soll + raum_X_offsets”. “raum_X_offset_Y” wird durch den Offset (oder 0.0 falls nicht vorhanden) eines spezifischen Moduls Y (z.B. “wetter” oder “geolocation” ersetzt.
Zusätzlich zu den Raumwerten kann über “vtr_X_ziel” der Zielwert einer Vorlauftemperaturregelung eingebunden werden. X ist hierbei die in der Liste der Vorlauftemperaturregelungen angeführte Ziffer.

Beispiele

Für die Beispiele gehen wir davon aus, dass die Ausgänge und Sensoren für die Auswertung die folgenden Werte haben:

  • A1 = 1
  • A2 = 0
  • A3 = 1
  • A4 = 55%
  • S1 = 24.5°
  • S2 = 45.0°

Beispielformeln:

  • not A1 = 0.
  • A1 & A2 = 0.
  • A1 | A2 = 1.
  • not A1 & A2 = 1. Diese Formel evaluiert zu 1. Da “&” eine höhere Präzedenz hat als “not”, wird zuerst “A1 & A2” ausgewertet und das Ergebnis dann mit “not” negiert.
  • (not A1) & A2 = 0. “(not A1)” wird zu 0, so dass “0 & A2” übrig bleibt und auch zu 0 wird.
  • A1 & not A2. Diese Formel führt zu einem Syntaxfehler, weil “&” eine höhere Präzedenz hat als “not”, so dass im ersten Auswertungsschritt nicht “not A2” evaluiert wird, sondern “A1 & not”.
  • A1 & S1 > 20. Diese Formel führt zu einem Syntaxfehler. “A1 & S1” wird als erstes ausgewertet und versucht inkompatible Datentypen zu verknüpfen, da A1 ein Wahrheitswert und S1 eine Dezimalzahl ist.
  • A1 & (S1 > 20) = 1. S1 ist mit 24.5° größer als 20, so dass der Term in Klammern zu 1 wird. Damit ist A1 & 1 = 1.

Fehlermeldungen

  • „Variable nicht deklariert“: Tritt auf, wenn im Auswahlmenü für einen Ausgang oder Sensor nichts ausgewählt wurde.
  • „Auswertung nicht möglich / Fehlerwert“: Tritt auf, wenn einer der verknüpften Ausgänge oder Sensoren keinen Wert zurückliefert. Die Formel gibt als Ergebnis dann den definierten Fehlerwert zurück.
  • „Syntaxfehler“: Generischer Syntaxfehler, wenn die Formel nicht eindeutig ausgewertet werden kann.
  • „Syntaxfehler, Klammern geschlossen?“: Tritt u.a. auf, wenn Klammern in der Formel nicht geschlossen werden.
  • „Unbekannte Variable“/“Ungültige Variable verwendet“: Tritt auf, wenn in der Formel eine Variable verwendet wird, die nicht der A*/S* Konvention entspricht.
  • „Illegale oder unbekannte Operation in Formel“: Tritt auf, wenn ein Operator verwendet wird, der unbekannt oder zur Verwendung in Formeln nicht zugelassen ist.
  • „unzulässiger Operand für Operator XY“: Tritt auf, wenn z.B. „&“ verwendet wird, um einen 0/1 Wert eines Ausgangs mit einem Dezimalwert eines Sensors zu verknüpfen.

Anwendungsbeispiele

Bemerkungen

  • im Moment können nur binäre Ausgängen geschalten werden. Dementsprechend werden Mischer, die als zu verknüpfende Ausgänge ausgewählt werden, von ihrem eigentlich Öffnungszustand auf 0/1 übersetzt.
  • in einer nächsten Version darf A0 auch Werte außerhalb von 0/1 annehmen, so daß z.B. ein analoger PWM-Ausgang auf 5.4V gesetzt werden kann.
  • wenn irgendeiner der zu verknüpfenden Ausgänge einen Fehlerwert liefert (z.B. wenn eine Differenzregelung auf “Fehler” steht) oder ein zu verknüpfender Sensor nicht überträgt, wird A0 auf den definierten Fehlerwert gesetzt.
  • deklarierte Ausgänge und Sensoren müssen mit ihrem exakten Namen verwendet werden, d.h. “a1” in der Formel für den Ausgang A1 ist nicht zulässig.
  • Differenz- und Mischerregelungen müssen nicht notwendig einen Ausgang zugeordnet haben, damit sie in der FPS verwendet werden können. Auch ohne Ausgang können diese Regelungen aufgrund der Sensorendaten ausgewertet werden. Diese Ergebnisse können in der FPS verwendet und verknüpft werden. Raumanforderungen haben (im Moment) notwendig einen Ausgang zugeordnet.
  • in einem weiteren Schritt werden aber auch die Ausgänge der Einzelraumregelung in der FPS auswählbar sein. Damit können dann auch kompliziertere Konstrukte als in der Raumanforderung abbildbar formuliert werden.
  • dazu wird es auch möglich sein, Offsets und Verzögerungen in der FPS zu verwenden.