Skip to content
49 changes: 42 additions & 7 deletions packages/control/bat_all.py
Original file line number Diff line number Diff line change
Expand Up @@ -351,7 +351,13 @@ def _get_charging_power_left(self):
# ev wird nach Speicher geladen
elif config.bat_mode == BatConsiderationMode.EV_MODE.value:
# Speicher sollte weder ge- noch entladen werden.
charging_power_left = self.data.get.power
# 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
Comment on lines +354 to +358
else:
charging_power_left = self.data.get.power
Comment on lines +356 to +360
else:
# Speicher soll geladen werden um min SoC zu erreichen
if self.data.get.soc < config.min_bat_soc:
Expand Down Expand Up @@ -385,14 +391,29 @@ def _get_charging_power_left(self):
# Speicher darf wegen Hysterese bis min_bat_soc entladen werden.
else:
if self.data.set.power_limit is None:
if config.bat_power_discharge_active:
# 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 +394 to +409
# Wenn der Speicher mit mehr als der erlaubten Entladeleistung entladen wird, muss das
# vom Überschuss subtrahiert werden.
charging_power_left = config.bat_power_discharge + self.data.get.power
charging_power_left = config.bat_power_discharge + base_power
log.debug(f"Erlaubte Entlade-Leistung nutzen {charging_power_left}W")
else:
# Speicher sollte weder ge- noch entladen werden.
charging_power_left = self.data.get.power
charging_power_left = base_power
else:
log.debug("Keine erlaubte Entladeleistung freigeben, da der Speicher mit einer vorgegeben "
"Leistung entladen wird.")
Expand All @@ -401,14 +422,28 @@ def _get_charging_power_left(self):
else:
self.data.set.hysteresis_discharge = True
if self.data.set.power_limit is None:
if config.bat_power_discharge_active:
# 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
# Wenn der Speicher mit mehr als der erlaubten Entladeleistung entladen wird, muss das
# vom Überschuss subtrahiert werden.
charging_power_left = config.bat_power_discharge + self.data.get.power
charging_power_left = config.bat_power_discharge + base_power
log.debug(f"Erlaubte Entlade-Leistung nutzen {charging_power_left}W")
else:
# Speicher sollte weder ge- noch entladen werden.
charging_power_left = self.data.get.power
charging_power_left = base_power
else:
log.debug("Keine erlaubte Entladeleistung freigeben, da der Speicher mit einer vorgegeben "
"Leistung entladen wird.")
Expand Down
Loading