Readme allgeiin erweitert um Funktion verteilalgorithmus
This commit is contained in:
@@ -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 – Aufaddierung 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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user