# Batterie IP-Symcon-Modul fuer Batteriespeicher im Enelix EMS. Das Modul uebernimmt die Leistungsangebote und SoC-Logik der bisherigen Enelix-Batterie, arbeitet aber ereignisbasiert und schreibt Stellwerte direkt in ausgewaehlte IP-Symcon-Registervariablen. ## Funktionen - positive Leistung bedeutet Laden, negative Leistung bedeutet Entladen - 250-W-Grundraster mit 50-W-Feinwerten zwischen -200 W und +200 W - unterschiedliche Leistungsangebote fuer PV- und Peakbetrieb - Reserve- und Mindestladezustand mit konfigurierbarer Hysterese - direkte Registeransteuerung fuer herstellerunabhaengige Batterien, GoodWe, SolarEdge und Sigenergy - Umschaltung zwischen Wechselrichter- und Enelix-Steuerung - ereignisbasierte Reaktion auf alle ausgewaehlten Messwerte - Managerkommunikation ueber den Enelix-Vertrag 4.0 - Sollwert-Timeout, zeitbasierte Aenderungssperre und periodische Vollmeldung - optionale Diagnosevariablen und Debug-Logging Es gibt keinen zyklischen Regel- oder Berechnungstimer. Timer werden nur fuer Vollmeldungen, den Ablauf einer Manager-Vorgabe und das Ende der Aenderungssperre verwendet. ## Voraussetzungen - IP-Symcon ab Version 8.0 - ein eingerichteter Enelix Manager - numerische Variablen fuer Ladezustand, Netzleistung, Batterieleistung sowie maximale Lade- und Entladeleistung - numerische Registervariablen mit Standard- oder benutzerdefinierter Aktion ## Vorzeichen und Einheiten | Wert | Positiv | Negativ | Einheit | | --- | --- | --- | --- | | Manager-Sollleistung | Laden | Entladen | W | | Batterieleistung | Laden | Entladen | W | | Netzleistung | Netzbezug | Einspeisung | W | | Ladezustand | - | - | % | Sigenergy-Leistungsregister werden in kW beschrieben. Alle anderen Leistungsregister werden in W beschrieben. ## Batterietypen und Register | Batterietyp | Management | Modus | Leistungsregister | | --- | --- | --- | --- | | Herstellerunabhaengig | WR 0, Enelix 1 | Laden 0, Entladen 1 | getrennt Laden/Entladen in W | | GoodWe | WR 1, Enelix 2 | Laden 11, Entladen 12 | gemeinsam, absoluter Wert in W | | SolarEdge | WR 1, Enelix 4 | Laden 3, Entladen 4 | getrennt Laden/Entladen in W | | Sigenergy | WR 0, Enelix 1 | Laden 3, Entladen 6 | getrennt Laden/Entladen in kW | Bei Wechselrichtersteuerung bietet die Batterie dem Manager nur [0] an. Das Modul setzt die Leistungsregister auf 0 und schreibt den passenden Automatikcode in das Managementregister. Die Konfigurationsmaske zeigt nach Wahl des Batterietyps nur die benoetigten Registerauswahlen: - GoodWe: Management, Modus und gemeinsames Leistungsregister - alle anderen Typen: Management, Modus, Ladeleistung und Entladeleistung ## Messwerte | Property | Beschreibung | | --- | --- | | MaxLadeleistungVariableID | Aktuell zulaessige maximale Ladeleistung in W | | MaxEntladeleistungVariableID | Aktuell zulaessige maximale Entladeleistung in W | | LadezustandVariableID | Ladezustand in % | | NetzleistungVariableID | Netzbezug beziehungsweise Einspeisung in W | | IstleistungVariableID | Aktuelle Batterieleistung in W | | MesswertMaxAlter | Maximales Alter jedes Messwertes in Sekunden | Alle Messwerte muessen als Integer- oder Floatvariable vorliegen. Fehlt ein Messwert, ist er veraltet oder liegt der Ladezustand ausserhalb von 0 bis 100 %, meldet sich die Batterie als nicht verfuegbar und bietet nur [0] an. ## Ladezustandslogik ReserveLadezustand entspricht der bisherigen Peakshaving-Reserve. MindestLadezustand schuetzt vor weiterer Entladung. LadezustandHysterese ersetzt die bisher fest im Code hinterlegte 2-Prozent-Hysterese. Die bisherigen betriebsartabhaengigen Angebote bleiben erhalten: - Im PV-Betrieb steht oberhalb der Reserve das gesamte Raster zur Verfuegung. - Unterhalb der Reserve wird die maximale Ladeleistung angeboten. - Bei vollem Speicher werden nur Entladung und 0 angeboten. - Im Peakbetrieb wird oberhalb der Reserve der aus Netz- und aktueller Batterieleistung berechnete Entladewert angeboten. - Innerhalb der Reserve-Hysterese und unterhalb des Mindestladezustands werden Laden und Entladen wie bisher eingeschraenkt. ## Manager und Zeitverhalten Das Modul verwendet den gemeinsamen Enelix-Nachrichtenvertrag 4.0. Betriebsart ist PV oder Peak. Ein Paket mit Sollleistung_W=null kuendigt nur die Betriebsart an und loest die Neuberechnung des Angebots aus. Aenderungssperre ist die ereignisbasierte Entsprechung des frueheren Idle-Counters. Nach einer echten Sollwertaenderung meldet das Modul AenderungMoeglich=false. Ein einmaliger Timer hebt die Sperre nach Ablauf der konfigurierten Sekunden wieder auf. VorgabeTimeout setzt die Register auf 0, wenn der Manager eine Vorgabe nicht rechtzeitig erneuert. Meldeintervall erzeugt nur eine periodische Vollmeldung und fuehrt keinen unabhaengigen Regelzyklus aus. ## Sichtbare Variablen Immer vorhanden: - Aktiv: lokale EMS-Freigabe - Ladestatus: 0 unbekannt, 1 ruhend, 2 laden, 3 entladen Bei aktivierten Diagnosevariablen werden zusaetzlich unter anderem Istleistung, Sollleistung, Ladezustand, Messwertgueltigkeit, Hysterese, Leistungsgrenzen, Energie, Leistungsangebot und der letzte Registerbefehl angezeigt. LoggingEin aktiviert zusaetzliche Meldungen im IP-Symcon-Debugprotokoll. Die Schaltflaeche **Messwerte und Angebot aktualisieren** loest eine sofortige ereignisartige Aktualisierung aus. **Register auf sicheren Zustand setzen** verwirft die aktuelle Vorgabe und schreibt eine Leistung von 0. ## Inbetriebnahme 1. Batterietyp und Steuerung auswaehlen. 2. Alle fuenf Messwertvariablen zuordnen. 3. Die automatisch eingeblendeten Registervariablen zuordnen. 4. Reserve, Mindestladezustand und Hysterese pruefen. 5. Diagnosevariablen und Logging fuer die Erstinbetriebnahme aktivieren. 6. Die Batterie im Manager zuordnen. 7. Aktiv einschalten. 8. Unter Aufsicht je einen Lade-, Entlade- und Nullsollwert senden. 9. Registercodes, Vorzeichen, Einheiten und reale Wechselrichterreaktion kontrollieren. 10. Abschliessend die Wechselrichtersteuerung waehlen und pruefen, dass alle Leistungsregister auf 0 sowie das Managementregister auf Automatik gehen. ## Fehlerbilder - **Konfiguration ungueltig:** Variablentypen, Aktionszuordnung und die fuer den Batterietyp erforderlichen Register pruefen. - **Messwerte fehlen oder sind veraltet:** Variablenaktualisierung und MesswertMaxAlter kontrollieren. - **Register konnten nicht geschrieben werden:** Standard- oder benutzerdefinierte Aktion der Zielvariablen sowie die Geraetekommunikation pruefen. - **Sollwert wird abgewiesen:** Der Wert muss im zuletzt gemeldeten Angebot enthalten und die Aenderungssperre muss abgelaufen sein. ## Tests ~~~bash composer test -- --filter 'Batterie(Regler|Modulstruktur)Test' composer symcon:single -- Batterie composer check ~~~ Der Symcon-Test prueft die Modulinstanz, direkte GoodWe-Registerbefehle, Laden und Entladen, Messwertereignisse sowie die Rueckgabe an die Wechselrichtersteuerung. ## Weiterfuehrende Dokumentation - [Ausfuehrliche Modulbeschreibung](../docs/module/Batterie/README.md) - [Manager-Verbraucher-Schnittstelle](../docs/Schnittstelle.md) - [Migration von Enelix 1](../docs/migration/Batterie.md)