Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
16 commits
Select commit Hold shift + click to select a range
4083947
let deviation not exceed charge current change limit
tpd-opitz Apr 16, 2026
d443f88
Merge branch 'openWB:master' into feature/deviating_current_respects_…
tpd-opitz Apr 16, 2026
c521305
max current change is constant rather then configuration
tpd-opitz Apr 21, 2026
6153c04
Merge branch 'openWB:master' into feature/deviating_current_respects_…
tpd-opitz Apr 23, 2026
b3e93db
Merge branch 'openWB:master' into feature/deviating_current_respects_…
tpd-opitz Apr 28, 2026
a89eea8
Merge branch 'openWB:master' into feature/deviating_current_respects_…
tpd-opitz Apr 29, 2026
b68f16d
Merge branch 'openWB:master' into feature/deviating_current_respects_…
tpd-opitz May 1, 2026
9532b71
Merge branch 'openWB:master' into feature/deviating_current_respects_…
tpd-opitz May 5, 2026
a5fcead
Merge branch 'openWB:master' into feature/deviating_current_respects_…
tpd-opitz May 6, 2026
505e750
Merge branch 'openWB:master' into feature/deviating_current_respects_…
tpd-opitz May 7, 2026
b5c2f3a
Merge branch 'openWB:master' into feature/deviating_current_respects_…
tpd-opitz May 7, 2026
7a41504
Merge branch 'openWB:master' into feature/deviating_current_respects_…
tpd-opitz May 11, 2026
ad58b00
Merge branch 'openWB:master' into feature/deviating_current_respects_…
tpd-opitz May 13, 2026
7604313
Merge branch 'openWB:master' into feature/deviating_current_respects_…
tpd-opitz May 15, 2026
8b52e14
Merge branch 'openWB:master' into feature/deviating_current_respects_…
tpd-opitz May 18, 2026
980350f
Merge branch 'openWB:master' into feature/deviating_current_respects_…
tpd-opitz May 18, 2026
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
5 changes: 4 additions & 1 deletion packages/control/algorithm/surplus_controlled.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import logging
from typing import List, Optional, Tuple
from typing import List, Optional, Tuple, Final

from control import data
from control.algorithm import common
Expand All @@ -20,6 +20,8 @@

log = logging.getLogger(__name__)

MAX_EVSE_CURRENT_CHANGE: Final[float] = 2 # Ampere


class SurplusControlled:

Expand Down Expand Up @@ -120,6 +122,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, MAX_EVSE_CURRENT_CHANGE)
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
9 changes: 7 additions & 2 deletions packages/control/algorithm/surplus_controlled_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,12 @@ def test_set_required_current_to_max(phases: int,
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(14.2, 14.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.5, 14.2, 15.7,
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, 16,
id="Auto lädt mit weniger als Soll-Stromstärke, aber EVSE-Begrenzung ist erreicht.")
])
Expand Down Expand Up @@ -145,7 +150,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