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.
|
||||
|
||||
@@ -1,27 +1,28 @@
|
||||
# Migration von Verbraucher_1_Stufig
|
||||
|
||||
Das Enelix-1-Modul wird nicht in-place aktualisiert. Das neue Modul verwendet
|
||||
eine neue Modul-ID, den Vertrag `3.0` und eine ereignisbasierte Regelung.
|
||||
eine neue Modul-ID, Vertrag `3.0` und eine ereignisbasierte Regelung.
|
||||
|
||||
## Eigenschaften
|
||||
|
||||
| Enelix 1 | Enelix 2 | Migration |
|
||||
| Enelix 1 / bisheriges Enelix 2 | Aktuelles Enelix 2 | Migration |
|
||||
| --- | --- | --- |
|
||||
| `BoilerLeistung` | `Nennleistung` | Wert in ganzen Watt uebernehmen. |
|
||||
| `Schaltkontakt1` | `SchaltkontaktVariableID` | Boolean-Aktor uebernehmen und Aktion pruefen. |
|
||||
| nicht vorhanden | `SchaltkontaktInvertiert` | Nur bei umgekehrter Aktorlogik aktivieren. |
|
||||
| nicht vorhanden | `RueckmeldungVariableID` | Optional eine echte Boolean-Rueckmeldung zuordnen. |
|
||||
| `Mindesttlaufzeit` | `Mindestlaufzeit` | Alter Wert war in Minuten gedacht; fuer gleiches Verhalten mit 60 multiplizieren und als Sekunden eintragen. |
|
||||
| `Zeit_Zwischen_Zustandswechseln` | `Umschaltabstand` | Alte Minuten nicht uebernehmen. Neuen Sekundenwert bewusst festlegen; Standard ist 5 s. |
|
||||
| `Interval` | entfaellt | Keine zyklische Regelberechnung mehr. |
|
||||
| `IdleCounterMax` | entfaellt | Keine zyklusbasierte Idle-Erkennung mehr. |
|
||||
| `Mindesttlaufzeit` | `Mindestlaufzeit` | Alten Minutenwert fuer gleiches Verhalten mit 60 multiplizieren. |
|
||||
| `Zeit_Zwischen_Zustandswechseln` | `Mindesteinschaltdauer`, `Mindestausschaltdauer` | Alte Minuten nicht ungeprueft uebernehmen; beide Sekundenwerte geraetespezifisch setzen. |
|
||||
| `Umschaltabstand` aus fruehem Enelix 2 | `Mindesteinschaltdauer`, `Mindestausschaltdauer` | Der alte Wert wird nicht automatisch uebertragen; beide Werte haben Standard 5 s. |
|
||||
| `Interval` | entfaellt | Keine zyklische Regelberechnung. |
|
||||
| `IdleCounterMax` | entfaellt | Keine zyklusbasierte Idle-Erkennung. |
|
||||
|
||||
## Variablen und Verhalten
|
||||
|
||||
| Enelix 1 | Enelix 2 |
|
||||
| Alt | Aktuell |
|
||||
| --- | --- |
|
||||
| `DailyOnTime` | `Tageslaufzeit` in echten Sekunden |
|
||||
| `IstNacht` | entfaellt; Mindestlaufzeit wird am spaetestmoeglichen Start des lokalen Kalendertags erzwungen |
|
||||
| `DailyOnTime` | `Tageslaufzeit` in bestaetigten echten Sekunden |
|
||||
| `IstNacht` | entfaellt; Tagesmindestlaufzeit wird spaetestmoeglich erzwungen |
|
||||
| `IsTimerActive` | entfaellt; interne einmalige Timer |
|
||||
| `Aktuelle_Leistung` | gemeinsames `Istleistung` |
|
||||
| `Power` | gemeinsames `Sollleistung` |
|
||||
@@ -32,25 +33,25 @@ eine neue Modul-ID, den Vertrag `3.0` und eine ereignisbasierte Regelung.
|
||||
| `Leistung_Delta` | entfaellt; Leistungsverteilung liegt im Manager |
|
||||
| `Idle`, `IdleCounter` | entfallen |
|
||||
|
||||
Die feste Enelix-1-Nachtzeit von 22:00 bis 07:00 wird nicht uebernommen.
|
||||
Enelix 2 plant nur den Zeitpunkt, ab dem die verbleibende Mindestlaufzeit vor
|
||||
dem lokalen Tagesende zwingend eingeschaltet werden muss.
|
||||
Bei konfigurierter Rueckmeldung bestimmt nicht mehr der ausgegebene
|
||||
Aktorbefehl, sondern erst der rueckgemeldete Zustand die Istleistung, die
|
||||
Tageslaufzeit und den Start der jeweiligen Mindestzeit.
|
||||
|
||||
## Inbetriebnahme
|
||||
|
||||
1. Bestehende Instanzkonfiguration und aktuelle Aktorlogik dokumentieren.
|
||||
2. Neue Instanz **Verbraucher 1-Stufig** anlegen.
|
||||
1. Bestehende Instanzkonfiguration und Aktorlogik dokumentieren.
|
||||
2. Neue Instanz **Verbraucher 1-Stufig** anlegen oder die bestehende
|
||||
Enelix-2-Instanz aktualisieren.
|
||||
3. Leistung, Aktor, Invertierung und optional Rueckmeldung konfigurieren.
|
||||
4. Mindestlaufzeit von Minuten in Sekunden umrechnen.
|
||||
5. `Umschaltabstand` neu in Sekunden festlegen; nicht den alten Minutenwert
|
||||
kopieren.
|
||||
4. Tagesmindestlaufzeit gegebenenfalls von Minuten in Sekunden umrechnen.
|
||||
5. Mindest-Ein- und Mindest-Aus-Zeit getrennt anhand der Geraeteanforderungen
|
||||
setzen.
|
||||
6. Neue Instanz im Enelix-2-Manager aktiv zuordnen.
|
||||
7. Bei ausgeschalteter lokaler EMS-Freigabe Ein/Aus und Rueckmeldung
|
||||
beaufsichtigt pruefen.
|
||||
8. Alte Instanz erst deaktivieren, danach `Aktiv` an der neuen Instanz
|
||||
einschalten.
|
||||
9. Mindestens einen Timeout, einen verhinderten Lastwechsel und einen
|
||||
Tageswechsel kontrollieren.
|
||||
7. Ein- und Ausschalten zuerst ohne reale Last oder unter Aufsicht pruefen.
|
||||
8. Bei separater Rueckmeldung kontrollieren, dass
|
||||
`SchaltbefehlAusstehend` erst mit deren Zustandswechsel verschwindet.
|
||||
9. Mindestens je einen verhinderten Ein- und Ausschaltvorgang testen.
|
||||
10. Tageslaufzeit und Tageswechsel kontrollieren.
|
||||
|
||||
## Rueckkehr
|
||||
|
||||
|
||||
@@ -3,9 +3,10 @@
|
||||
> Status: implementiert fuer IP-Symcon 8 und den Enelix-2-Vertrag `3.0`.
|
||||
|
||||
Das Modul schaltet einen elektrischen Ein-/Aus-Verbraucher. Im freien Zustand
|
||||
meldet es dem Manager das Leistungsangebot `[0, Nennleistung]`. Waehrend der
|
||||
Umschaltsperre und bei lokal erzwungener Mindestlaufzeit wird nur der aktuell
|
||||
zulaessige Leistungswert angeboten.
|
||||
meldet es dem Manager das Leistungsangebot `[0, Nennleistung]`. Waerend einer
|
||||
Mindest-Ein- oder Mindest-Aus-Zeit, waehrend einer ausstehenden Rueckmeldung
|
||||
und bei lokal erzwungener Tagesmindestlaufzeit wird nur der aktuelle
|
||||
bestaetigte Leistungswert angeboten.
|
||||
|
||||
## Architekturentscheidung
|
||||
|
||||
@@ -14,18 +15,19 @@ Die Regelung ist ereignisbasiert. Neuberechnungen werden ausgeloest durch:
|
||||
- eine neue Manager-Vorgabe,
|
||||
- eine Aenderung an Schaltkontakt oder optionaler Rueckmeldung,
|
||||
- das Ein- oder Ausschalten der lokalen EMS-Freigabe,
|
||||
- das Ende des Umschaltabstands,
|
||||
- das Ende der zustandsabhaengigen Mindestzeit,
|
||||
- das Ablaufen einer Manager-Vorgabe,
|
||||
- den naechsten relevanten Zeitpunkt der Tageslaufzeitplanung.
|
||||
|
||||
Es gibt keinen Regelzyklus, kein `Interval` und keinen `IdleCounterMax`.
|
||||
`Meldeintervall` bleibt als vertraglich geforderte periodische Vollmeldung
|
||||
bestehen und steuert keine Regelberechnung.
|
||||
Es gibt keinen Regelzyklus, kein `Interval`, keinen `IdleCounterMax` und
|
||||
keinen allgemeinen `Umschaltabstand`. `Meldeintervall` bleibt als
|
||||
vertraglich geforderte periodische Vollmeldung bestehen und steuert keine
|
||||
Regelberechnung.
|
||||
|
||||
## Properties
|
||||
|
||||
Zu den sechs gemeinsamen Verbraucher-Properties aus
|
||||
[`Schnittstelle.md`](../../Schnittstelle.md) kommen sieben
|
||||
[`Schnittstelle.md`](../../Schnittstelle.md) kommen acht
|
||||
Modul-Properties hinzu.
|
||||
|
||||
| Ident | Typ | Standard | Beschreibung |
|
||||
@@ -33,14 +35,19 @@ Modul-Properties hinzu.
|
||||
| `Nennleistung` | Integer | `0` | Positive elektrische Leistung in W. |
|
||||
| `SchaltkontaktVariableID` | Integer | `0` | Boolean-Aktor mit Standard- oder benutzerdefinierter Aktion. |
|
||||
| `SchaltkontaktInvertiert` | Boolean | `false` | Kehrt die Ein-/Aus-Semantik des Aktors um. |
|
||||
| `RueckmeldungVariableID` | Integer | `0` | Optionale Boolean-Rueckmeldung; `true` bedeutet eingeschaltet. |
|
||||
| `RueckmeldungVariableID` | Integer | `0` | Optionale Boolean-Rueckmeldung; `true` bedeutet physisch eingeschaltet. |
|
||||
| `Mindestlaufzeit` | Integer | `0` | Geforderte Laufzeit pro lokalem Kalendertag in Sekunden, maximal 86400. |
|
||||
| `Umschaltabstand` | Integer | `5` | Sekunden bis zum naechsten erlaubten Lastwechsel. |
|
||||
| `DiagnosevariablenAnzeigen` | Boolean | `false` | Legt gemeinsame Diagnosevariablen und `Rueckmeldefehler` an. |
|
||||
| `Mindesteinschaltdauer` | Integer | `5` | Mindestzeit in Sekunden, die ein bestaetigter Ein-Zustand gehalten wird. |
|
||||
| `Mindestausschaltdauer` | Integer | `5` | Mindestzeit in Sekunden, die ein bestaetigter Aus-Zustand gehalten wird. |
|
||||
| `DiagnosevariablenAnzeigen` | Boolean | `false` | Legt gemeinsame und modulspezifische Diagnosevariablen an. |
|
||||
|
||||
Beide Mindestzeiten duerfen `0` sein. Die lokale Aktion `Aktiv=false`
|
||||
bleibt der einzige bewusste Override und schaltet sicher aus, auch wenn die
|
||||
Mindesteinschaltdauer noch laeuft.
|
||||
|
||||
`EinstellungenInVisu` ist Teil der gemeinsamen Verbraucherbasis. Das Modul
|
||||
besitzt derzeit keine zusaetzlichen bedienbaren Einstellvariablen und wertet
|
||||
diese Property deshalb noch nicht weiter aus.
|
||||
diese Property deshalb nicht weiter aus.
|
||||
|
||||
## Variablen
|
||||
|
||||
@@ -49,10 +56,10 @@ Immer sichtbar:
|
||||
| Ident | Typ / Zugriff | Beschreibung |
|
||||
| --- | --- | --- |
|
||||
| `Aktiv` | Boolean / bedienbar | Lokale EMS-Freigabe; Startwert `false`. |
|
||||
| `Schaltzustand` | Boolean / Anzeige | Rueckgemeldeter oder aus dem Aktor berechneter Zustand. |
|
||||
| `Tageslaufzeit` | Integer / Anzeige | Laufzeit des lokalen Kalendertags in Sekunden. |
|
||||
| `Schaltzustand` | Boolean / Anzeige | Bestaetigter oder aus dem Aktor berechneter Zustand. |
|
||||
| `Tageslaufzeit` | Integer / Anzeige | Bestaetigte Laufzeit des lokalen Kalendertags in Sekunden. |
|
||||
|
||||
Mit `DiagnosevariablenAnzeigen` werden diese Variablen zusaetzlich angelegt:
|
||||
Mit `DiagnosevariablenAnzeigen` werden zusaetzlich angelegt:
|
||||
|
||||
- `Istleistung`
|
||||
- `Leistungsquelle`
|
||||
@@ -63,47 +70,83 @@ Mit `DiagnosevariablenAnzeigen` werden diese Variablen zusaetzlich angelegt:
|
||||
- `Stoerung`
|
||||
- `Stoertext`
|
||||
- `Rueckmeldefehler`
|
||||
- `SchaltbefehlAusstehend`
|
||||
- `RestMindestzeit`
|
||||
|
||||
Die Regellogik arbeitet mit persistenten Attributen und ist nicht von der
|
||||
Sichtbarkeit der Diagnosevariablen abhaengig.
|
||||
|
||||
## Zeit- und Schaltverhalten
|
||||
## Mindest-Ein- und Mindest-Aus-Zeit
|
||||
|
||||
Nach jedem Lastwechsel wird `AenderungMoeglich=false` gemeldet und das
|
||||
Leistungsangebot auf den aktuellen Wert eingeschraenkt. Nach
|
||||
`Umschaltabstand` Sekunden gibt ein einmaliger Timer den naechsten
|
||||
Lastwechsel frei. Der Standardwert betraegt 5 Sekunden.
|
||||
Nach einer bestaetigten Einschaltung wird fuer
|
||||
`Mindesteinschaltdauer` Sekunden kein regulaeres Ausschalten angeboten. Nach
|
||||
einer bestaetigten Ausschaltung blockiert `Mindestausschaltdauer` ein
|
||||
regulaeres Einschalten.
|
||||
|
||||
Waerend einer Mindestzeit gilt:
|
||||
|
||||
- `AenderungMoeglich=false`,
|
||||
- `Schaltbereit=false`,
|
||||
- `RestMindestzeit_s` enthaelt die verbleibenden Sekunden,
|
||||
- `Leistungswerte_W` enthaelt nur die bestaetigte Istleistung.
|
||||
|
||||
Ein einmaliger Timer loest am Ende der Mindestzeit genau eine Neuberechnung
|
||||
aus. Der fruehere allgemeine `Umschaltabstand` ist vollstaendig entfallen.
|
||||
|
||||
## Rueckmeldung und Schaltbereitschaft
|
||||
|
||||
Ohne separate Rueckmeldung wird der logische Zustand der Aktorvariable als
|
||||
sofortige Schaltbestaetigung verwendet.
|
||||
|
||||
Mit `RueckmeldungVariableID` ist ausschliesslich deren Booleanwert fuer
|
||||
`Schaltzustand`, `Istleistung_W`, Tageslaufzeit und den Beginn der
|
||||
Mindestzeit massgeblich. Nach einem Aktorbefehl und vor der passenden
|
||||
Rueckmeldung meldet das Modul:
|
||||
|
||||
- die bisherige bestaetigte Istleistung,
|
||||
- `SchaltbefehlAusstehend=true`,
|
||||
- `Schaltbereit=false`,
|
||||
- `AenderungMoeglich=false`,
|
||||
- nur den bisherigen Leistungswert in `Leistungswerte_W`.
|
||||
|
||||
Sobald die Rueckmeldung den Zielzustand bestaetigt, beginnt die passende
|
||||
Mindest-Ein- oder Mindest-Aus-Zeit. Es gibt bewusst keinen zusaetzlichen
|
||||
zyklischen Rueckmelde-Timeout. Bleibt die Rueckmeldung aus, bleibt der
|
||||
Schaltbefehl sichtbar ausstehend.
|
||||
|
||||
Weichen Aktor- und Rueckmeldezustand ohne ausstehenden Schaltbefehl voneinander
|
||||
ab, wird `Rueckmeldefehler=true`, `Verfuegbar=false` und eine Stoerung
|
||||
gemeldet.
|
||||
|
||||
## Tagesmindestlaufzeit
|
||||
|
||||
Die Tageslaufzeit wird mit der in IP-Symcon eingestellten lokalen Zeitzone
|
||||
gefuehrt. Sommer- und Winterzeit sowie der Wechsel um Mitternacht werden
|
||||
beruecksichtigt. Ist die konfigurierte Mindestlaufzeit noch nicht erreicht,
|
||||
wird der Verbraucher erst zum spaetestmoeglichen Zeitpunkt lokal
|
||||
eingeschaltet, an dem die Restlaufzeit bis Mitternacht noch erfuellt werden
|
||||
kann. In dieser Phase meldet er `AenderungMoeglich=false`.
|
||||
beruecksichtigt. Nur der bestaetigte Ein-Zustand zaehlt.
|
||||
|
||||
Bei Aktivierung sehr kurz vor Tagesende kann eine unmoeglich hohe Restlaufzeit
|
||||
naturgemaess nicht mehr vollstaendig nachgeholt werden. Der Verbraucher wird
|
||||
dann sofort eingeschaltet und die tatsaechliche Laufzeit erfasst.
|
||||
|
||||
## Rueckmeldung und Fehler
|
||||
|
||||
Ohne separate Rueckmeldung wird der Schaltzustand aus der Aktorvariable
|
||||
berechnet. Mit `RueckmeldungVariableID` wartet das Modul bis zum Ende des
|
||||
Umschaltabstands auf den angeforderten Zustand. Liegt er dann nicht an, werden
|
||||
`Rueckmeldefehler=true`, `Stoerung=true` und `Verfuegbar=false` gemeldet.
|
||||
|
||||
Die Istleistung ist immer berechnet: `0` oder `Nennleistung`. Deshalb wird
|
||||
`Leistungsquelle=1` gemeldet, auch wenn der Boolean-Schaltzustand ueber eine
|
||||
physische Rueckmeldung erfasst wird.
|
||||
Ist die konfigurierte Tagesmindestlaufzeit noch nicht erreicht, wird der
|
||||
Verbraucher zum spaetestmoeglichen Zeitpunkt angefordert, an dem die
|
||||
Restlaufzeit bis Mitternacht noch erfuellt werden kann. Eine noch aktive
|
||||
Mindestausschaltdauer hat dabei Vorrang; eine unmoegliche Restlaufzeit kann
|
||||
nicht rueckwirkend nachgeholt werden.
|
||||
|
||||
## Managerkommunikation
|
||||
|
||||
Das Modul implementiert
|
||||
`VerbraucherSchnittstelle::ManagerdatenEmpfangen()` und verwendet
|
||||
ausschliesslich den Vertrag `3.0`. Der Verbraucher besitzt keine
|
||||
ausschliesslich Vertrag `3.0`. Der Verbraucher besitzt keine
|
||||
Manager-ID-Property. Er akzeptiert nur Manager, in deren manueller oder
|
||||
automatischer Verbraucherzuordnung seine Instanz aktiv eingetragen ist.
|
||||
|
||||
Neben den gemeinsamen Vertragsfeldern werden diese Zustaende gemeldet:
|
||||
|
||||
- `Schaltzustand`
|
||||
- `SchaltbefehlAusstehend`
|
||||
- `Schaltbereit`
|
||||
- `RestMindestzeit_s`
|
||||
- `Tageslaufzeit_s`
|
||||
- `Rueckmeldefehler`
|
||||
|
||||
Rueckmeldungen erfolgen bei relevanten Ereignissen, kurz verzoegert nach einer
|
||||
Manager-Vorgabe und zusaetzlich alle `Meldeintervall` Sekunden. Eine Vorgabe
|
||||
wird nach `VorgabeTimeout` Sekunden ohne Erneuerung ungueltig.
|
||||
@@ -116,16 +159,14 @@ wird nach `VorgabeTimeout` Sekunden ohne Erneuerung ungueltig.
|
||||
2. Unter **Instanz hinzufuegen** nach **Verbraucher 1-Stufig** suchen und eine
|
||||
Instanz anlegen.
|
||||
3. `Nennleistung` in ganzen Watt eintragen.
|
||||
4. Als `Schaltkontakt` eine Booleanvariable mit funktionsfaehiger Aktion
|
||||
auswaehlen. Bei umgekehrter Aktorlogik `SchaltkontaktInvertiert`
|
||||
aktivieren.
|
||||
4. Als Schaltkontakt eine Booleanvariable mit funktionsfaehiger Aktion
|
||||
auswaehlen und bei Bedarf `SchaltkontaktInvertiert` aktivieren.
|
||||
5. Optional eine separate Boolean-Rueckmeldung auswaehlen. Dort muss
|
||||
`true` dem physisch eingeschalteten Verbraucher entsprechen.
|
||||
6. Prioritaeten, `Mindestlaufzeit`, `Umschaltabstand`,
|
||||
`Meldeintervall` und `VorgabeTimeout` einstellen und die Konfiguration
|
||||
uebernehmen.
|
||||
7. Die neue Instanz im Manager manuell aktiv zuordnen oder bei automatischer
|
||||
Suche in der gefundenen Liste aktivieren.
|
||||
6. Tagesmindestlaufzeit, Mindest-Einschaltdauer und Mindest-Ausschaltdauer
|
||||
passend zum angeschlossenen Geraet festlegen.
|
||||
7. Die Instanz im Manager manuell aktiv zuordnen oder bei automatischer Suche
|
||||
in der gefundenen Liste aktivieren.
|
||||
8. Fuer die Erstpruefung `DiagnosevariablenAnzeigen` und bei Bedarf
|
||||
`LoggingEin` einschalten.
|
||||
9. Unter Aufsicht `Aktiv` einschalten und ueber den Manager je eine Ein- und
|
||||
@@ -134,23 +175,37 @@ wird nach `VorgabeTimeout` Sekunden ohne Erneuerung ungueltig.
|
||||
## Abnahmecheckliste
|
||||
|
||||
- `Aktiv=false` schaltet den Ausgang aus.
|
||||
- `Aktiv=true` und eine Manager-Vorgabe `Nennleistung` schalten den Ausgang
|
||||
ein.
|
||||
- Direkt nach einem Wechsel ist `AenderungMoeglich=false`; nach 5 Sekunden
|
||||
wird es mit Standardkonfiguration wieder `true`.
|
||||
- Eine Gegenanforderung waehrend der Sperre wird vom Leistungsangebot
|
||||
ausgeschlossen.
|
||||
- Die optionale Rueckmeldung folgt dem Ausgang innerhalb des
|
||||
Umschaltabstands; andernfalls erscheint eine Stoerung.
|
||||
- `Tageslaufzeit` steigt nur im eingeschalteten Zustand und beginnt am
|
||||
lokalen Tageswechsel wieder bei 0.
|
||||
- Nach Ablauf von `VorgabeTimeout` wird ohne neue Manager-Vorgabe
|
||||
ausgeschaltet, sobald der Umschaltabstand dies zulaesst.
|
||||
- Nach Neustart oder erneuter Konfiguration wird der reale Schaltzustand
|
||||
eingelesen; alte Manager-Vorgaben werden nicht ungeprueft fortgesetzt.
|
||||
- Eine Ein-Vorgabe setzt zuerst den Aktor; mit separater Rueckmeldung bleibt
|
||||
`SchaltbefehlAusstehend=true`, bis diese einschaltet.
|
||||
- Die Mindesteinschaltdauer beginnt erst mit der Ein-Rueckmeldung.
|
||||
- Vor Ablauf der Mindesteinschaltdauer wird kein Ausschalten angeboten.
|
||||
- Nach bestaetigter Ausschaltung beginnt die Mindestausschaltdauer.
|
||||
- Vor Ablauf der Mindestausschaltdauer wird kein Einschalten angeboten.
|
||||
- `RestMindestzeit_s` erreicht 0 und `Schaltbereit` wird danach true.
|
||||
- `Tageslaufzeit` steigt nur bei bestaetigtem Ein-Zustand.
|
||||
- Ein unerwarteter Unterschied zwischen Aktor und Rueckmeldung erzeugt eine
|
||||
Stoerung.
|
||||
- Nach einem Neustart wird keine alte Manager-Vorgabe ungeprueft fortgesetzt.
|
||||
|
||||
## Tests
|
||||
|
||||
Nur dieses Modul:
|
||||
|
||||
```bash
|
||||
composer check:verbraucher-einstufig
|
||||
```
|
||||
|
||||
Gesamtes Repository inklusive dieser Modulsuite:
|
||||
|
||||
```bash
|
||||
composer check
|
||||
```
|
||||
|
||||
Die separate Suite und ihre Struktur sind unter
|
||||
[`tests/VerbraucherEinStufig`](../../../tests/VerbraucherEinStufig/README.md)
|
||||
dokumentiert.
|
||||
|
||||
## Migration
|
||||
|
||||
Die Zuordnung der Enelix-1-Felder, Einheiten und bewusst entfallenen
|
||||
Kommunikationsvariablen steht in
|
||||
Die Zuordnung der Enelix-1- und bisherigen Enelix-2-Zeitwerte steht in
|
||||
[`docs/migration/Verbraucher-1-Stufig.md`](../../migration/Verbraucher-1-Stufig.md).
|
||||
|
||||
Reference in New Issue
Block a user