Skip to content

Improve active bat control - #3395

Merged
LKuemmel merged 11 commits into
openWB:masterfrom
ndrsnhs:improve-active-bat-control
Jun 9, 2026
Merged

LKuemmel merged 11 commits into
openWB:masterfrom
ndrsnhs:improve-active-bat-control

Conversation

@ndrsnhs

@ndrsnhs ndrsnhs commented May 27, 2026

Copy link
Copy Markdown
Contributor

Die erlaubte Entladeleistung des Speichers (Speicherbeachtung) wird ignoriert sobald die aktive Speichersteuerung genutzt wird.
So wird verhindert, dass die Ladeleistung zu hoch eingestellt wird (Speicherentladung soll ja aktiv begrenzt werden)

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Diese PR soll verhindern, dass die konfigurierte “erlaubte Entladeleistung” (bat_power_discharge) bei aktivierter Speichersteuerung zusätzlich in die verfügbare Ladeleistung einfließt (und dadurch die resultierende Ladeleistung zu hoch ausfällt).

Changes:

  • Einführung einer Erkennung “aktive Speichersteuerung” in _get_charging_power_left(), um die Berücksichtigung von bat_power_discharge_active in diesem Fall zu unterdrücken.
  • Anpassung der Berechnung von charging_power_left in zwei SoC/Hysterese-Zweigen.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread packages/control/bat_all.py Outdated
Comment on lines +387 to +390
if self.data.set.power_limit is None:
if config.bat_power_discharge_active:
active_bat_control = (self.data.config.bat_control_permitted and
self.data.config.bat_control_activated)
if config.bat_power_discharge_active and not active_bat_control:
Comment thread packages/control/bat_all.py Outdated
Comment on lines +405 to +408
if self.data.set.power_limit is None:
if config.bat_power_discharge_active:
active_bat_control = (self.data.config.bat_control_permitted and
self.data.config.bat_control_activated)
if config.bat_power_discharge_active and not active_bat_control:

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated 1 comment.

Comment thread packages/control/bat_all.py Outdated
else:
if self.data.set.power_limit is None:
if config.bat_power_discharge_active:
if config.bat_power_discharge_active and not self.data.config.bat_control_activated:
@ndrsnhs
ndrsnhs requested a review from LKuemmel May 27, 2026 09:53
@cr0i

cr0i commented May 28, 2026

Copy link
Copy Markdown
Contributor

Die erlaubte Entladeleistung des Speichers (Speicherbeachtung) wird ignoriert sobald die aktive Speichersteuerung genutzt wird. So wird verhindert, dass die Ladeleistung zu hoch eingestellt wird (Speicherentladung soll ja aktiv begrenzt werden)

Ich gehe davon aus, dass das dann genau entgegen dem Verhalten funktioniert, das man eigentlich haben möchte. Ich hatte das Problem hier gemeldet:
https://forum.openwb.de/viewtopic.php?p=142049#p142049
Es wird im Log zwar behauptet, dass die Entladeleistung nicht gesteuert wird, da mit vorgegebener Leistung entladen wird, es wird dann aber doch die Entladeleistung gesteuert.
Dadurch wird in diesem Fall statt mit der erlaubten Entladeleistung ungefähr mit dem Hausverbrauch entladen, was nicht Sinn der Übung sein sollte.

Es wäre Zeit für eine Grundsatzdiskussion hierzu, da das Problem schon von einigen bemerkt wurde.
Die aktive Speichersteuerung soll beim Laden mit Netzbezug den Speicher schonen. Es soll aber nicht jede Wolke beim Überschussladen zu Netzbezug führen, gerade wenn ich die passive Speichersteuerung nutze.
Ich gehe daher davon aus, dass die Funktion wie sie im Log gemeldet wird, die richtige wäre und nicht die erlaubte Entladung zu ignorieren.
In diesem Zusammenhang wurde noch eine obere Entladeschranke ins Spiel gebracht, die das Problem auch lösen könnte:
https://forum.openwb.de/viewtopic.php?p=142593#p142593

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated 4 comments.

Comment on lines +356 to +360
if (self.data.config.bat_control_activated and
self.data.config.power_limit_mode == BatPowerLimitMode.MODE_CHARGE_PV_PRODUCTION.value):
charging_power_left = 0
else:
charging_power_left = self.data.get.power
Comment on lines +394 to +409
# set allowed power
if (self.data.config.bat_control_activated and
self.data.config.power_limit_mode ==
BatPowerLimitMode.MODE_CHARGE_PV_PRODUCTION.value):
base_power = 0
else:
base_power = self.data.get.power

# Aktive Steuerung nicht konfiguriert oder
# Aktive Steuerung + Preisgrenze aktiv + Grenze nicht unterschritten
# -> dann erlaubte Speicherentladeleistung addieren
power_discharge_allowed = (self.data.config.bat_control_activated is False or
(self.data.config.power_limit_condition ==
BatPowerLimitCondition.PRICE_LIMIT.value and
self.data.set.power_limit is None))
if config.bat_power_discharge_active and power_discharge_allowed:
Comment on lines +425 to +439
# set allowed power
if (self.data.config.bat_control_activated and
self.data.config.power_limit_mode == BatPowerLimitMode.MODE_CHARGE_PV_PRODUCTION.value):
base_power = 0
else:
base_power = self.data.get.power

# Aktive Steuerung nicht konfiguriert oder
# Aktive Steuerung + Preisgrenze aktiv + Grenze nicht unterschritten
# -> dann erlaubte Speicherentladeleistung addieren
power_discharge_allowed = (self.data.config.bat_control_activated is False or
(self.data.config.power_limit_condition ==
BatPowerLimitCondition.PRICE_LIMIT.value and
self.data.set.power_limit is None))
if config.bat_power_discharge_active and power_discharge_allowed:
Comment on lines +354 to +358
# wenn aktive Speichersteuerung in Höhe PV-Leistung lädt
# hat Speicher Priorität vor EV-Ladung
if (self.data.config.bat_control_activated and
self.data.config.power_limit_mode == BatPowerLimitMode.MODE_CHARGE_PV_PRODUCTION.value):
charging_power_left = 0
@ndrsnhs

ndrsnhs commented Jun 8, 2026

Copy link
Copy Markdown
Contributor Author

@cr0i
Der Umzug des Forums macht es etwas schwierig da auf die schnelle nochmal im Detail nachzugucken, da die Links jetzt ins Leere führen. Ich muss dann nochmal das Backup durchsuchen.

Die aktive Speichersteuerung soll beim Laden mit Netzbezug den Speicher schonen. Es soll aber nicht jede Wolke beim Überschussladen zu Netzbezug führen, gerade wenn ich die passive Speichersteuerung nutze.

Doch genau das war die Idee. Die Aktive Speichersteuerung verhindert die Entladung des Speichers. Wenn sie das nicht soll wird sie deaktiviert.
PV-Laden führt im Idealfall nicht zu Bezug. Bezug gibt es bei Wolkendecken und bei Phasenumschaltung. Der Speicher gleicht das durch die Nullpunktausregelung automatisch aus.
Durch die aktive Speichersteuerung kann man nun festlegen, dass dieser Ausgleich aus dem Netz erfolgen soll - entweder wenn ein Fahrzeug lädt oder bei Unterschreitung eines Strompreises. Für mich klingt das absolut sinnvoll:
"Sobald Strom günstig gleiche diese Regelabweichung durch Netzbezug aus."

Dein Text sagt faktisch , dass die aktive Speichersteuerung im PV-Modus komplett ignoriert werden soll.
Klar kann man das softwareseitig natürlich so lösen, das finde ich aber nicht intuitiv. Es nimmt auch die Möglichkeit den gelegentlich unvermeidlich entstehenden Netzbezug bei PV durch das Netz auszugleichen. Das kann ja durchaus gewollt sein.

Deinen Regelwunsch kann man ja ganz einfach lösen indem man Speicher aktiv steuern auf "Nein" setzt. Außer ich übersehe hier etwas essentielles?

@cr0i

cr0i commented Jun 8, 2026 •

Copy link
Copy Markdown
Contributor

Hallo @ndrsnhs ,

wenn es komplett konfigurierbar wird, ob man den Netzbezug aus dem Speicher oder dem Netz bedienen möchte, ist es natürlich genau richtig.
Ich hatte es so verstanden, als wenn die aktive Speichersteuerung über der passiven Speichersteuerung Vorrang bekommen soll, daher mein "Einspruch".
Beim Modus Zielladen hat man ggf. beide Anforderungen, mit Überschuss ohne Netzbezug, zum Ziel ggf. mit Speicherbegrenzung. Daher ist das Ausschalten der aktiven Speichersteuerung nicht die Lösung.
Natürlich sind durch die dynamischen Tarife neue Anforderungen entstanden, die löst Du aber jetzt anscheinend mit diesem PR?

P.S.: Es gibt eine Diskussion, die ggf. dazu passt #3437

@LKuemmel LKuemmel added this to the 2.3.0 milestone Jun 9, 2026
@LKuemmel
LKuemmel merged commit d24f017 into openWB:master Jun 9, 2026
1 check passed
@ndrsnhs

ndrsnhs commented Jun 9, 2026

Copy link
Copy Markdown
Contributor Author

Hi @cr0i ,

Natürlich sind durch die dynamischen Tarife neue Anforderungen entstanden, die löst Du aber jetzt anscheinend mit diesem PR?

Nicht ganz. Mit diesem PR erhält die Aktive Speichersteuerung wirklich Vorrang vor der Passiven. Das ist aus meiner Sicht logisch stringent. Es wird schwer zu erklären warum sich die aktive Speichersteuerung je nach eingestelltem Lademodus komplett anders verhält.
Stell dir vor im Sofortladen wird der Speicher komplett gesperrt. Im PV-Laden aber nicht (gleiches Verhalten wie Speichersteuerung aus). Damit hätte die Einstellung aktive Steuerung an dann gar keinen Effekt. Die Regelabweichung aus dem Netz auszugleichen ist für mich auch ein valider Anwendungsfall - deswegen sollte die aktive Steuerung Vorrang haben.

Auch Abweichung je nach Einstellung der aktiven Steuerung ist schwer vermittelbar. Nach Preisgrenze hat die aktive Speichersteuerung Vorrang, nach angestecktem Fahrzeug nicht... -> unschön.
Wenn ich dem Speicher eine Entladesperre (nach Parametern) vorgebe soll die Entladung auch gesperrt sein. Das würde ich als Anwender jedenfalls erwarten und nicht, dass trotzdem aus dem Speicher geladen wird.

Die obere Entladeschranke die du angesprochen hast halte ich hier für den besseren Weg. Befindet sich der Speicher in einem definierten Bereich der die Entladung erlaubt, dann tut er das.
Das ist dann sicher nachvollziehbarer als wenn das Speicherentladeverhalten an andere Einstellungen oder Lademodi geknüpft ist.

LKuemmel pushed a commit to LKuemmel/core that referenced this pull request Jul 13, 2026
* erlaubte Entladeleistung ignorieren wenn aktive Speichersteuerung eingestellt wurde

* remove bat_control_permitted

* improve passive bat control

* fix identation

* better pv handling

* fix identation

* improve passive bat discharge while active bat control
ndrsnhs added a commit to ndrsnhs/core that referenced this pull request Aug 24, 2026
* erlaubte Entladeleistung ignorieren wenn aktive Speichersteuerung eingestellt wurde

* remove bat_control_permitted

* improve passive bat control

* fix identation

* better pv handling

* fix identation

* improve passive bat discharge while active bat control
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants