no message

This commit is contained in:
dh
2025-06-12 15:58:11 +02:00
parent 3e18897491
commit ae7f3e4349
3 changed files with 259 additions and 174 deletions
+85 -86
View File
@@ -1,58 +1,66 @@
# Symcon Belevo Energiemanagement Modul
Dieses Modul implementiert das neuartige Energiemanagementsystem von Belevo in IP-Symcon. Es verteilt elektrische Leistung auf mehrere Verbraucher (z. B. Elektroauto-Ladestationen, Boiler, Speicher) dynamisch nach Priorität und Fairness und unterstützt sowohl Solarlade- als auch Peak-Shaving-Betrieb.
Dieses Modul implementiert das neuartige Energiemanagementsystem der Belevo AG in IP-Symcon.
Es verteilt elektrische Leistung auf mehrere Verbraucher (z. B. Elektroauto-Ladestationen, Boiler, Speicher) dynamisch nach Priorität und Fairness. Unterstützt werden:
- **Einzel­haus-Anschlüsse**
- **ZEV/V-ZEV-Verbundsysteme**
- **Lasten­management-Gemeinschaften (LEG)**
---
## Übersicht
## Besonderheiten & Vorteile
- **Manager-Instanz**
Zentrale Logik für Soll-Ist-Vergleich, Priorisierung und Leistungsverteilung.
- **Verbraucher-Instanzen**
Jedes ansteuerbare Gerät (Ladestation, Boiler etc.) ist eine eigene Instanz, die ihre Leistungswünsche über standardisierte Variablen meldet.
- **Vollständige Skalierbarkeit** von Einfamilienhaus über ZEV/V-ZEV bis LEG
- **Standardisierte Schnittstelle** für Manager ↔ Verbraucher (kein ständiges Nachkonfigurieren)
- **Fairness** bei gleicher Priorität durch Round-Robin-Verteilung der Leistungsschritte
- **Bidirektionaler Betrieb** (z. B. Batteriespeicher, bidirektionale Ladestationen)
- **Dynamische Tarif­gestaltung** über Prioritätsklassen
- **Automatisches Peak-Shaving** ohne teure Netzspitzen
- **Einfaches Hinzufügen/Entfernen** von Verbrauchern (aktuell manuell, später automatisch möglich)
---
## Voraussetzungen
- IP-Symcon **≥ 8.0**
- Zugriff auf Git-Repository
- Zugriff auf das Git-Repository
---
## Installation
1. In IP-Symcon **Module Control** öffnen.
2. Auf **“Hinzufügen”** → **Git-Repository”** klicken.
1. In IP-Symcon **Module Control** öffnen
2. **Hinzufügen → Git-Repository**
3. URL eintragen: https://git.belevo.ch/dh/Symcon_Belevo_Energiemanagement_testing.git
4. Modul installieren und neu laden.
4. Modul installieren und IP-Symcon neu starten
---
## 1. Manager-Instanz anlegen
1. Rechtsklick auf **Instanzen****Instanz hinzufügen**
2. Filter: Belevo EMS Manager“
3. Instanz erstellen und aufrufen
2. Filter: **Belevo**
3. **„Manager“** auswählen und Instanz erstellen
### Manager-Eigenschaften
| Property | Typ | Beschreibung |
|-----------------------------------|-----------|--------------------------------------------------------------------------------------------------|
| **Zeit_Zwischen_Zustandswechseln**| Integer | Dauer (Sekunden) zwischen zwei Zustandswechsel-Zyklen (Default: 5 s) |
| **Interval** | Integer | Haupt-Timer-Intervall zur Neuberechnung und Leistungsverteilung (Sekunden) |
| **Sollleistung_Max** | Float | Maximale Gesamtleistung am Netzanschluss (Watt) |
| **Ueberschussleistung** | Float | Untergrenze (Watt) für PV-Überschuss-Mode (→ Solarladen) |
| **HauptmanagerAktiv** | Boolean | Schaltet die Manager-Logik global ein/aus |
| **Verbraucher_Liste** | InstanceList | Liste aller Verbraucher-Instanzen, die der Manager steuern soll |
| Property | Typ | Beschreibung |
|------------------------------------|-----------------|------------------------------------------------------------------------------|
| **Zeit_Zwischen_Zustandswechseln** | Integer (Sek.) | Dauer zwischen zwei Zyklen (Default: 5 s) |
| **Interval** | Integer (Sek.) | Haupt-Timerintervall zur Neuberechnung |
| **Sollleistung_Max** | Float (Watt) | Maximale erlaubte Gesamtleistung am Netzanschluss |
| **Ueberschussleistung** | Float (Watt) | Untergrenze für Solarlade-Mode (z. B. 0 W) |
| **HauptmanagerAktiv** | Boolean | Schaltet die gesamte Manager-Logik ein/aus |
| **Verbraucher_Liste** | InstanceList | Liste aller Verbraucher-Instanzen, die der Manager steuern soll |
### Manager-Statusvariablen
| Ident | Typ | Beschreibung |
|------------------------|---------|-------------------------------------------------------------------|
| **Is_Peak_Shaving** | Boolean | `false` = Solarladen-Mode; `true` = Peak-Shaving-Mode |
| **LetzteBerechnung** | DateTime| Zeitstempel der letzten Zyklus-Ausführung |
| **Aktuelle_Differenz** | Float | Letzte Soll-Ist-Leistungsdifferenz (Watt) |
| Ident | Typ | Beschreibung |
|-------------------------|-----------|------------------------------------------------------------------------------|
| **Is_Peak_Shaving** | Boolean | `true` = Peak-Shaving-Mode; `false` = Solarlade-Mode |
| **LetzteBerechnung** | DateTime | Zeitstempel der letzten Ausführung |
| **Aktuelle_Differenz** | Float (W) | Zuletzt berechnete SollIst-Differenz |
---
@@ -61,82 +69,73 @@ Dieses Modul implementiert das neuartige Energiemanagementsystem von Belevo in I
Für jedes zu steuernde Gerät:
1. Rechtsklick auf **Instanzen****Instanz hinzufügen**
2. Filter: Belevo EMS Verbraucher“
3. Instanz erstellen und aufrufen
2. Filter: **Belevo**
3. **„Belevo EMS Verbraucher“** auswählen und Instanz erstellen
### Verbraucher-Eigenschaften
| Property | Typ | Beschreibung |
|-----------------------|-----------|---------------------------------------------------------------------------|
| **PV_Prio** | Integer | Prioritätsstufe beim Solarladen (niedriger Wert = höhere Priorität) |
| **Sperre_Prio** | Integer | Prioritätsstufe im Peak-Shaving (niedriger Wert = höhere Priorität) |
| **PowerSteps** | String | JSON-Array möglicher Leistungsstufen (z. B. `[2000,4000,6000]` in Watt) |
| Property | Typ | Beschreibung |
|-----------------|------------|----------------------------------------------------------------------------|
| **PV_Prio** | Integer | Priorität im Solarlade-Mode (niedriger = höhere Priorität) |
| **Sperre_Prio** | Integer | Priorität im Peak-Shaving-Mode (niedriger = höhere Priorität) |
| **PowerSteps** | String | JSON-Array möglicher Leistungsstufen in Watt, z. B. `[0,1000,2000]` |
### Verbraucher-Variablen (automatisch angelegt)
### Automatisch angelegte Variablen
| Ident | Typ | Profil | Beschreibung |
|-----------------------|---------|----------|------------------------------------------------------------------------------|
| **Power** | Float | ~Watt~~W~| Aktuell angeforderte Leistung (W) |
| **Aktuelle_Leistung** | Float | ~Watt~~W~| Vom Manager zugewiesene Leistung im aktuellen Zyklus (W) |
| **Bezogene_Energie** | Float | Wh | Kumulierte Energieabnahme seit Zyklusstart (Wh) |
| **Leistung_Delta** | Float | ~Watt~~W~| Differenz zwischen `Power` und `Aktuelle_Leistung` (W) |
| **Idle** | Boolean | — | `true`, wenn keine Anpassung erforderlich war |
| Ident | Typ | Profil | Beschreibung |
|----------------------|----------|--------------|-----------------------------------------------------------------------|
| **Power** | Float | ~Watt~~W~ | Aktuell angeforderte Leistung (W) |
| **Aktuelle_Leistung**| Float | ~Watt~~W~ | Vom Manager zugewiesene Leistung im aktuellen Zyklus (W) |
| **Bezogene_Energie** | Float | Wh | Kumulierte Energieabnahme seit Zyklusstart (Wh) |
| **Leistung_Delta** | Float | ~Watt~~W~ | Differenz zwischen `Power` und `Aktuelle_Leistung` (W) |
| **Idle** | Boolean | — | `true`, wenn Verbraucher gerade keine Änderung benötigt |
---
## 3. Funktionsweise
1. **Zyklischer Aufruf**
— Der Manager-Timer (Interval s) startet den Verteilungszyklus.
2. **Soll-Ist-Berechnung**
— Manager liest `Sollleistung_Max` und summiert alle `Aktuelle_Leistung` der Verbraucher → Istwert I.
— D = Soll I → erforderliche Zuteilung oder Reduktion.
3. **Modus-Entscheid**
- **Solarladen (Is_Peak_Shaving = false):**
• Füllt PV-Überschuss auf bis `Ueberschussleistung`.
• Nutzt `PV_Prio` für Priorisierung.
- **Peak-Shaving (Is_Peak_Shaving = true):**
• D > 0 → reduziert Verbraucher-Leistung nach `Sperre_Prio`.
4. **Priorisierung & Fairness**
- Sortierung nach Priorität (niedrigerer Wert zuerst).
- Bei Gleichpriorität: Verbraucher mit geringerem `Bezogene_Energie` zuerst.
5. **Leistungszuweisung**
- Jeder Verbraucher erhält seine nächsthöhere Stufe aus `PowerSteps`, die ≤ D ist.
- `Aktuelle_Leistung` wird gesetzt, `Bezogene_Energie` und `Leistung_Delta` aktualisiert.
6. **Kommunikation**
- Manager schreibt neue `Aktuelle_Leistung` direkt in die Verbraucher-Variable.
- Verbraucher regeln ihre Hardware (z. B. Ladestrom) entsprechend.
### 3.1 Mode-Entscheid
- In jedem Zyklus liest der Manager den **aktuellen Ist-Netzanschlusswert** (Summe aller `Aktuelle_Leistung`).
- Er berechnet den **Schwellwert** als
Threshold = (Sollleistung_Max + Ueberschussleistung) / 2
markdown
Kopieren
Bearbeiten
- Ist der Ist-Wert **> Threshold**, setzt er **Peak-Shaving** (`Is_Peak_Shaving = true`), sonst **Solarladen** (`false`).
- Diese Boolean teilt er allen Verbrauchern mit, damit sie ihre `PowerSteps`-Arrays entsprechend vorbereiten.
### 3.2 SollIst-Berechnung
- Differenz **D** = `Sollleistung_Max` Ist-Wert
- **D > 0**: Bedarf → Solarlade-Zuteilung
- **D < 0**: Überschuss → Peak-Shaving-Reduktion
### 3.3 Leistungszuweisung
- Für jeden Verbraucher wählt der Manager die **höchste** Stufe aus `PowerSteps`, die die verbleibende Differenz |D| **nicht überschreitet**.
- Er durchläuft die Verbraucher nacheinander (Round-Robin), bis |D| annähernd erschöpft ist.
**Beispiel:**
- Verbraucher A: `[0,1000,2000]`
- Verbraucher B: `[0,500,1500,2000]`
- Differenz D = 3000 W
1. A erhält 1000 W → Rest 2000 W
2. B erhält 1500 W → Rest 500 W
3. Nächster Zyklus oder weitere Verteilschritte mit Rest 500 W
---
## 4. Beispiel-Workflow
## 4. Registrierung der Verbraucher
1. **Manager**:
- `Sollleistung_Max` = 11 000 W
- `Ueberschussleistung` = 0 W
- `Interval` = 5 s
2. **Verbraucher A (E-Auto):**
- `PV_Prio` = 2, `Sperre_Prio` = 3
- `PowerSteps` = `[6000, 4000, 2000]`
3. **Verbraucher B (Boiler):**
- `PV_Prio` = 3, `Sperre_Prio` = 2
- `PowerSteps` = `[6000]`
| Zyklus | Modus | Reihenfolge | Zuteilung A (W) | Zuteilung B (W) |
|--------|----------------|----------------|-----------------|-----------------|
| 1 | Solarladen | A → B | 6000 | 4000 |
| 2 | Solarladen | A → B | 6000 | 4000 |
| … | … | … | … | … |
| Peak | Peak-Shaving | B → A | 6000 (Reduktion)| 4000 (Reduktion)|
- **Aktuell müssen alle Verbraucher manuell** in `Verbraucher_Liste` eingetragen werden.
- **Zukünftige Versionen** werden eine automatische Geräteerkennung unterstützen, so dass neue Verbraucher ohne Konfigurationsaufwand hinzukommen können.
---
## 5. Support & Feedback
## 5. Support & Entwicklung
Bei Problemen oder Feature-Wünschen öffne bitte ein Issue im Git-Repository oder kontaktiere das Entwickler-Team.
---
© 2025 Belevo AG
- **Issues & Feature-Requests** bitte im Git-Repository eröffnen.
- **Entwickler**: Belevo AG