Skip to content
Open
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
1 change: 1 addition & 0 deletions packages/control/algorithm/surplus_controlled.py
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,7 @@ def _fix_deviating_evse_current(self, chargepoint: Chargepoint) -> float:
evse_current = chargepoint.data.get.evse_current
if evse_current and chargepoint.data.set.current != chargepoint.data.set.current_prev:
offset = evse_current - get_medium_charging_current(chargepoint.data.get.currents)
offset = min(offset, chargepoint.data.set.charging_ev_data.ev_template.data.nominal_difference)
current_with_offset = chargepoint.data.set.current + offset
current = min(current_with_offset, chargepoint.data.control_parameter.required_current)
if current != chargepoint.data.set.current:
Expand Down
23 changes: 15 additions & 8 deletions packages/control/algorithm/surplus_controlled_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -100,18 +100,24 @@ def test_set_required_current_to_max(phases: int,


@pytest.mark.parametrize(
"evse_current, limited_current, expected_current",
"evse_current, limited_current, max_current_change, expected_current",
[
pytest.param(None, 6, 6, id="Kein Soll-Strom aus der EVSE ausgelesen"),
pytest.param(13, 13, 13, id="Auto lädt mit Soll-Stromstärke"),
pytest.param(12.5, 12.5, 12.0, id="Auto lädt mit 0.5A Abweichung von der Soll-Stromstärke"),
pytest.param(11.8, 11.8, 10.600000000000001, id="Auto lädt mit mehr als Soll-Stromstärke"),
pytest.param(14.2, 14.2, 15.399999999999999, id="Auto lädt mit weniger als Soll-Stromstärke"),
pytest.param(15, 15, 16,
pytest.param(None, 6, 2, 6, id="Kein Soll-Strom aus der EVSE ausgelesen"),
pytest.param(13, 13, 2, 13, id="Auto lädt mit Soll-Stromstärke"),
pytest.param(12.5, 12.5, 2, 12.0, id="Auto lädt mit 0.5A Abweichung von der Soll-Stromstärke"),
pytest.param(11.8, 11.8, 2, 10.600000000000001, id="Auto lädt mit mehr als Soll-Stromstärke"),
pytest.param(14.2, 14.2, 2, 15.399999999999999,
id="Auto lädt mit weniger als Soll-Stromstärke, "
"diff kleiner als max_current_change, aber EVSE-Begrenzung ist nicht erreicht."),
pytest.param(14.2, 14.2, 1, 15.2,
id="Auto lädt mit weniger als Soll-Stromstärke, "
"diff größer als max_current_change, aber EVSE-Begrenzung ist nicht erreicht."),
pytest.param(15, 15, 2, 16,
id="Auto lädt mit weniger als Soll-Stromstärke, aber EVSE-Begrenzung ist erreicht.")
])
def test_add_unused_evse_current(evse_current: float,
limited_current: float,
max_current_change: float,
expected_current: float):
# setup
c = Chargepoint(0, None)
Expand All @@ -120,6 +126,7 @@ def test_add_unused_evse_current(evse_current: float,
c.data.get.evse_current = evse_current
c.data.control_parameter.required_current = 16
c.data.set.current = limited_current
c.data.set.charging_ev_data.ev_template.data.nominal_difference = max_current_change

# execution
SurplusControlled()._fix_deviating_evse_current(c)
Expand All @@ -145,7 +152,7 @@ def setup_cp(cp: Chargepoint, submode: str) -> Chargepoint:
cp.data.control_parameter.submode = submode
cp.data.control_parameter.required_current = 6
return cp
data.data.cp_data = {"cp1": setup_cp(mock_cp1, submode_1),
data.Data.cp_data = {"cp1": setup_cp(mock_cp1, submode_1),
"cp2": setup_cp(mock_cp2, submode_2)}

# evaluation
Expand Down
Loading