From 0398bea623f6c51d0474c85e1d14c64f2bb88d49 Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Fri, 31 Jan 2025 14:44:52 +0100 Subject: [PATCH 1/2] round values for 1A control steps --- .../modules/internal_chargepoint_handler/chargepoint_module.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/modules/internal_chargepoint_handler/chargepoint_module.py b/packages/modules/internal_chargepoint_handler/chargepoint_module.py index f99676a574..863f03a3b4 100644 --- a/packages/modules/internal_chargepoint_handler/chargepoint_module.py +++ b/packages/modules/internal_chargepoint_handler/chargepoint_module.py @@ -57,7 +57,7 @@ def __init__(self, local_charge_point_num: int, def set_current(self, current: float) -> None: with SingleComponentUpdateContext(self.fault_state, update_always=False): - formatted_current = int(current*100) if self._precise_current else int(current) + formatted_current = round(current*100) if self._precise_current else round(current) if self.set_current_evse != formatted_current: self._client.evse_client.set_current(formatted_current) From 6bd28ca0d454057979b185f59bf42b5176a655aa Mon Sep 17 00:00:00 2001 From: LKuemmel Date: Mon, 3 Feb 2025 12:58:41 +0100 Subject: [PATCH 2/2] max deviation not needed anymore --- packages/control/algorithm/surplus_controlled.py | 16 ++++++---------- .../control/algorithm/surplus_controlled_test.py | 2 +- 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/packages/control/algorithm/surplus_controlled.py b/packages/control/algorithm/surplus_controlled.py index 9f814f2dd8..51e0aaa1c7 100644 --- a/packages/control/algorithm/surplus_controlled.py +++ b/packages/control/algorithm/surplus_controlled.py @@ -136,19 +136,15 @@ def _fix_deviating_evse_current(self, chargepoint: Chargepoint) -> float: genutzten Soll-Strom hochgeregelt werden. Wenn Fahrzeuge entgegen der Norm mehr Ladeleistung beziehen, als freigegeben, wird entsprechend weniger freigegeben, da sonst uU die untere Grenze für die Abschaltschwelle nicht erreicht wird. - Wenn die Soll-Stromstärke nicht angepasst worden ist, nicht den ungenutzten EVSE-Strom aufschlagen. Wenn das - Auto nur in 1A-Schritten regeln kann, rundet es und lädt immer etwas mehr oder weniger als Soll-Strom. Schlägt - man den EVSE-Strom auf, pendelt die Regelung um diesen 1A-Schritt.""" - MAX_DEVIATION = 1.1 + Wenn die Soll-Stromstärke nicht angepasst worden ist, nicht den ungenutzten EVSE-Strom aufschlagen.""" evse_current = chargepoint.data.get.evse_current if evse_current and chargepoint.data.set.current != chargepoint.data.set.current_prev: offset = evse_current - max(chargepoint.data.get.currents) - if abs(offset) >= MAX_DEVIATION: - 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: - log.debug(f"Ungenutzten Soll-Strom aufschlagen ergibt {current}A.") - chargepoint.data.set.current = current + 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: + log.debug(f"Ungenutzten Soll-Strom aufschlagen ergibt {current}A.") + chargepoint.data.set.current = current def check_submode_pv_charging(self) -> None: evu_counter = data.data.counter_all_data.get_evu_counter() diff --git a/packages/control/algorithm/surplus_controlled_test.py b/packages/control/algorithm/surplus_controlled_test.py index 1a8c4a11ec..6e50210534 100644 --- a/packages/control/algorithm/surplus_controlled_test.py +++ b/packages/control/algorithm/surplus_controlled_test.py @@ -106,7 +106,7 @@ def test_set_required_current_to_max(phases: int, [ 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.5, id="Auto lädt mit 0.5A Abweichung von der 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,