Skip to content
Merged
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
66 changes: 34 additions & 32 deletions packages/control/bat_all.py
Original file line number Diff line number Diff line change
Expand Up @@ -291,40 +291,42 @@ def set_power_limit_controllable(self):

def get_power_limit(self):
if self.data.config.bat_control_permitted is False:
return
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 Speicherleistung begrenzen.
if (self.data.config.power_limit_mode != BatPowerLimitMode.NO_LIMIT.value and
len(chargepoint_by_chargemodes) > 0 and
data.data.cp_all_data.data.get.power > 100 and
self.data.get.power_limit_controllable and
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:
self.data.set.power_limit = 0
elif self.data.config.power_limit_mode == BatPowerLimitMode.LIMIT_TO_HOME_CONSUMPTION.value:
self.data.set.power_limit = data.data.counter_all_data.data.set.home_consumption * -1
log.debug(f"Speicher-Leistung begrenzen auf {self.data.set.power_limit/1000}kW")
else:
self.data.set.power_limit = None
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_chargemodes) == 0:
log.debug("Speicher-Leistung nicht begrenzen, "
"da keine Ladepunkte in einem Lademodus mit Netzbezug sind.")
elif data.data.cp_all_data.data.get.power <= 100:
log.debug("Speicher-Leistung nicht begrenzen, da kein Ladepunkt mit Netzbezug lädt.")
elif self.data.get.power_limit_controllable is False:
log.debug("Speicher-Leistung nicht begrenzen, da keine regelbaren Speicher vorhanden sind.")
elif self.data.get.power > 0:
log.debug("Speicher-Leistung nicht begrenzen, da kein Speicher entladen wird.")
elif data.data.counter_all_data.get_evu_counter().data.get.power < control_range_center + 80:
# Wenn der Regelbereich zB auf Bezug steht, darf auch die Leistung des Regelbereichs entladen werden.
log.debug("Speicher-Leistung nicht begrenzen, da EVU-Überschuss vorhanden ist.")
else:
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 Speicherleistung begrenzen.
if (self.data.config.power_limit_mode != BatPowerLimitMode.NO_LIMIT.value and
len(chargepoint_by_chargemodes) > 0 and
data.data.cp_all_data.data.get.power > 100 and
self.data.get.power_limit_controllable and
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:
self.data.set.power_limit = 0
elif self.data.config.power_limit_mode == BatPowerLimitMode.LIMIT_TO_HOME_CONSUMPTION.value:
self.data.set.power_limit = data.data.counter_all_data.data.set.home_consumption * -1
log.debug(f"Speicher-Leistung begrenzen auf {self.data.set.power_limit/1000}kW")
else:
log.debug("Speicher-Leistung nicht begrenzen.")
self.data.set.power_limit = None
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_chargemodes) == 0:
log.debug("Speicher-Leistung nicht begrenzen, "
"da keine Ladepunkte in einem Lademodus mit Netzbezug sind.")
elif data.data.cp_all_data.data.get.power <= 100:
log.debug("Speicher-Leistung nicht begrenzen, da kein Ladepunkt mit Netzbezug lädt.")
elif self.data.get.power_limit_controllable is False:
log.debug("Speicher-Leistung nicht begrenzen, da keine regelbaren Speicher vorhanden sind.")
elif self.data.get.power > 0:
log.debug("Speicher-Leistung nicht begrenzen, da kein Speicher entladen wird.")
elif data.data.counter_all_data.get_evu_counter().data.get.power < control_range_center + 80:
# Wenn der Regelbereich zB auf Bezug steht, darf auch die Leistung des Regelbereichs entladen
# werden.
log.debug("Speicher-Leistung nicht begrenzen, da EVU-Überschuss vorhanden ist.")
else:
log.debug("Speicher-Leistung nicht begrenzen.")
remaining_power_limit = self.data.set.power_limit
for bat_component in get_controllable_bat_components():
if self.data.set.power_limit is None:
Expand Down