feat(batterie): Nachladeleistung begrenzen
Tests / test (push) Successful in 48s

This commit is contained in:
dh
2026-10-01 15:56:23 +00:00
parent 6cd7bf19f5
commit 8d83b083bf
9 changed files with 173 additions and 14 deletions
+10 -5
View File
@@ -52,7 +52,8 @@ final class BatterieRegler
float $netzleistungW,
float $istleistungW,
float $maxLadenW,
float $maxEntladenW
float $maxEntladenW,
?float $maxNachladenW = null
): array {
self::pruefeLadezustandsgrenzen($reserve, 0.0);
if ($minimum < 0.0 || $minimum > 100.0 || $minimum > $reserve) {
@@ -61,12 +62,16 @@ final class BatterieRegler
);
}
self::pruefeLeistungsgrenzen($maxLadenW, $maxEntladenW);
if ($maxNachladenW !== null && $maxNachladenW < 0.0) {
throw new InvalidArgumentException('Maximale Nachladeleistung darf nicht negativ sein.');
}
if (!$aktiv || !$enelixSteuert) {
return [0];
}
$maxLaden = (int) floor($maxLadenW);
$maxNachladen = (int) floor(min($maxLadenW, $maxNachladenW ?? $maxLadenW));
$maxEntladen = (int) floor($maxEntladenW);
if ($peakbetrieb) {
if ($ladezustand > $reserve && !$hystereseAktiv) {
@@ -80,10 +85,10 @@ final class BatterieRegler
return self::leistungsbereich(-$maxEntladen, 0);
}
if ($ladezustand > $minimum) {
return self::leistungsbereich(-$maxEntladen, $maxLaden);
return self::leistungsbereich(-$maxEntladen, $maxNachladen);
}
return self::leistungsbereich(0, $maxLaden);
return self::leistungsbereich(0, $maxNachladen);
}
if ($ladezustand > 99.0) {
@@ -93,10 +98,10 @@ final class BatterieRegler
return self::leistungsbereich(-$maxEntladen, $maxLaden);
}
if ($ladezustand >= $reserve && $hystereseAktiv) {
return self::leistungsbereich(0, $maxLaden);
return self::leistungsbereich(0, $maxNachladen);
}
return [$maxLaden];
return [$maxNachladen];
}
/**