Skip to content

Commit ecc2d4e

Browse files
committed
let deviation not exceed charge current change limit
1 parent 583a033 commit ecc2d4e

3 files changed

Lines changed: 17 additions & 9 deletions

File tree

packages/control/algorithm/filter_chargepoints.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ def get_chargepoints_by_chargemode(
2929
submode = mode_tuple[1]
3030
prio = mode_tuple[2]
3131

32-
for cp in data.data.cp_data.values():
32+
for cp in data.Data.cp_data.values():
3333
if ((cp.data.control_parameter.prio == prio) and
3434
(cp.data.control_parameter.chargemode == mode or mode is None) and
3535
(cp.data.control_parameter.submode == submode) and

packages/control/algorithm/surplus_controlled.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,7 @@ def _fix_deviating_evse_current(self, chargepoint: Chargepoint) -> float:
120120
evse_current = chargepoint.data.get.evse_current
121121
if evse_current and chargepoint.data.set.current != chargepoint.data.set.current_prev:
122122
offset = evse_current - get_medium_charging_current(chargepoint.data.get.currents)
123+
offset = min(offset, chargepoint.data.set.charging_ev_data.ev_template.data.nominal_difference)
123124
current_with_offset = chargepoint.data.set.current + offset
124125
current = min(current_with_offset, chargepoint.data.control_parameter.required_current)
125126
if current != chargepoint.data.set.current:

packages/control/algorithm/surplus_controlled_test.py

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -100,18 +100,24 @@ def test_set_required_current_to_max(phases: int,
100100

101101

102102
@pytest.mark.parametrize(
103-
"evse_current, limited_current, expected_current",
103+
"evse_current, limited_current, max_current_change, expected_current",
104104
[
105-
pytest.param(None, 6, 6, id="Kein Soll-Strom aus der EVSE ausgelesen"),
106-
pytest.param(13, 13, 13, id="Auto lädt mit Soll-Stromstärke"),
107-
pytest.param(12.5, 12.5, 12.0, id="Auto lädt mit 0.5A Abweichung von der Soll-Stromstärke"),
108-
pytest.param(11.8, 11.8, 10.600000000000001, id="Auto lädt mit mehr als Soll-Stromstärke"),
109-
pytest.param(14.2, 14.2, 15.399999999999999, id="Auto lädt mit weniger als Soll-Stromstärke"),
110-
pytest.param(15, 15, 16,
105+
pytest.param(None, 6, 2, 6, id="Kein Soll-Strom aus der EVSE ausgelesen"),
106+
pytest.param(13, 13, 2, 13, id="Auto lädt mit Soll-Stromstärke"),
107+
pytest.param(12.5, 12.5, 2, 12.0, id="Auto lädt mit 0.5A Abweichung von der Soll-Stromstärke"),
108+
pytest.param(11.8, 11.8, 2, 10.600000000000001, id="Auto lädt mit mehr als Soll-Stromstärke"),
109+
pytest.param(14.2, 14.2, 2, 15.399999999999999,
110+
id="Auto lädt mit weniger als Soll-Stromstärke, "
111+
"diff kleiner als max_current_change, aber EVSE-Begrenzung ist nicht erreicht."),
112+
pytest.param(14.2, 14.2, 1, 15.2,
113+
id="Auto lädt mit weniger als Soll-Stromstärke, "
114+
"diff größer als max_current_change, aber EVSE-Begrenzung ist nicht erreicht."),
115+
pytest.param(15, 15, 2, 16,
111116
id="Auto lädt mit weniger als Soll-Stromstärke, aber EVSE-Begrenzung ist erreicht.")
112117
])
113118
def test_add_unused_evse_current(evse_current: float,
114119
limited_current: float,
120+
max_current_change: float,
115121
expected_current: float):
116122
# setup
117123
c = Chargepoint(0, None)
@@ -120,6 +126,7 @@ def test_add_unused_evse_current(evse_current: float,
120126
c.data.get.evse_current = evse_current
121127
c.data.control_parameter.required_current = 16
122128
c.data.set.current = limited_current
129+
c.data.set.charging_ev_data.ev_template.data.nominal_difference = max_current_change
123130

124131
# execution
125132
SurplusControlled()._fix_deviating_evse_current(c)
@@ -145,7 +152,7 @@ def setup_cp(cp: Chargepoint, submode: str) -> Chargepoint:
145152
cp.data.control_parameter.submode = submode
146153
cp.data.control_parameter.required_current = 6
147154
return cp
148-
data.data.cp_data = {"cp1": setup_cp(mock_cp1, submode_1),
155+
data.Data.cp_data = {"cp1": setup_cp(mock_cp1, submode_1),
149156
"cp2": setup_cp(mock_cp2, submode_2)}
150157

151158
# evaluation

0 commit comments

Comments
 (0)