diff --git a/packages/control/bat_all.py b/packages/control/bat_all.py index 7c3e9fd21d..255858a658 100644 --- a/packages/control/bat_all.py +++ b/packages/control/bat_all.py @@ -417,10 +417,11 @@ def get_charging_power_left_diff(self): absolute_bat_discharge_power) log.debug(f"Erlaubte Entlade-Leistung nutzen {charging_power_left}W") else: - # Entladung nicht erlaubt: die eigene Speicherleistung darf nicht ans Fahrzeug - # weitergereicht werden, sonst wird der Speicher entladen, obwohl der Nutzer das - # nicht erlaubt hat. - charging_power_left = 0 + # Entladung nicht erlaubt: nur eine tatsächliche Entladung darf nicht ans + # Fahrzeug weitergereicht werden, sonst wird der Speicher entladen, obwohl der + # Nutzer das nicht erlaubt hat. Lädt der Speicher dagegen, bleibt diese Leistung + # weiterhin für ihn reserviert. + charging_power_left = max(base_power, 0) else: log.debug("Keine erlaubte Entladeleistung freigeben, da der Speicher mit einer vorgegeben " "Leistung entladen wird.") @@ -456,10 +457,11 @@ def get_charging_power_left_diff(self): absolute_bat_discharge_power) log.debug(f"Erlaubte Entlade-Leistung nutzen {charging_power_left}W") else: - # Entladung nicht erlaubt: die eigene Speicherleistung darf nicht ans Fahrzeug + # Entladung nicht erlaubt: nur eine tatsächliche Entladung darf nicht ans Fahrzeug # weitergereicht werden, sonst wird der Speicher entladen, obwohl der Nutzer das - # nicht erlaubt hat. - charging_power_left = 0 + # nicht erlaubt hat. Lädt der Speicher dagegen, bleibt diese Leistung weiterhin für + # ihn reserviert. + charging_power_left = max(base_power, 0) else: log.debug("Keine erlaubte Entladeleistung freigeben, da der Speicher mit einer vorgegeben " "Leistung entladen wird.") diff --git a/packages/control/bat_all_test.py b/packages/control/bat_all_test.py index b877c058ac..0985f3e6c5 100644 --- a/packages/control/bat_all_test.py +++ b/packages/control/bat_all_test.py @@ -131,7 +131,7 @@ class Params: Params("Mindest-SoC, SoC erreicht, Entladung nicht erlaubt, Speicher entlädt trotzdem", ChargemodeConfigBat(mode="min_soc_bat_mode"), -500, 90, 0, False), Params("Mindest-SoC, SoC erreicht, Entladung nicht erlaubt, Speicher lädt", - ChargemodeConfigBat(mode="min_soc_bat_mode"), 500, 90, 0, False), + ChargemodeConfigBat(mode="min_soc_bat_mode"), 500, 90, 500, False), Params("Mindest-SoC, SoC erreicht, Speicher ist voll", ChargemodeConfigBat(mode="min_soc_bat_mode"), 0, 100, 0, False), Params("Mindest-SoC, SoC erreicht, Entladung in Auto, Speicher entlädt, Entladeleistung nicht erreicht", @@ -172,7 +172,7 @@ class Params: Params(("Mindest-SoC, Hysterese, Entladung nicht erlaubt, Speicher entlädt trotzdem"), ChargemodeConfigBat(mode="min_soc_bat_mode"), -500, 60, 0, False, hysteresis_discharge=True), Params(("Mindest-SoC, Hysterese, Entladung nicht erlaubt, Speicher lädt"), - ChargemodeConfigBat(mode="min_soc_bat_mode"), 500, 60, 0, False, hysteresis_discharge=True), + ChargemodeConfigBat(mode="min_soc_bat_mode"), 500, 60, 500, False, hysteresis_discharge=True), ]