From 5a6577df4053b85817ced9b09ef32fcbe0b703d1 Mon Sep 17 00:00:00 2001 From: DanielHaefliger Date: Tue, 12 May 2026 14:34:03 +0200 Subject: [PATCH] Readme allgeiin erweitert um Funktion verteilalgorithmus --- README.md | 104 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) diff --git a/README.md b/README.md index 9a5e184..b19ff47 100644 --- a/README.md +++ b/README.md @@ -37,3 +37,107 @@ Es verteilt elektrische Leistung auf mehrere Verbraucher (z. B. Elektroauto-Lade 5. Ein Managermodul sowie die gewünschen Verbrauchermodule erstellen und konfigurieren. --- + +## 1 Funktionsweise + +### 1.1 Mode-Entscheid + +- In jedem Zyklus liest der Manager den **aktuellen Ist-Netzanschlusswert** (Summe aller `Aktuelle_Leistung`). +- Er berechnet den **Schwellwert** als +Threshold = (Sollleistung_Max + Ueberschussleistung) / 2 + +markdown +Kopieren +Bearbeiten +- Ist der Ist-Wert **> Threshold**, setzt er **Peak-Shaving** (`Is_Peak_Shaving = true`), sonst **Solarladen** (`false`). +- Diese Boolean teilt er allen Verbrauchern mit, damit sie ihre `PowerSteps`-Arrays entsprechend vorbereiten. + +### 1.2 Soll–Ist-Berechnung + +- Differenz **D** = `Sollleistung_Max` − Ist-Wert +- **D > 0**: Bedarf → Solarlade-Zuteilung +- **D < 0**: Überschuss → Peak-Shaving-Reduktion + +### 1.3 Leistungszuweisung + +- Für jeden Verbraucher wählt der Manager die **höchste** Stufe aus `PowerSteps`, die die verbleibende Differenz \|D\| **nicht überschreitet**. +- Er durchläuft die Verbraucher nacheinander (Round-Robin), bis \|D\| annähernd erschöpft ist. + +**Beispiel** +- Verbraucher A: `[0,1000,2000]` Prio 1 5 kWh aktuell 2000 W +- Verbraucher B: `[0,500,1500,2500]` Prio 2 0 kWh aktuell 500 W +- Verbraucher C: `[0,500,1500,4000]` Prio 2 10 kWh aktuell 0 W +- Verbraucher D: `[0,500,1200,2500]` Prio 2 15 kWh aktuell 0 W +- Verbraucher E: `[0,200,1500]` Prio 3 15 kWh aktuell 0 W + +--- + +#### Sortierte Stufen-Arrays + +**Prio 1** +[A0], [A1000], [A2000] + +**Prio 2** +[B0], [C0], [D0], +[B500], [C500], [D500], +[D1200], [B1500], [C1500], +[B2500], [D2500], [C4000] + + +**Prio 3** +[E0], [E200], [E1500] + + +--- + +#### Verteilungsschritte + +1. **Delta berechnen** + - Netzbezug = –5000 W + - Sollwert = 0 W + → Differenz D = 5000 W + +2. **Bereits verteilte Leistungen aufsummieren** + - A = 2000 W + - B = 500 W + → GesamtVerteilbareLeistung = 5000 + 2000 + 500 = **7500 W** + +3. **Prio 1** +7500 − 0 W (A0) = 7500 +7500 − 1000 W (A1000) = 6500 +(6500 + 1000 W vorher) − 2000 W (A2000) = 5500 + +→ A erhält **2000 W** +→ Rest: 5500 W + +4. **Prio 2** +5500 − 0 W (B0) = 5500 +5500 − 0 W (C0) = 5500 +5500 − 0 W (D0) = 5500 +5500 − 500 W (B500) = 5000 +5000 − 500 W (C500) = 4500 +4500 − 500 W (D500) = 4000 +(4000 + 500 W vorher) − 1200 W (D1200) = 3300 +(3300 + 500 W vorher) − 1500 W (B1500) = 2300 +(2300 + 500 W vorher) − 1500 W (C1500) = 1300 +(1300 + 1500 W vorher) − 2500 W (B2500) = 300 +(300 + 1500 W vorher) − 2500 W (C2500) → negativ → nicht möglich + +→ B erhält **2500 W**, C **1500 W**, D **1200 W** +→ Rest: 300 W + +5. **Prio 3** +300 − 0 W (E0) = 300 +300 − 200 W (E200) = 100 + +→ E erhält **200 W** +→ Verteilung beendet (Rest 100 W ungenutzt) + +--- + +Durch dieses Verfahren – Auf­addierung der bereits verteilten Leistungen, Sortierung nach Priorität und Fairness sowie sukzessive Abarbeitung der Stufen-Arrays – wird die **Gesamtleistung optimal und gerecht** auf alle Verbraucher verteilt. + + +## Für das oben beschriebene Verteilverfahren ist ein Patentanmeldeverfahren für den Europäischen Raum im Gange (25207583.3 - 1002) +## Anmelder/Patentinhaber ist die Belevo AG +