Skip to content

Commit 23ca0a2

Browse files
authored
Active bat control for all modes (#2599)
* active bat control includes all chargemodes * check for cp power * adjust test
1 parent 0aaa56b commit 23ca0a2

3 files changed

Lines changed: 11 additions & 10 deletions

File tree

packages/control/algorithm/chargemodes.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,4 @@
2626
CONSIDERED_CHARGE_MODES_ADDITIONAL_CURRENT = CHARGEMODES[0:10]
2727
CONSIDERED_CHARGE_MODES_MIN_CURRENT = CHARGEMODES[0:-1]
2828
CONSIDERED_CHARGE_MODES_NO_CURRENT = CHARGEMODES[16:18]
29+
CONSIDERED_CHARGE_MODES_CHARGING = CHARGEMODES[0:16]

packages/control/bat_all.py

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
from typing import List, Optional
2424

2525
from control import data
26-
from control.algorithm.chargemodes import CONSIDERED_CHARGE_MODES_ADDITIONAL_CURRENT
26+
from control.algorithm.chargemodes import CONSIDERED_CHARGE_MODES_CHARGING
2727
from control.algorithm.filter_chargepoints import get_chargepoints_by_chargemodes
2828
from control.pv import Pv
2929
from helpermodules.constants import NO_ERROR
@@ -291,14 +291,13 @@ def set_power_limit_controllable(self):
291291
def get_power_limit(self):
292292
if self.data.config.bat_control_permitted is False:
293293
return
294-
chargepoint_by_chagemodes = get_chargepoints_by_chargemodes(CONSIDERED_CHARGE_MODES_ADDITIONAL_CURRENT)
295-
power_of_chargepoints_by_chagemodes = sum(
296-
[cp.data.get.power for cp in chargepoint_by_chagemodes if cp.data.get.power is not None])
294+
chargepoint_by_chargemodes = get_chargepoints_by_chargemodes(CONSIDERED_CHARGE_MODES_CHARGING)
295+
# Falls aktive Steuerung an und Fahrzeuge laden und kein Überschuss im System ist,
296+
# dann Speichereistung begrenzen.
297297
if (self.data.config.power_limit_mode != BatPowerLimitMode.NO_LIMIT.value and
298-
len(chargepoint_by_chagemodes) > 0 and
299-
power_of_chargepoints_by_chagemodes > 0 and
298+
len(chargepoint_by_chargemodes) > 0 and
299+
data.data.cp_all_data.data.get.power > 100 and
300300
self.data.get.power_limit_controllable and
301-
# Nur wenn kein Überschuss im System ist, Speicherleistung begrenzen.
302301
self.data.get.power <= 0 and
303302
data.data.counter_all_data.get_evu_counter().data.get.power >= -100):
304303
if self.data.config.power_limit_mode == BatPowerLimitMode.LIMIT_STOP.value:
@@ -311,10 +310,10 @@ def get_power_limit(self):
311310
control_range_low = data.data.general_data.data.chargemode_config.pv_charging.control_range[0]
312311
control_range_high = data.data.general_data.data.chargemode_config.pv_charging.control_range[1]
313312
control_range_center = control_range_high - (control_range_high - control_range_low) / 2
314-
if len(chargepoint_by_chagemodes) == 0:
313+
if len(chargepoint_by_chargemodes) == 0:
315314
log.debug("Speicher-Leistung nicht begrenzen, "
316315
"da keine Ladepunkte in einem Lademodus mit Netzbezug sind.")
317-
elif power_of_chargepoints_by_chagemodes <= 0:
316+
elif data.data.cp_all_data.data.get.power <= 100:
318317
log.debug("Speicher-Leistung nicht begrenzen, da kein Ladepunkt mit Netzubezug lädt.")
319318
elif self.data.get.power_limit_controllable is False:
320319
log.debug("Speicher-Leistung nicht begrenzen, da keine regelbaren Speicher vorhanden sind.")

packages/control/bat_all_test.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ class Params:
132132

133133

134134
@pytest.mark.parametrize("params", cases, ids=[c.name for c in cases])
135-
def test_get_charging_power_left(params: Params, caplog, data_fixture, monkeypatch):
135+
def test_get_charging_power_left(params: Params, caplog, data_, monkeypatch):
136136
# setup
137137
b_all = BatAll()
138138
b_all.data.get.power = params.power
@@ -195,6 +195,7 @@ def test_get_power_limit(params: PowerLimitParams, data_, monkeypatch):
195195
b_all.data.get.power = params.bat_power
196196
data.data.counter_all_data = hierarchy_standard()
197197
data.data.counter_all_data.data.set.home_consumption = 456
198+
data.data.cp_all_data.data.get.power = 1400
198199
data.data.counter_data["counter0"].data.get.power = params.evu_power
199200
data.data.bat_all_data = b_all
200201

0 commit comments

Comments
 (0)