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
16 changes: 9 additions & 7 deletions packages/control/bat_all.py
Original file line number Diff line number Diff line change
Expand Up @@ -417,10 +417,11 @@ def get_charging_power_left_diff(self):
absolute_bat_discharge_power)
log.debug(f"Erlaubte Entlade-Leistung nutzen {charging_power_left}W")
else:
# Entladung nicht erlaubt: die eigene Speicherleistung darf nicht ans Fahrzeug
# weitergereicht werden, sonst wird der Speicher entladen, obwohl der Nutzer das
# nicht erlaubt hat.
charging_power_left = 0
# Entladung nicht erlaubt: nur eine tatsächliche Entladung darf nicht ans
# Fahrzeug weitergereicht werden, sonst wird der Speicher entladen, obwohl der
# Nutzer das nicht erlaubt hat. Lädt der Speicher dagegen, bleibt diese Leistung
# weiterhin für ihn reserviert.
charging_power_left = max(base_power, 0)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Das heißt, oberhalb des Max-SoCs gibt es kein eindeutigen Fahrzeug oder Speicher-Vorrang mehr, sondern first come first served?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Ja, richtig beobachtet - aber keine neue Eigenschaft von diesem PR. Im Band (hysteresis_discharge=True) gab es noch nie eine feste Priorität zwischen Fahrzeug und Speicher; charging_power_left spiegelt einfach, was der Speicher gerade tut. Vor #3986 war das ja schon = base_power und mit #3986 hatte ich das in diesem Zweig versehentlich auf 0 gesetzt, wodurch auch die berechtigte Ladereservierung für den Speicher verloren ging. Dieser PR stellt nur das Vorzeichen-Verhalten wieder her, ändert aber nichts an der fehlenden festen Priorität selbst.

Ob der Speicher im Band einen festen Vorrang bekommen soll, symmetrisch zu #3986 beim Aufstieg, ist strukturell identisch mit #3985 (der ist ja noch offen) und dort schon mit @ndrsnhs offen diskutiert, ohne Entscheidung. Ich würde #4116 unabhängig davon als Bugfix mergen - die Vorrang-Frage weiter auf #3985/#3980 klären.

else:
log.debug("Keine erlaubte Entladeleistung freigeben, da der Speicher mit einer vorgegeben "
"Leistung entladen wird.")
Expand Down Expand Up @@ -456,10 +457,11 @@ def get_charging_power_left_diff(self):
absolute_bat_discharge_power)
log.debug(f"Erlaubte Entlade-Leistung nutzen {charging_power_left}W")
else:
# Entladung nicht erlaubt: die eigene Speicherleistung darf nicht ans Fahrzeug
# Entladung nicht erlaubt: nur eine tatsächliche Entladung darf nicht ans Fahrzeug
# weitergereicht werden, sonst wird der Speicher entladen, obwohl der Nutzer das
# nicht erlaubt hat.
charging_power_left = 0
# nicht erlaubt hat. Lädt der Speicher dagegen, bleibt diese Leistung weiterhin für
# ihn reserviert.
charging_power_left = max(base_power, 0)
else:
log.debug("Keine erlaubte Entladeleistung freigeben, da der Speicher mit einer vorgegeben "
"Leistung entladen wird.")
Expand Down
4 changes: 2 additions & 2 deletions packages/control/bat_all_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,7 @@ class Params:
Params("Mindest-SoC, SoC erreicht, Entladung nicht erlaubt, Speicher entlädt trotzdem",
ChargemodeConfigBat(mode="min_soc_bat_mode"), -500, 90, 0, False),
Params("Mindest-SoC, SoC erreicht, Entladung nicht erlaubt, Speicher lädt",
ChargemodeConfigBat(mode="min_soc_bat_mode"), 500, 90, 0, False),
ChargemodeConfigBat(mode="min_soc_bat_mode"), 500, 90, 500, False),
Params("Mindest-SoC, SoC erreicht, Speicher ist voll",
ChargemodeConfigBat(mode="min_soc_bat_mode"), 0, 100, 0, False),
Params("Mindest-SoC, SoC erreicht, Entladung in Auto, Speicher entlädt, Entladeleistung nicht erreicht",
Expand Down Expand Up @@ -172,7 +172,7 @@ class Params:
Params(("Mindest-SoC, Hysterese, Entladung nicht erlaubt, Speicher entlädt trotzdem"),
ChargemodeConfigBat(mode="min_soc_bat_mode"), -500, 60, 0, False, hysteresis_discharge=True),
Params(("Mindest-SoC, Hysterese, Entladung nicht erlaubt, Speicher lädt"),
ChargemodeConfigBat(mode="min_soc_bat_mode"), 500, 60, 0, False, hysteresis_discharge=True),
ChargemodeConfigBat(mode="min_soc_bat_mode"), 500, 60, 500, False, hysteresis_discharge=True),
]


Expand Down
Loading