215 lines
8.3 KiB
Markdown
215 lines
8.3 KiB
Markdown
# Symcon Belevo Energiemanagement Modul
|
||
|
||
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:
|
||
|
||
- **Einzelhaus-Anschlüsse**
|
||
- **ZEV/V-ZEV-Verbundsysteme**
|
||
- **Lastenmanagement-Gemeinschaften (LEG)**
|
||
|
||
---
|
||
|
||
## Besonderheiten & Vorteile
|
||
|
||
- **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 Tarifgestaltung** ü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 das Git-Repository
|
||
|
||
---
|
||
|
||
## Installation
|
||
|
||
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 IP-Symcon neu starten
|
||
|
||
---
|
||
|
||
## 1. Manager-Instanz anlegen
|
||
|
||
1. Rechtsklick auf **Instanzen** → **Instanz hinzufügen**
|
||
2. Filter: **Belevo**
|
||
3. **„Manager“** auswählen und Instanz erstellen
|
||
|
||
### Manager-Eigenschaften
|
||
|
||
| 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 | `true` = Peak-Shaving-Mode; `false` = Solarlade-Mode |
|
||
| **LetzteBerechnung** | DateTime | Zeitstempel der letzten Ausführung |
|
||
| **Aktuelle_Differenz** | Float (W) | Zuletzt berechnete Soll–Ist-Differenz |
|
||
|
||
---
|
||
|
||
## 2. Verbraucher-Instanzen anlegen
|
||
|
||
Für jedes zu steuernde Gerät:
|
||
|
||
1. Rechtsklick auf **Instanzen** → **Instanz hinzufügen**
|
||
2. Filter: **Belevo**
|
||
3. **„Belevo EMS Verbraucher“** auswählen und Instanz erstellen
|
||
|
||
### Verbraucher-Eigenschaften
|
||
|
||
| 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]` |
|
||
|
||
### 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 Verbraucher gerade keine Änderung benötigt |
|
||
|
||
---
|
||
|
||
## 3. Funktionsweise
|
||
|
||
### 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 Soll–Ist-Berechnung
|
||
|
||
- Differenz **D** = `Sollleistung_Max` − Ist-Wert
|
||
- **D > 0**: Bedarf → Solarlade-Zuteilung
|
||
- **D < 0**: Überschuss → Peak-Shaving-Reduktion
|
||
|
||
### 3.3 Leistungszuweisung
|
||
|
||
- Zunächst ermittelt der Manager die **Soll–Ist-Differenz**
|
||
```text
|
||
D = Sollleistung_Max − Ist-Netzbezug
|
||
Dann addiert er alle aktuell zugeteilten Verbraucherleistungen zum Sollwert:
|
||
|
||
text
|
||
Kopieren
|
||
Bearbeiten
|
||
GesamtVerteilbareLeistung = D + ∑(bereits zugeteilte Leistungen)
|
||
Die Verbraucher werden nach Priorität und Fairness sortiert:
|
||
|
||
Aufsteigend nach PV_Prio (niedrig = höher)
|
||
|
||
Bei gleicher Priorität Round-Robin anhand Bezogene_Energie (weniger Energie → zuerst)
|
||
|
||
Innerhalb jeder Prioritätsstufe wird ein „Stufen-Array“ aufgebaut, das alle möglichen Leistungsstufen aller Verbraucher enthält, sortiert nach der Reihenfolge, in der sie zugeteilt werden dürfen.
|
||
|
||
Beispiel
|
||
|
||
Gegeben
|
||
|
||
Sollleistung_Max = 0 W, Ist-Netzbezug = –5000 W → D = 5000 W
|
||
|
||
Bereits zugeteilte Leistungen: A=2000 W, B=500 W → GesamtVerteilbareLeistung = 5000 + 2000 + 500 = 7500 W
|
||
|
||
Verbraucher
|
||
|
||
yaml
|
||
Kopieren
|
||
Bearbeiten
|
||
A: [0,1000,2000], Prio 1, Bezogene_Energie 5 kWh, aktuell 2000 W
|
||
B: [0,500,1500,2500], Prio 2, Bezogene_Energie 0 kWh, aktuell 500 W
|
||
C: [0,500,1500,4000], Prio 2, Bezogene_Energie 10 kWh, aktuell 0 W
|
||
D: [0,500,1200,2500], Prio 2, Bezogene_Energie 15 kWh, aktuell 0 W
|
||
E: [0,200,1500], Prio 3, Bezogene_Energie 15 kWh, aktuell 0 W
|
||
Stufen-Array pro Prio
|
||
|
||
yaml
|
||
Kopieren
|
||
Bearbeiten
|
||
Prio 1: A0, A1000, A2000
|
||
Prio 2: B0, C0, D0, B500, C500, D500, D1200, B1500, C1500, B2500, D2500, C4000
|
||
Prio 3: E0, E200, E1500
|
||
Verteilung
|
||
|
||
Prio 1
|
||
|
||
7500 W − 0 W (A0) = 7500 W
|
||
|
||
7500 W − 1000 W (A1000) = 6500 W
|
||
|
||
6500 W − 2000 W (A2000) = 4500 W → A erhält 2000 W
|
||
|
||
Prio 2
|
||
|
||
4500 W − 0 W (B0) = 4500 W
|
||
|
||
4500 W − 0 W (C0) = 4500 W
|
||
|
||
4500 W − 0 W (D0) = 4500 W
|
||
|
||
4500 W − 500 W (B500) = 4000 W
|
||
|
||
4000 W − 500 W (C500) = 3500 W
|
||
|
||
3500 W − 500 W (D500) = 3000 W
|
||
|
||
3000 W − 1200 W (D1200)= 1800 W
|
||
|
||
1800 W − 1500 W (B1500)= 300 W
|
||
|
||
300 W − 1500 W (C1500)= (negativ) → nicht möglich
|
||
→ B erhält 2500 W, C 1500 W, D 1200 W
|
||
|
||
Prio 3
|
||
|
||
Rest 300 W
|
||
|
||
300 W − 0 W (E0) = 300 W
|
||
|
||
300 W − 200 W (E200) = 100 W
|
||
→ E erhält 200 W (Rest 100 W ungenutzt)
|
||
|
||
Fazit: Durch Aufaddieren der bereits verteilten Leistungen vor der Neuverteilung und das schrittweise Abarbeiten der Stufen-Arrays in Prioritäts- und Fairness-Reihenfolge wird die verfügbare Gesamtleistung optimal und gerecht auf alle Verbraucher verteilt.
|
||
|
||
---
|
||
|
||
## 4. Registrierung der Verbraucher
|
||
|
||
- **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 & Entwicklung
|
||
|
||
- **Issues & Feature-Requests** bitte im Git-Repository eröffnen.
|
||
- **Entwickler**: Belevo AG
|