This commit is contained in:
@@ -2,56 +2,73 @@
|
||||
|
||||
## Status
|
||||
|
||||
Akzeptiert.
|
||||
Akzeptiert, am 17. September 2026 um getrennte Mindestzeiten erweitert.
|
||||
|
||||
## Kontext
|
||||
|
||||
Das Enelix-1-Modul berechnete seinen Zustand in einem festen Intervall und
|
||||
bildete die Lastwechselsperre ueber `Interval`, `IdleCounterMax` und weitere
|
||||
zyklusabhaengige Zaehler ab. Dieses Verhalten passt nicht zur
|
||||
ereignisbasierten Enelix-2-Kommunikation und machte reale Zeitabstaende von
|
||||
mehreren Properties abhaengig.
|
||||
bildete Lastwechselsperren ueber `Interval`, `IdleCounterMax` und weitere
|
||||
zyklusabhaengige Zaehler ab. Ein erster Enelix-2-Stand ersetzte dies durch
|
||||
einen allgemeinen `Umschaltabstand`. Dieser konnte unterschiedliche
|
||||
Geraeteanforderungen fuer Ein- und Aus-Zustand nicht ausdruecken.
|
||||
|
||||
Bei einem asynchron schaltenden Geraet kann ausserdem der Aktorbefehl nicht als
|
||||
physische Zustandsbestaetigung gelten.
|
||||
|
||||
## Entscheidung
|
||||
|
||||
Der neue `VerbraucherEinStufig` verwendet keine zyklische Regelberechnung.
|
||||
Der `VerbraucherEinStufig` verwendet keine zyklische Regelberechnung.
|
||||
Schaltkontakt, Rueckmeldung, Manager-Vorgabe, Freigabe, Vorgabeablauf und
|
||||
Tagesplanung loesen die Regelung direkt aus.
|
||||
|
||||
Als einziger modulspezifischer Wert fuer die Lastwechselbegrenzung wird
|
||||
`Umschaltabstand` in Sekunden registriert. Der Standardwert ist 5 Sekunden.
|
||||
Das Ende der Sperre wird durch einen einmaligen Timer ausgeloest.
|
||||
Der allgemeine `Umschaltabstand` entfaellt. An seine Stelle treten:
|
||||
|
||||
- `Mindesteinschaltdauer` in Sekunden, Standard 5,
|
||||
- `Mindestausschaltdauer` in Sekunden, Standard 5.
|
||||
|
||||
Die passende Mindestzeit beginnt mit dem bestaetigten Zustandswechsel. Ohne
|
||||
separate Rueckmeldung bestaetigt die Aktorvariable den Wechsel unmittelbar.
|
||||
Mit separater Rueckmeldung beginnt die Mindestzeit erst, wenn deren Wert den
|
||||
Zielzustand erreicht.
|
||||
|
||||
Bis dahin bleiben Istleistung und Leistungsangebot beim rueckgemeldeten
|
||||
Zustand. `SchaltbefehlAusstehend=true`,
|
||||
`AenderungMoeglich=false` und `Schaltbereit=false` machen die laufende
|
||||
Umschaltung fuer den Manager sichtbar.
|
||||
|
||||
Das gemeinsame `Meldeintervall` bleibt erhalten, weil Vertrag `3.0`
|
||||
zusaetzlich zu Ereignismeldungen eine periodische Vollmeldung fordert. Dieser
|
||||
Timer ist kein Regelzyklus.
|
||||
|
||||
Die Tagesmindestlaufzeit wird in realen Sekunden und lokaler Symcon-Zeitzone
|
||||
gezaehlt. Das Modul erzwingt den Betrieb erst zum spaetestmoeglichen Zeitpunkt,
|
||||
an dem die fehlende Laufzeit vor Mitternacht noch erreicht werden kann.
|
||||
gezaehlt. Bei separater Rueckmeldung zaehlt ausschliesslich der bestaetigte
|
||||
Ein-Zustand.
|
||||
|
||||
## Alternativen
|
||||
|
||||
- Ein fester Regelzyklus wurde verworfen, weil Reaktionszeit und Sperrzeit
|
||||
- Ein fester Regelzyklus wurde verworfen, weil Reaktionszeit und Zeitregeln
|
||||
wieder voneinander abhaengen wuerden.
|
||||
- Getrennte Ein- und Ausschaltzeiten wurden verworfen, weil sie fuer diese
|
||||
Adaption nicht freigegeben sind.
|
||||
- Die feste Nachtphase aus Enelix 1 wurde verworfen, weil sie weder
|
||||
konfigurierbar noch Teil der Enelix-2-Spezifikation ist.
|
||||
- Ein allgemeiner Umschaltabstand wurde verworfen, weil Ein- und Aus-Zustand
|
||||
unterschiedliche Mindestzeiten benoetigen koennen.
|
||||
- Der Aktorbefehl als sofortige physische Bestaetigung wurde bei vorhandener
|
||||
Rueckmeldung verworfen.
|
||||
- Ein zusaetzlicher Rueckmelde-Timeout wurde nicht eingefuehrt. Ein
|
||||
ausstehender Befehl bleibt transparent sichtbar, bis ein neues Ereignis den
|
||||
Zustand klaert.
|
||||
|
||||
## Folgen
|
||||
|
||||
- Lastwechsel reagieren ohne Polling auf relevante Ereignisse.
|
||||
- `Interval` und `IdleCounterMax` entfallen.
|
||||
- Der Manager sieht waehrend einer Sperre nur die aktuelle Leistung und
|
||||
`AenderungMoeglich=false`.
|
||||
- Ein optionaler Rueckmeldekontakt muss innerhalb des Umschaltabstands folgen.
|
||||
- Tageslaufzeit und Mindestlaufzeit sind unabhaengig von einer Zyklusdauer.
|
||||
- Das Modul bleibt vollstaendig im Repository Enelix EMS; Enelix Utils erhaelt
|
||||
keine geraetespezifische Logik.
|
||||
- `Interval`, `IdleCounterMax` und `Umschaltabstand` entfallen.
|
||||
- Waerend Mindestzeiten und ausstehenden Rueckmeldungen wird nur die
|
||||
bestaetigte Istleistung angeboten.
|
||||
- Der Manager erhaelt Status und Restmindestzeit als Zustandseintraege.
|
||||
- Eine unerwartete Abweichung zwischen Aktor und Rueckmeldung ausserhalb eines
|
||||
laufenden Schaltvorgangs wird als Stoerung gemeldet.
|
||||
- Tageslaufzeit und Mindestzeiten sind unabhaengig von einer Zyklusdauer.
|
||||
- Das Modul bleibt vollstaendig im Repository Enelix EMS.
|
||||
|
||||
## Offene Punkte
|
||||
|
||||
- Eine spaetere sperrbare Variante wird separat spezifiziert.
|
||||
- Unterschiedliche Ein- und Ausschaltabstaende benoetigen eine neue
|
||||
Architekturentscheidung.
|
||||
- Ein konfigurierbarer Rueckmelde-Timeout benoetigt eine eigene Entscheidung.
|
||||
|
||||
Reference in New Issue
Block a user