Files
Enelix-EMS/docs/adr/0002-verbraucher-einstufig-eventbasiert.md
T
2026-09-17 10:23:39 +00:00

75 lines
3.0 KiB
Markdown

# ADR 0002: Verbraucher 1-Stufig arbeitet ereignisbasiert
## Status
Akzeptiert, am 17. September 2026 um getrennte Mindestzeiten erweitert.
## Kontext
Das Enelix-1-Modul berechnete seinen Zustand in einem festen Intervall und
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 `VerbraucherEinStufig` verwendet keine zyklische Regelberechnung.
Schaltkontakt, Rueckmeldung, Manager-Vorgabe, Freigabe, Vorgabeablauf und
Tagesplanung loesen die Regelung direkt aus.
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. Bei separater Rueckmeldung zaehlt ausschliesslich der bestaetigte
Ein-Zustand.
## Alternativen
- Ein fester Regelzyklus wurde verworfen, weil Reaktionszeit und Zeitregeln
wieder voneinander abhaengen wuerden.
- 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`, `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.
- Ein konfigurierbarer Rueckmelde-Timeout benoetigt eine eigene Entscheidung.