Skip to content
Merged
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/chargemodes.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,3 +26,4 @@
CONSIDERED_CHARGE_MODES_ADDITIONAL_CURRENT = CHARGEMODES[0:10]
CONSIDERED_CHARGE_MODES_MIN_CURRENT = CHARGEMODES[0:-1]
CONSIDERED_CHARGE_MODES_NO_CURRENT = CHARGEMODES[16:18]
CONSIDERED_CHARGE_MODES_CHARGING = CHARGEMODES[0:16]
17 changes: 8 additions & 9 deletions packages/control/bat_all.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
from typing import List, Optional

from control import data
from control.algorithm.chargemodes import CONSIDERED_CHARGE_MODES_ADDITIONAL_CURRENT
from control.algorithm.chargemodes import CONSIDERED_CHARGE_MODES_CHARGING
from control.algorithm.filter_chargepoints import get_chargepoints_by_chargemodes
from control.pv import Pv
from helpermodules.constants import NO_ERROR
Expand Down Expand Up @@ -288,14 +288,13 @@ def set_power_limit_controllable(self):
def get_power_limit(self):
if self.data.config.bat_control_permitted is False:
return
chargepoint_by_chagemodes = get_chargepoints_by_chargemodes(CONSIDERED_CHARGE_MODES_ADDITIONAL_CURRENT)
power_of_chargepoints_by_chagemodes = sum(
[cp.data.get.power for cp in chargepoint_by_chagemodes if cp.data.get.power is not None])
chargepoint_by_chargemodes = get_chargepoints_by_chargemodes(CONSIDERED_CHARGE_MODES_CHARGING)
# Falls aktive Steuerung an und Fahrzeuge laden und kein Überschuss im System ist,
# dann Speichereistung begrenzen.
if (self.data.config.power_limit_mode != BatPowerLimitMode.NO_LIMIT.value and
len(chargepoint_by_chagemodes) > 0 and
power_of_chargepoints_by_chagemodes > 0 and
len(chargepoint_by_chargemodes) > 0 and
Copy link
Contributor

@LKuemmel LKuemmel Jul 28, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Soll die Speicher-Entladung gesperrt werden, sobald ein LP in einem Lademodus ist, in dem geladen werden kann oder nur, wenn wirklich geladen wird, also data.data.cp_all_data.data.get.power > 100?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nur wenn wirklich geladen wird:
Prüfung wie bisher mit: power_of_chargepoints_by_chagemodes > 0

Die Prüfung auf data.data.cp_all_data.data.get.power ist vermutlich effizienter. Aufsummierung vorher gab es nur, da nur die LP mit additional current berücksichtigt wurden.

data.data.cp_all_data.data.get.power > 100 and
self.data.get.power_limit_controllable and
# Nur wenn kein Überschuss im System ist, Speicherleistung begrenzen.
self.data.get.power <= 0 and
data.data.counter_all_data.get_evu_counter().data.get.power >= -100):
if self.data.config.power_limit_mode == BatPowerLimitMode.LIMIT_STOP.value:
Expand All @@ -308,10 +307,10 @@ def get_power_limit(self):
control_range_low = data.data.general_data.data.chargemode_config.pv_charging.control_range[0]
control_range_high = data.data.general_data.data.chargemode_config.pv_charging.control_range[1]
control_range_center = control_range_high - (control_range_high - control_range_low) / 2
if len(chargepoint_by_chagemodes) == 0:
if len(chargepoint_by_chargemodes) == 0:
log.debug("Speicher-Leistung nicht begrenzen, "
"da keine Ladepunkte in einem Lademodus mit Netzbezug sind.")
elif power_of_chargepoints_by_chagemodes <= 0:
elif data.data.cp_all_data.data.get.power <= 100:
log.debug("Speicher-Leistung nicht begrenzen, da kein Ladepunkt mit Netzubezug lädt.")
elif self.data.get.power_limit_controllable is False:
log.debug("Speicher-Leistung nicht begrenzen, da keine regelbaren Speicher vorhanden sind.")
Expand Down
3 changes: 2 additions & 1 deletion packages/control/bat_all_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@ class Params:


@pytest.mark.parametrize("params", cases, ids=[c.name for c in cases])
def test_get_charging_power_left(params: Params, caplog, data_fixture, monkeypatch):
def test_get_charging_power_left(params: Params, caplog, data_, monkeypatch):
# setup
b_all = BatAll()
b_all.data.get.power = params.power
Expand Down Expand Up @@ -195,6 +195,7 @@ def test_get_power_limit(params: PowerLimitParams, data_, monkeypatch):
b_all.data.get.power = params.bat_power
data.data.counter_all_data = hierarchy_standard()
data.data.counter_all_data.data.set.home_consumption = 456
data.data.cp_all_data.data.get.power = 1400
data.data.counter_data["counter0"].data.get.power = params.evu_power
data.data.bat_all_data = b_all

Expand Down