134 lines
7.9 KiB
Markdown
134 lines
7.9 KiB
Markdown
# Enelix-Verbrauchermodul Heizung x-stufig
|
||
|
||
Dieses Modul integriert mehrstufige Heizungen als steuerbare Verbraucher in das Belevo Energiemanagement-System (Enelix). Es berechnet dynamisch verfügbare Leistungsstufen, kommuniziert mit dem übergeordneten Manager und schaltet die hinterlegten Heizstufen anhand von Temperatur, PV-Überschuss und Peak-Shaving-Anforderungen.
|
||
|
||
---
|
||
|
||
## Inhaltsverzeichnis
|
||
|
||
1. [Funktionsumfang](#1-funktionsumfang)
|
||
2. [Voraussetzungen](#2-voraussetzungen)
|
||
3. [Installation](#3-installation)
|
||
4. [Instanz anlegen & Konfiguration](#4-instanz-anlegen--konfiguration)
|
||
5. [Statusvariablen & Profile](#5-statusvariablen--profile)
|
||
6. [WebFront / Bedienung](#6-webfront--bedienung)
|
||
7. [Mapping auf Code-Komponenten](#7-mapping-auf-code-komponenten)
|
||
8. [Zukünftige Erweiterungen](#8-zukünftige-erweiterungen)
|
||
|
||
---
|
||
|
||
## 1. Funktionsumfang
|
||
|
||
* **Zyklische Steuerung:** In konfigurierbaren Intervallen (`Interval`) berechnet das Modul die aktuell verfügbaren Leistungsschritte und aktualisiert den Status.
|
||
* **Mehrstufige Heizungssteuerung:** Beliebig viele Leistungsstufen können mit Leistung und zugehörigem Schaltkontakt definiert werden.
|
||
* **PowerSteps-Generierung:** Das Modul meldet dem Enelix-Manager ein Array an möglichen Leistungsschritten (`PowerSteps`), basierend auf Temperatur, Betriebsmodus und den konfigurierten Heizstufen.
|
||
* **Peak-Shaving vs. PV-Überschuss:** Automatische Anpassung der angebotenen `PowerSteps` basierend auf dem vom Manager vorgegebenen Modus (`Is_Peak_Shaving`). Im Peak-Shaving-Modus wird nur die Mindesttemperatur sichergestellt, im PV-Modus wird zusätzlicher Überschuss zur Wärmeerzeugung genutzt.
|
||
* **Temperaturüberwachung:** Berücksichtigung von Mindesttemperatur (`Mindesttemperatur`), Maximaltemperatur (`Maximaltemperatur`) und Hysterese zur Vermeidung unnötiger Schaltvorgänge.
|
||
* **Temperaturglättung:** Optional kann die gemessene Temperatur über eine PT1-Filterung geglättet werden um Temperatursprünge und Messrauschen zu reduzieren.
|
||
* **Idle-Schutz:** Nach einer Leistungsänderung kann eine konfigurierbare Sperrzeit (`IdleCounterMax`) berücksichtigt werden bevor weitere Leistungsänderungen erfolgen.
|
||
|
||
---
|
||
|
||
## 2. Voraussetzungen
|
||
|
||
* IP-Symcon **≥ 8.0**
|
||
* Modul-URL: `https://git.belevo.ch/dh/enelix.git`
|
||
* Vorhandener und eingerichteter Enelix Manager.
|
||
* Temperaturfühler als Variable in IP-Symcon.
|
||
* Schaltbare Kontakte mit aktivierter Aktion für die einzelnen Heizstufen.
|
||
|
||
---
|
||
|
||
## 3. Installation
|
||
|
||
1. In IP-Symcon **Module Control** öffnen.
|
||
2. **Hinzufügen → Git-Repository**.
|
||
3. URL eingeben und **Installieren**.
|
||
4. IP-Symcon neu starten.
|
||
|
||
---
|
||
|
||
## 4. Instanz anlegen & Konfiguration
|
||
|
||
### 4.1 Instanz anlegen
|
||
|
||
* Rechtsklick **Instanzen** → **Instanz hinzufügen**
|
||
* Filter: **Belevo**
|
||
* Auswahl: **Heizung x-stufig**
|
||
|
||
### 4.2 Properties
|
||
|
||
| Name | Typ | Beschreibung |
|
||
| ------------------------------ | -------------- | ---------------------------------------------------------------- |
|
||
| **Heizungstemperatur_glätten** | Select | Aktiviert die PT1-Glättung der gemessenen Temperatur. |
|
||
| **ZeitKonstante** | NumberSpinner | Zeitkonstante des PT1-Filters in Sekunden. |
|
||
| **Interval** | NumberSpinner | Berechnungsintervall in Sekunden. |
|
||
| **IdleCounterMax** | NumberSpinner | Anzahl der Intervall-Zyklen zwischen zwei Leistungsänderungen. |
|
||
| **Hysterese** | NumberSpinner | Temperatur-Hysterese in °C. |
|
||
| **LeistungsStufen** | List | Liste der verfügbaren Heizstufen mit Leistung und Schaltkontakt. |
|
||
| **Heizungsfuehler** | SelectVariable | Variable mit der aktuellen Temperatur. |
|
||
|
||
---
|
||
|
||
## 5. Statusvariablen & Profile
|
||
|
||
| Ident | Typ | Beschreibung |
|
||
| ---------------------- | ------- | ------------------------------------------------------------------------------ |
|
||
| **PowerSteps** | String | JSON-Array der dem Manager angebotenen Leistungsschritte. |
|
||
| **Aktuelle_Leistung** | Integer | Die aktuell geschaltete Heizleistung. |
|
||
| **Power** | Integer | Die aktuell vom Manager zugewiesene Soll-Leistung. |
|
||
| **Idle** | Boolean | Status der Sperrzeit (`true` = bereit für neue Werte, `false` = gesperrt). |
|
||
| **Bezogene_Energie** | Float | Rechnerisch aufsummierte Energie (Leistung × Zeit). |
|
||
| **PV_Prio** | Integer | Priorität des Verbrauchers für PV-Optimierung, Tiefe Nummer = Hohe Priorität |
|
||
| **Sperre_Prio** | Integer | Priorität des Verbrauchers für Peak-Optimierung, Tiefe Nummer = Hohe Priorität |
|
||
| **Is_Peak_Shaving** | Boolean | Vom Manager übermittelter aktueller Betriebsmodus. |
|
||
| **Heizungstemperatur** | Float | Aktuelle Heiztemperatur (roh oder geglättet). |
|
||
| **Mindesttemperatur** | Integer | Untere Temperaturgrenze. |
|
||
| **Maximaltemperatur** | Integer | Obere Temperaturgrenze. |
|
||
| **Disable** | Boolean | Freigabe des Verbrauchers. |
|
||
| **IdleCounter** | Integer | Interner Zähler für die Sperrzeit. |
|
||
| **Leistung_Delta** | Integer | Interne Variable für Leistungsdifferenzen. |
|
||
|
||
---
|
||
|
||
## 6. WebFront / Bedienung
|
||
|
||
Die Temperaturgrenzen sowie die Prioritäten werden über folgende Variablen eingestellt:
|
||
|
||
`Mindesttemperatur` - Temperatur unter welcher die Heizung zwingend freigegeben wird.
|
||
|
||
`Maximaltemperatur` - Temperatur bis zu welcher PV-Überschüsse zur Wärmeerzeugung genutzt werden dürfen.
|
||
|
||
`Disable` - Freigabe des Verbrauchers.
|
||
|
||
`PV_Prio` - Priorität des Verbrauchers für PV-Optimierung, Tiefe Nummer = Hohe Priorität.
|
||
|
||
`Sperre_Prio` - Priorität des Verbrauchers für Peak-Optimierung, Tiefe Nummer = Hohe Priorität.
|
||
|
||
`PowerSteps` - Dem Manager angebotene mögliche Leistungsstufen.
|
||
|
||
`Aktuelle_Leistung` - Tatsächlich geschaltete Leistung.
|
||
|
||
`Heizungstemperatur` - Aktuelle Temperatur des Speichers oder Boilers.
|
||
|
||
---
|
||
|
||
## 7. Mapping auf Code-Komponenten
|
||
|
||
| Komponente | Funktion im Code (`module.php`) |
|
||
| -------------------------- | ----------------------------------------------------------------------------------------------------------- |
|
||
| **Timer-Registrierung** | `ApplyChanges()` setzt `Timer_Do_UserCalc_Heizung` basierend auf `Interval`. |
|
||
| **Leistungsstufen laden** | `LadeUndSortiereLeistungen()` liest und sortiert die konfigurierten Leistungsstufen. |
|
||
| **PowerSteps Generierung** | `GetCurrentData($Peak)` erstellt die verfügbaren Leistungsstufen abhängig von Temperatur und Betriebsmodus. |
|
||
| **Temperaturglättung** | `GetCurrentData($Peak)` berechnet optional die PT1-gefilterte Temperatur. |
|
||
| **Aktive Stufenerkennung** | `IstEineStufeAktiv()` prüft ob aktuell mindestens eine Heizstufe aktiv ist. |
|
||
| **Leistungszuteilung** | `SetAktuelle_Leistung($power)` schaltet den zugehörigen Schaltkontakt der angeforderten Leistung. |
|
||
| **Kontaktzuordnung** | `GetKontaktIDZuLeistung($leistung)` ermittelt den passenden Schaltkontakt einer Leistungsstufe. |
|
||
| **Idle-Logik** | `ProcessIdleCounter()` verwaltet die Sperrzeit zwischen Leistungsänderungen. |
|
||
|
||
---
|
||
|
||
## 8. Zukünftige Erweiterungen
|
||
|
||
|