Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 12 additions & 2 deletions packages/control/bat_all.py
Original file line number Diff line number Diff line change
Expand Up @@ -579,8 +579,18 @@ def get_power_limit(self):
self.data.set.power_limit = data.data.counter_all_data.data.set.home_consumption * -1
log.debug(f"Speicher-Leistung begrenzen auf {self.data.set.power_limit/1000}kW")
elif self.data.config.power_limit_mode == BatPowerLimitMode.MODE_CHARGE_PV_PRODUCTION.value:
self.data.set.power_limit = data.data.pv_all_data.data.get.power * -1
log.debug(f"Speicher in Höhe des PV-Ertrags laden: {self.data.set.power_limit/1000}kW")
# PV-Überschuss abzüglich Hausverbrauch als Ladeleistung des Speichers nutzen.
# Bei geringem Überschuss wird Hausverbrauch durch Speicher ausgeglichen
pv_power = min(data.data.pv_all_data.data.get.power, 0)
left_pv_power = (pv_power +
data.data.counter_all_data.data.set.home_consumption) * -1
self.data.set.power_limit = left_pv_power
if self.data.set.power_limit > 0:
log.debug("Speicher in Höhe des verbliebenen PV-Überschusses "
f"laden: {self.data.set.power_limit/1000}kW")
else:
log.debug("Speicher Entladen um Hausverbrauch zu decken: "
f"{self.data.set.power_limit/1000}kW")
elif charge_mode == BatChargeMode.BAT_FORCE_CHARGE:
# maximal konfigurierte Ladeleistung des Speichers setzen
max_charge_power_total = 0
Expand Down
13 changes: 9 additions & 4 deletions packages/control/bat_all_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -192,6 +192,8 @@ class BatControlParams:
bat_power: float = -10
bat_soc: float = 50.0
evu_power: float = 200
pv_power: float = -654
bat_control_permitted: bool = True
bat_control_activated: bool = True
max_charge_power: float = 5000
max_discharge_power: float = -5000
Expand Down Expand Up @@ -219,7 +221,7 @@ class BatControlParams:
power_limit_condition=BatPowerLimitCondition.MANUAL.value,
bat_manual_mode=ManualMode.MANUAL_LIMIT.value,
power_limit_mode=BatPowerLimitMode.MODE_DISCHARGE_HOME_CONSUMPTION.value),
BatControlParams("Manuelle Steuerung, Ladung PV Überschuss", 654,
BatControlParams("Manuelle Steuerung, Ladung PV Überschuss", 198,
power_limit_condition=BatPowerLimitCondition.MANUAL.value,
bat_manual_mode=ManualMode.MANUAL_LIMIT.value,
power_limit_mode=BatPowerLimitMode.MODE_CHARGE_PV_PRODUCTION.value),
Expand All @@ -237,8 +239,11 @@ class BatControlParams:
power_limit_mode=BatPowerLimitMode.MODE_NO_DISCHARGE.value),
BatControlParams("Fahrzeuge laden, Begrenzung Hausverbrauch", -456,
power_limit_mode=BatPowerLimitMode.MODE_DISCHARGE_HOME_CONSUMPTION.value),
BatControlParams("Fahrzeuge laden, Ladung PV Überschuss", 654,
BatControlParams("Fahrzeuge laden, Ladung PV Überschuss", 198,
power_limit_mode=BatPowerLimitMode.MODE_CHARGE_PV_PRODUCTION.value),
BatControlParams("Fahrzeuge laden, Ladung PV Überschuss, Eigenverbrauch PV-Anlage", -456,
power_limit_mode=BatPowerLimitMode.MODE_CHARGE_PV_PRODUCTION.value,
pv_power=100),
]


Expand All @@ -261,7 +266,7 @@ def test_active_bat_control(params: BatControlParams, data_, monkeypatch):
# b_all.data.get.soc = 50.0
data.data.counter_all_data = hierarchy_standard()
data.data.counter_all_data.data.set.home_consumption = 456
data.data.pv_all_data.data.get.power = -654
data.data.pv_all_data.data.get.power = params.pv_power
data.data.cp_all_data.data.get.power = 1400
data.data.counter_data["counter0"].data.get.power = params.evu_power
data.data.bat_all_data = b_all
Expand Down Expand Up @@ -296,7 +301,7 @@ def test_active_bat_control(params: BatControlParams, data_, monkeypatch):
price_limit_activated=True,
price_limit=0.30,
power_limit_mode=BatPowerLimitMode.MODE_NO_DISCHARGE.value),
BatControlParams("Preisgrenze, Überschuss Laden, Grenze unterschritten", 654,
BatControlParams("Preisgrenze, Überschuss Laden, Grenze unterschritten", 198,
power_limit_condition=BatPowerLimitCondition.PRICE_LIMIT.value,
price_limit_activated=True,
price_limit=0.30,
Expand Down
Loading