Ich habe eine Instanz von Controller.Ess.EmergencyCapacityReserve mit meiner ESS verbunden und sehe auch den schönen Slider bei meiner ESS im UI.
Allerdings lässt der Controller die ESS fröhlich unter den ReserveSOC Werte fallen.
Vernutlich liegt das daran, dass ich nicht weiß, wem der Controller Bescheid sagen möchte, dass nicht mehr entladen werden soll.
Also auf welchem Kanal schickt EmergencyCapacityReserve Nachrichten, wenn der ReserveSOC unterschritten ist?
Und, zweite Frage, kommt es zu Konflikten in der Entlade-Steuerung, wenn ein zweiter Controller Controller.Symmetric.Balancing auf die ESS wirkt?
Wenn ich das recht verstehe, nutzt der Controller über die setActivePowerLessOrEquals-Methoden ebenfalls die applyPower-Methode welche in der Implemntierung zum ManagedEss vorhanden sein muss.
ich bin kein Experte…aber vermutlich wird man schlauer wenn man sich zum fraglichen Zeitpunkt mal die Logs anschaut und prüft ob die Constraints erfüllt wurden.
Die Frage welcher Controller “gewinnt” wenn mehrere auf das ESS einreden, finde ich ebenfalls sehr spannend und war kurz davor einen Thread zu eröffnen
Ich habe mir, zusätzlich zum Balancing-, jetzt noch den DelayCharge-Controller konfiguriert. Das ESS soll den SoC von 100% erst um 15 Uhr erreichen. Bisher lädt es bei 92% immer noch fröhlich mit maximalem Strom weiter…
Gruß,
klinki
Das Bild von dort zeigt, wie (vereinfacht) die mögliche Leistung des Speichers als Intervall von -50 bis +50 kW definiert ist. Gemäß der Reihenfolge im Scheduler können die Controller dann Constraints anlegen, um dieses Intervall einzuschränken. Im Beispiel sagt der “Limit Total Discharge” Controller, dass mit mindestens 5 kW beladen werden soll (SetActivePowerLessOrEquals -5000). Ein niedriger priorisierter BalancingController, möchte gerne mit 20 kW entladen - das ist aber nicht erlaubt, also “gewinnt” -5000. Würde der Balancing mit 10 kW beladen wollen, würde -10000 gewinnen.
Der Standard-All-Alphabetically-Scheduler sortiert nicht explizit konfigurierte Controller alphabetisch. Das hat den Nachteil, dass der ctrlBalancing0 meistens im Standard zu weit oben steht.
Ich habe mal 3 controller in die Scheduler-Liste eingefügt und kann schon mal sagen:
Wenn der DelayCharge-Controller höher in der Liste steht, weist er den BalancingController in seine Grenzen. Sprich: Die Batterie wird langsamer geladen als der Balancing-Controller eigentlich “wollen” würde.
Den ReserveController habe ich auch mal eingefügt. Auf das Ergebnis werde ich bis morgen warten müssen. Schließlich muss das System ja auch etwas leisten: bei den Temperaturen hat so eine Wärmepumpe viel Hunger…
Bei den Controllern muss ich Dir recht geben: die Logik ist nicht einfach zu verstehen. Es hat gedauert bis ich den Pid-Regler im BalancingController gefunden habe und debuggen konnte.
Aber mit jedem Schritt erschließt sich mir mehr. Diese Power-Komponente im Ess ist wirklich eine clevere Lösung!
Wobei ich noch weit davon entfernt bin das “große Ganze” zu verstehen…
Diese Geschichte zum Beispiel hat mich Wochen und sehr viel Kaffee gekostet.
Danke für die Rückmeldung. Ich werde das mal testen mit der Reihenfolge.
Da bin ich ja beruhigt, dass das nicht nur mir so geht, mit der Komplexität.
Ich bin gerade dabei meine ESS zur ModbusComonent aufzurüsten und Du hast die Reise ja offenbar schon hinter Dir
Kann ich Dich per PM um ein oder zwei Tipps dazu bitten? Mir ist noch nicht ganz klar wie ich einen simulierten WR in OpenEMS aktiviere und mit dem sprechen kann.
Der Reserve-Controller funktioniert. Hat brav bis an die 12% Marke entladen. Heute morgen auf 5% gesetzt und er entlädt weiter.
Nur über das UI funktioniert der “enable”-Schalter nicht. Man muss dafür in die Konfiguration des Controllers. Aber damit kann man leben.
Klar, kannst mich auch direkt anschreiben. Wenn es aber der Community nutzen kann, dann diskutieren wir lieber hier…Du entscheidest
Mit der Simulation habe ich bisher allerdings wenig gemacht. Viele Problematiken bezogen sich auch eher auf das was SolarEdge am SunSpec-Protokoll vorbei unternommen hat. Das geht zumeist nur am lebenden Objekt.
Hast Du denn schon ein GitHub-Konto?
Hier mein Fork mit Link auf meine Ess-Entwicklung für Solaredge
Ich habe mitlerweile erfolgreich von ModbusComponent abgeleitet und mittels des ModbusSlaveSimulator zumindest lesend getestet. Hat nur 6 Stunden gedauert und hinterher fragt man sich was so schwer daran war.
Mein persönlichen Hürden waren:
fehlende setModbus()
fehlende ModbusComponent.channelIds
falsche super().activate Methode
Modbus Bridge nicht in Felix aktiviert
Mit Github bin ich leider noch nicht sehr erfahren, ist aber auf meiner ToDo Liste.
PS:
Der Button für Code-Blöcke ist aus meinem Editor hier verschwunden.
Gibt’s dafür eine Erklärung?