# PowerFeedOptimizer

## `PowerFeedOptimizer` (FB)

FUNCTION\_BLOCK PowerFeedOptimizer

### Kurzbeschreibung

> Maximalwertbegrenzung der elektrischen Leistung am Netzanschlusspunkt durch Abschaltung der Verbraucher 1 - 4 (Index ‘\_Con’) (z.B. Elektro-Heizung)\
> Minimalwertbegrenzung der elektrischen Leistung am Netzanschlusspunkt durch Zuschaltung der Erzeuger 1 - 4 (Index ‘\_Gen’) (z.B. Wärmepumpe zur Kühlung)\
> Einflussfaktoren: elektrische Leistung am Netzanschlusspunkt, Betriebsstunden, Betriebs- und Störzustände der Verbraucher / Erzeuger\
> Typische Anwendung: Optimierung des zeitlichen Verlaufes der elektrische Leistung am Netzanschlusspunkt

### Darstellung

<figure><img src="https://879424349-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FQR4vCFzt6ixgsqlR3pdR%2Fuploads%2Fgit-blob-f0647f57f372eba30fb17eb3c8b4a2b0771b703d%2Fimage.png?alt=media" alt=""><figcaption></figcaption></figure>

### Video

{% embed url="<https://www.youtube.com/watch?v=x77_l3Gkp8Y>" fullWidth="false" %}

### Schnittstellen

#### Eingänge

| Name                          | Datentyp | Wertebereich | Initialwert | Funktion                                                                                                              |
| ----------------------------- | -------- | ------------ | ----------- | --------------------------------------------------------------------------------------------------------------------- |
| *xEn*                         | BOOL     |              | TRUE        | Freigabe / Sperrung des Funktionsbausteins                                                                            |
| *xUpdateDeviceOutputs*        | BOOL     |              | FALSE       | Aktualisierung der Ausgänge der Geräte (bei jeder ansteigenden Flanke)                                                |
| *xResError*                   | BOOL     |              | FALSE       | Reinitialisierung der Fehlerausgänge auf die jeweiligen fehlerfreien Zustände (bei jeder ansteigenden Flanke)         |
| *rElectricalPower*            | REAL     |              | 0.0         | Aktuelle elektrische Leistung am Einspeisepunkt in XX.X kW                                                            |
| *rMaxElectricalPower\_Con*    | REAL     |              | 100.0       | Maximale elektrische Leistung am Einspeisepunkt (Bezug) in XX.X kW vor der Abschaltung von Verbrauchern               |
| *rMaxElectricalPower\_Gen*    | REAL     |              | -100.0      | Maximale elektrische Leistung am Einspeisepunkt (Rückspeisung) in XX.X kW vor der Zuschaltung von Erzeugern           |
| *wActiveNumberOfDevices\_Con* | WORD     |              | 4           | Anzahl der angeforderten Verbraucher (0 - 4)                                                                          |
| *xFb\_Con1*                   | BOOL     |              | FALSE       | Betrieb - Verbraucher 1 (TRUE = Betrieb)                                                                              |
| *xFb\_Con2*                   | BOOL     |              | FALSE       | Betrieb - Verbraucher 2 (TRUE = Betrieb)                                                                              |
| *xFb\_Con3*                   | BOOL     |              | FALSE       | Betrieb - Verbraucher 3 (TRUE = Betrieb)                                                                              |
| *xFb\_Con4*                   | BOOL     |              | FALSE       | Betrieb - Verbraucher 4 (TRUE = Betrieb)                                                                              |
| *xAlarm\_Con1*                | BOOL     |              | FALSE       | Störung - Verbraucher 1 (TRUE = Störung)                                                                              |
| *xAlarm\_Con2*                | BOOL     |              | FALSE       | Störung - Verbraucher 2 (TRUE = Störung)                                                                              |
| *xAlarm\_Con3*                | BOOL     |              | FALSE       | Störung - Verbraucher 3 (TRUE = Störung)                                                                              |
| *xAlarm\_Con4*                | BOOL     |              | FALSE       | Störung - Verbraucher 4 (TRUE = Störung)                                                                              |
| *udiOpHours\_Con1*            | UDINT    |              | 0           | Betriebsstunden - Verbraucher 1                                                                                       |
| *udiOpHours\_Con2*            | UDINT    |              | 0           | Betriebsstunden - Verbraucher 2                                                                                       |
| *udiOpHours\_Con3*            | UDINT    |              | 0           | Betriebsstunden - Verbraucher 3                                                                                       |
| *udiOpHours\_Con4*            | UDINT    |              | 0           | Betriebsstunden - Verbraucher 4                                                                                       |
| *wActiveNumberOfDevices\_Gen* | WORD     |              | 4           | Anzahl der angeforderten Erzeuger (0 - 4)                                                                             |
| *xFb\_Gen1*                   | BOOL     |              | FALSE       | Betrieb - Erzeuger 1 (TRUE = Betrieb)                                                                                 |
| *xFb\_Gen2*                   | BOOL     |              | FALSE       | Betrieb - Erzeuger 2 (TRUE = Betrieb)                                                                                 |
| *xFb\_Gen3*                   | BOOL     |              | FALSE       | Betrieb - Erzeuger 3 (TRUE = Betrieb)                                                                                 |
| *xFb\_Gen4*                   | BOOL     |              | FALSE       | Betrieb - Erzeuger 4 (TRUE = Betrieb)                                                                                 |
| *xAlarm\_Gen1*                | BOOL     |              | FALSE       | Störung - Erzeuger 1 (TRUE = Störung)                                                                                 |
| *xAlarm\_Gen2*                | BOOL     |              | FALSE       | Störung - Erzeuger 2 (TRUE = Störung)                                                                                 |
| *xAlarm\_Gen3*                | BOOL     |              | FALSE       | Störung - Erzeuger 3 (TRUE = Störung)                                                                                 |
| *xAlarm\_Gen4*                | BOOL     |              | FALSE       | Störung - Erzeuger 4 (TRUE = Störung)                                                                                 |
| *udiOpHours\_Gen1*            | UDINT    |              | 0           | Betriebsstunden - Erzeuger 1                                                                                          |
| *udiOpHours\_Gen2*            | UDINT    |              | 0           | Betriebsstunden - Erzeuger 2                                                                                          |
| *udiOpHours\_Gen3*            | UDINT    |              | 0           | Betriebsstunden - Erzeuger 3                                                                                          |
| *udiOpHours\_Gen4*            | UDINT    |              | 0           | Betriebsstunden - Erzeuger 4                                                                                          |
| *xUpdateRedundance4\_Con*     | BOOL     |              | FALSE       | Auslösung der Neuberechnung der Sequenz für die Verbraucher (interner FB ‘Redundance4’) bei jeder ansteigenden Flanke |
| *xUpdateRedundance4\_Gen*     | BOOL     |              | FALSE       | Auslösung der Neuberechnung der Sequenz für die Erzeuger (interner FB ‘Redundance4’) bei jeder ansteigenden Flanke    |

#### Ausgänge

| Name                               | Datentyp                                | Wertebereich | Initialwert | Funktion                                                                                        |
| ---------------------------------- | --------------------------------------- | ------------ | ----------- | ----------------------------------------------------------------------------------------------- |
| *xLoadRejection\_Con*              | BOOL                                    |              | FALSE       | Aktueller Zustand der Abschaltung vom aktiven Verbrauchern (TRUE = Abschaltung aktiv)           |
| *rTotalNomElectricalPower\_Con*    | REAL                                    |              | 0.0         | Gesamte nominale elektrische Leistung aller betriebsbereiten und aktiven Verbraucher in XX.X kW |
| *rControlSignal\_Con*              | REAL                                    |              | 0.0         | Differenz der elektrischen Leistung in XX.X kW für die Verbraucher                              |
| *wNumberOfOperationalDevices\_Con* | WORD                                    |              | 0           | Anzahl der betriebsbereiten Verbraucher                                                         |
| *udiCurrentSequence\_Con*          | UDINT                                   |              | 0           | Aktuelle Gerätefolge der Verbraucher als Integer (Kriterien: Störzustand, Betriebsstunden)      |
| *sCurrentSequence\_Con*            | STRING                                  |              | ‘’          | Aktuelle Gerätefolge der Verbraucher als String (Kriterien: Störzustand, Betriebsstunden)       |
| *stOutputs\_Con1*                  | stDevicesOutputsCon\_PowerFeedOptimizer |              |             | Aktuelle Zustände aller Ausgänge des Verbrauchers 1                                             |
| *stOutputs\_Con2*                  | stDevicesOutputsCon\_PowerFeedOptimizer |              |             | Aktuelle Zustände aller Ausgänge des Verbrauchers 2                                             |
| *stOutputs\_Con3*                  | stDevicesOutputsCon\_PowerFeedOptimizer |              |             | Aktuelle Zustände aller Ausgänge des Verbrauchers 3                                             |
| *stOutputs\_Con4*                  | stDevicesOutputsCon\_PowerFeedOptimizer |              |             | Aktuelle Zustände aller Ausgänge des Verbrauchers 4                                             |
| *eOperationalCondition\_Con*       | eRedundance3\_OperationalMode           |              |             | Nummer / Name des aktuellen Betriebszustandes der Verbraucher (Redundance4)                     |
| *xLoadConnection\_Gen*             | BOOL                                    |              | FALSE       | Aktueller Zustand der Zuschaltung vom aktiven Erzeugern (TRUE = Zuschaltung aktiv)              |
| *rTotalNomElectricalPower\_Gen*    | REAL                                    |              | 0.0         | Gesamte nominale elektrische Leistung aller betriebsbereiten und aktiven Errzeuger in XX.X kW   |
| *rControlSignal\_Gen*              | REAL                                    |              | 0.0         | Differenz der elektrischen Leistung in XX.X kW für die Erzeuger                                 |
| *wNumberOfOperationalDevices\_Gen* | WORD                                    |              | 0           | Anzahl der betriebsbereiten Erzeuger                                                            |
| *udiCurrentSequence\_Gen*          | UDINT                                   |              | 0           | Aktuelle Gerätefolge der Erzeuger als Integer (Kriterien: Störzustand, Betriebsstunden)         |
| *sCurrentSequence\_Gen*            | STRING                                  |              | ‘’          | Aktuelle Gerätefolge der Erzeuger als String (Kriterien: Störzustand, Betriebsstunden)          |
| *stOutputs\_Gen1*                  | stDevicesOutputsGen\_PowerFeedOptimizer |              |             | Aktuelle Zustände aller Ausgänge des Erzeugers 1                                                |
| *stOutputs\_Gen2*                  | stDevicesOutputsGen\_PowerFeedOptimizer |              |             | Aktuelle Zustände aller Ausgänge des Erzeugers 2                                                |
| *stOutputs\_Gen3*                  | stDevicesOutputsGen\_PowerFeedOptimizer |              |             | Aktuelle Zustände aller Ausgänge des Erzeugers 3                                                |
| *stOutputs\_Gen4*                  | stDevicesOutputsGen\_PowerFeedOptimizer |              |             | Aktuelle Zustände aller Ausgänge des Erzeugers 4                                                |
| *eOperationalCondition\_Gen*       | eRedundance3\_OperationalMode           |              |             | Nummer / Name des aktuellen Betriebszustandes der Erzeuger (Redundance4)                        |
| *xErr*                             | BOOL                                    |              | FALSE       | Ausgang - Störung (TRUE = Störung)                                                              |
| *sErrorCodes\_General*             | STRING                                  |              | ‘’          | String mit den Nummern der aktiven Fehlerbits - Allgemein                                       |
| *sErrorCodes\_Con*                 | STRING                                  |              | ‘’          | String mit den Nummern der aktiven Fehlerbits - Verbraucher                                     |
| *sErrorCodes\_Gen*                 | STRING                                  |              | ‘’          | String mit den Nummern der aktiven Fehlerbits - Erzeuger                                        |

#### Sollwerte / Parameter

| Name                             | Datentyp                           | Wertebereich | Initialwert                                      | Funktion                                                                                                                                                                                             |
| -------------------------------- | ---------------------------------- | ------------ | ------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **tTimeUpdateDeviceOutputs**     | TIME                               |              | T#3s                                             | Updateintervall für die Vorgänge, die durch den Eingang ‘xUpdateDeviceOutputs’ beeinflusst werden                                                                                                    |
| **wTolerance\_Con**              | WORD                               |              | 100                                              | Grenzwert - Betriebsstundendifferenz für direkten Folgewechsel im Teillastbetrieb der Verbraucher                                                                                                    |
| **xEnFb\_Con**                   | BOOL                               |              | FALSE                                            | Auswahlkriterium für die Festlegung des Betriebszustands (Leerlauf / Teillast / Volllast), FALSE: Freigabeausgänge - Verbraucher (xCmd\_ConX), TRUE: Betriebsmeldeeingänge - Verbraucher (xFb\_ConX) |
| **xConOperatingHours\_Con**      | BOOL                               |              | TRUE                                             | Auslösekriterium für die Neuberechnung der Sequenz, FALSE: Nur durch Eingang ‘xUpdateRedundance4\_Con’, TRUE: Automatisch nach Betriebsstunden ‘udiOpHours\_ConX’                                    |
| **wTolerance\_Gen**              | WORD                               |              | 100                                              | Grenzwert - Betriebsstundendifferenz für direkten Folgewechsel im Teillastbetrieb der Erzeuger                                                                                                       |
| **xEnFb\_Gen**                   | BOOL                               |              | FALSE                                            | Auswahlkriterium für die Festlegung des Betriebszustands (Leerlauf / Teillast / Volllast), FALSE: Freigabeausgänge - Erzeuger (xCmd\_GenX), TRUE: Betriebsmeldeeingänge - Erzeuger (xFb\_GenX)       |
| **xConOperatingHours\_Gen**      | BOOL                               |              | TRUE                                             | Auslösekriterium für die Neuberechnung der Sequenz, FALSE: Nur durch Eingang ‘xUpdateRedundance4\_Gen’, TRUE: Automatisch nach Betriebsstunden ‘udiOpHours\_GenX’                                    |
| **tInitDelay\_EP**               | TIME                               |              | T#5s                                             | Startverzögerung - Initialisierung für den Eingang ‘rElectricalPower’ (eInitial\_rEP = InitValueDelayed)                                                                                             |
| **eInitial\_EP**                 | eInit                              |              | eInit.InputValue                                 | Auswahl des Initialwerts für den Eingang ‘rElectricalPower’                                                                                                                                          |
| **rInitValue\_EP**               | REAL                               |              | 0.0                                              | Initialwert für den Eingang ‘rElectricalPower’ (eInitial\_rEP = InitValue)                                                                                                                           |
| **tTimeConstant\_EP**            | TIME                               |              | T#15s                                            | Filter - Zeitkonstante für den Eingang ‘rElectricalPower’                                                                                                                                            |
| **rTn\_Con**                     | REAL                               |              | 180.0                                            | PI-Regler für die Leistungsdifferenz: Nachstellzeit für die Regelabweichung in Sekunden                                                                                                              |
| **rTn\_Gen**                     | REAL                               |              | 180.0                                            | PI-Regler für die Leistungsdifferenz: Nachstellzeit für die Regelabweichung in Sekunden                                                                                                              |
| eControlSelect                   | ePowerFeedOptimizer\_ControlSelect |              | ePowerFeedOptimizer\_ControlSelect.P\_Controller | Auswahl der Regler-Charakteristiken ( gemeinsam für die Regler für Verbraucher und Erzeuger )                                                                                                        |
| **rMinNomElectricalPower\_Con1** | REAL                               |              | 0.0                                              | Minimale nominale elektrische Leistung des Verbrauchers 1 in XX.X kW                                                                                                                                 |
| **rMaxNomElectricalPower\_Con1** | REAL                               |              | 10.0                                             | Maximale nominale elektrische Leistung des Verbrauchers 1 in XX.X kW                                                                                                                                 |
| **tOnDelayCmd\_Con1**            | TIME                               |              | T#10s                                            | Einschaltverzögerung - Freigabeausgang ‘xCmd’ - Verbraucher 1                                                                                                                                        |
| **tOffDelayCmd\_Con1**           | TIME                               |              | T#10s                                            | Ausschaltverzögerung - Freigabeausgang ‘xCmd’ - Verbraucher 1                                                                                                                                        |
| **rMinNomElectricalPower\_Con2** | REAL                               |              | 0.0                                              | Minimale nominale elektrische Leistung des Verbrauchers 2 in XX.X kW                                                                                                                                 |
| **rMaxNomElectricalPower\_Con2** | REAL                               |              | 10.0                                             | Maximale nominale elektrische Leistung des Verbrauchers 2 in XX.X kW                                                                                                                                 |
| **tOnDelayCmd\_Con2**            | TIME                               |              | T#10s                                            | Einschaltverzögerung - Freigabeausgang ‘xCmd’ - Verbraucher 2                                                                                                                                        |
| **tOffDelayCmd\_Con2**           | TIME                               |              | T#10s                                            | Ausschaltverzögerung - Freigabeausgang ‘xCmd’ - Verbraucher 2                                                                                                                                        |
| **rMinNomElectricalPower\_Con3** | REAL                               |              | 0.0                                              | Minimale nominale elektrische Leistung des Verbrauchers 3 in XX.X kW                                                                                                                                 |
| **rMaxNomElectricalPower\_Con3** | REAL                               |              | 10.0                                             | Maximale nominale elektrische Leistung des Verbrauchers 3 in XX.X kW                                                                                                                                 |
| **tOnDelayCmd\_Con3**            | TIME                               |              | T#10s                                            | Einschaltverzögerung - Freigabeausgang ‘xCmd’ - Verbraucher 3                                                                                                                                        |
| **tOffDelayCmd\_Con3**           | TIME                               |              | T#10s                                            | Ausschaltverzögerung - Freigabeausgang ‘xCmd’ - Verbraucher 3                                                                                                                                        |
| **rMinNomElectricalPower\_Con4** | REAL                               |              | 0.0                                              | Minimale nominale elektrische Leistung des Verbrauchers 4 in XX.X kW                                                                                                                                 |
| **rMaxNomElectricalPower\_Con4** | REAL                               |              | 10.0                                             | Maximale nominale elektrische Leistung des Verbrauchers 4 in XX.X kW                                                                                                                                 |
| **tOnDelayCmd\_Con4**            | TIME                               |              | T#10s                                            | Einschaltverzögerung - Freigabeausgang ‘xCmd’ - Verbraucher 4                                                                                                                                        |
| **tOffDelayCmd\_Con4**           | TIME                               |              | T#10s                                            | Ausschaltverzögerung - Freigabeausgang ‘xCmd’ - Verbraucher 4                                                                                                                                        |
| **rMinNomElectricalPower\_Gen1** | REAL                               |              | 0.0                                              | Minimale nominale elektrische Leistung des Erzeugers 1 in XX.X kW                                                                                                                                    |
| **rMaxNomElectricalPower\_Gen1** | REAL                               |              | -10.0                                            | Maximale nominale elektrische Leistung des Erzeugers 1 in XX.X kW                                                                                                                                    |
| **tOnDelayCmd\_Gen1**            | TIME                               |              | T#10s                                            | Einschaltverzögerung - Freigabeausgang ‘xCmd’ - Erzeuger 1                                                                                                                                           |
| **tOffDelayCmd\_Gen1**           | TIME                               |              | T#10s                                            | Ausschaltverzögerung - Freigabeausgang ‘xCmd’ - Erzeuger 1                                                                                                                                           |
| **rMinNomElectricalPower\_Gen2** | REAL                               |              | 0.0                                              | Minimale nominale elektrische Leistung des Erzeugers 2 in XX.X kW                                                                                                                                    |
| **rMaxNomElectricalPower\_Gen2** | REAL                               |              | -10.0                                            | Maximale nominale elektrische Leistung des Erzeugers 2 in XX.X kW                                                                                                                                    |
| **tOnDelayCmd\_Gen2**            | TIME                               |              | T#10s                                            | Einschaltverzögerung - Freigabeausgang ‘xCmd’ - Erzeuger 2                                                                                                                                           |
| **tOffDelayCmd\_Gen2**           | TIME                               |              | T#10s                                            | Ausschaltverzögerung - Freigabeausgang ‘xCmd’ - Erzeuger 2                                                                                                                                           |
| **rMinNomElectricalPower\_Gen3** | REAL                               |              | 0.0                                              | Minimale nominale elektrische Leistung des Erzeugers 3 in XX.X kW                                                                                                                                    |
| **rMaxNomElectricalPower\_Gen3** | REAL                               |              | -10.0                                            | Maximale nominale elektrische Leistung des Erzeugers 3 in XX.X kW                                                                                                                                    |
| **tOnDelayCmd\_Gen3**            | TIME                               |              | T#10s                                            | Einschaltverzögerung - Freigabeausgang ‘xCmd’ - Erzeuger 3                                                                                                                                           |
| **tOffDelayCmd\_Gen3**           | TIME                               |              | T#10s                                            | Ausschaltverzögerung - Freigabeausgang ‘xCmd’ - Erzeuger 3                                                                                                                                           |
| **rMinNomElectricalPower\_Gen4** | REAL                               |              | 0.0                                              | Minimale nominale elektrische Leistung des Erzeugers 4 in XX.X kW                                                                                                                                    |
| **rMaxNomElectricalPower\_Gen4** | REAL                               |              | -10.0                                            | Maximale nominale elektrische Leistung des Erzeugers 4 in XX.X kW                                                                                                                                    |
| **tOnDelayCmd\_Gen4**            | TIME                               |              | T#10s                                            | Einschaltverzögerung - Freigabeausgang ‘xCmd’ - Erzeuger 4                                                                                                                                           |
| **tOffDelayCmd\_Gen4**           | TIME                               |              | T#10s                                            | Ausschaltverzögerung - Freigabeausgang ‘xCmd’ - Erzeuger 4                                                                                                                                           |

### Funktionsbeschreibung

#### Allgemeines

Dieser Funktionsbaustein dient zur Begrenzung (Regelung) der elektrischen Leistung am Netzanschlusspunkt ‘rElectricalPower’ auf einstellbare Maximalwerte. Dabei wird die vom Netzanschlusspunkt bezogene Leistung / Energie mit einem positiven, die an den Netzanschlusspunkt zurück gespeiste Leistung / Energie mit einem negativen Vorzeichen gekennzeichnet.\
\
Überschreitet die elektrische Leistung ‘rElectricalPower’ den einstellbaren, positiven Maximalwert ‘rMaxElectricalPower\_Con’, so werden, vom aktiven Gerät mit der niedrigsten Priorität beginnend, die Verbraucher stufenlos abgeschaltet.\
\
Unterschreitet die elektrische Leistung ‘rElectricalPower’ den einstellbaren, negativen Maximalwert ‘rMaxElectricalPower\_Gen’, so werden, vom Gerät mit der höchsten Priorität beginnend, die Erzeuger stufenlos eingeschaltet (PI-Regler-Verhalten).\
\
Ohne weitere Beschaltung an den Eingängen ‘xFb’, ‘xAlarm’ und ‘udiOpHours’ sowie den initialen Parameter-Einstellungen ist dem jeweiligen Gerät 1 die Priorität 1 (= höchste) und dem jeweiligen Gerät 4 die Priorität 4 (= niedrigste) zugeordnet.\
Für jede Funktionalität (Abschaltung von Verbrauchern, Zuschaltung von Erzeugern) ist intern ein eigener Funktionsbaustein ‘Redundance4’ aus dieser Bibliothek vorhanden, bei dem jeweils eine einstellbare Anzahl von Verbrauchern (‘wActiveNumberOfDevices\_Con’) und Erzeugern (‘wActiveNumberOfDevices\_Gen’) verwandt wird. Die näheren Details zu diesem Funktionsbaustein sind dort detailliert beschrieben.\
\
Die Freigabe / Sperrung des Funktionsbausteins erfolgt über den Eingang **xEn**, im gesperrten Zustand nehmen alle Ausgänge definierte Zustände ein.\
Bei den Geräten mit dem Index ‘\_Con’ handelt es sich um Verbraucher (= Consumer), bei den Geräten mit dem Index ‘*Gen’ um Erzeuger (= Generator).*\
\
*Signalfluss:*\
\
*Der aktuelle Istwert 'rElectricalPower' wird einer zeitlichen Filterung ( Vier Parameter mit Index '\_*&#x45;P' )\
und den gewählten Reglern zugeführt. \
Je nach gewähltem Regler ( Parameter 'eControlSelect' ) wird die Differenz zwischen dem Istwert am Eingang 'rElectricalPower' und dem zugehörigen Maximalwert 'rMaxElectricalPower\_Con' / 'rMaxElectricalPower\_Gen' gebildet ( Verstärkungsfaktor = 1.0 konstant ) und anschließend der Logik zur Auswahl der Verbraucher / Generatoren übergeben. Jedes Gerät wird dabei durch die\
Elemente einer Strukturvariablen 'stOutputs\_ConX' bzw. 'stOutputs\_GenY' repräsentiert.\
\
Das Element 'rPowerSignalkW' enthält stets die maximal mögliche Leistung des Geräts.\
Das Element 'xCmd\_Redundance4' enthält die Freigabe des Geräts aus dem FB '‘Redundance4’'.\
Das Element 'xCmd' enthält die Freigabe des Geräts aus dem Signalfluss, sie beinhaltet auch die\
Sperrung des Geräts ( xCmd = FALSE )'.

#### Eingang *xEn*

Dieser Eingang dient zur Freigabe / Sperrung des Funktionsbausteins, im gesperrten Zustand nehmen alle Ausgänge definierte Zustände ein.

#### Eingang *xUpdateDeviceOutputs*

Jede ansteigende Flanke an diesem Eingang löst eine Aktualisierung aller Ausgänge der Geräte aus (Ausgänge ‘stOutputs\_XXXX’).

#### Eingang *xResError*

Jede ansteigende Flanke an diesem Eingang löst eine Rücksetzung aller Fehlerausgänge (‘sErrorCodes\_General’, ‘sErrorCodes\_Con’ und ‘sErrorCodes\_Gen ‘)\
auf den fehlerfreien Zustand aus.

#### Eingang *rElectricalPower*

An diesem Eingang steht die aktuelle elektrische Leistung am Netzanschlusspunkt zur Verfügung. Ein Leistungsbezug wird dabei durch ein positives, eine Rückspeisung durch ein negatives Vorzeichen gekennzeichnet. Die elektrische Leistung wird anschließend zeitlich gefiltert (Vier Parameter mit dem Index \_EP’) und steht dann für die internen Regelprozesse zur Verfügung.

#### Eingang *rMaxElectricalPower\_Con*

An diesem Eingang wird der aktuelle Maximalwert des elektrischen Leistungsbezugs festgelegt. Überschreitet die aktuelle elektrische Leistung am Eingang ‘rElectricalPower’ diesen Maximalwert, so werden die Verbraucher, je nach ihrer nominalen Leistung, stufenlos, vom Verbraucher mit der niedrigsten Priorität beginnend, abgeschaltet.\
Das Regelverhalten des eingesetzten PI-Reglers lässt sich durch den Parameter ‘rTn\_Con’ (= Nachstellzeit, falls PI-Regler ausgewählt ) beeinflussen.

#### Eingang *rMaxElectricalPower\_Gen*

An diesem Eingang wird der aktuelle Maximalwert des elektrischen Leistungsrückspeisung festgelegt. Unterschreitet die aktuelle elektrische Leistung am Eingang ‘rElectricalPower’\
diesen Maximalwert, so werden die Erzeuger, je nach ihrer nominalen Leistung, stufenlos, vom Erzeuger mit der höchsten Priorität beginnend, zugeschaltet.\
Das Regelverhalten des eingesetzten PI-Reglers lässt sich durch den Parameter ‘rTn\_Gen’ (= Nachstellzeit, falls PI-Regler ausgewählt ) beeinflussen.

#### Eingang *wActiveNumberOfDevices\_Con*

An diesem Eingang wird die Anzahl der eingesetzten Verbraucher im Bereich 0 - 4 festgelegt. Er ist direkt mit dem internen Funktionsbaustein ‘Redundance4\_Con’\
(Eingang ‘wActiveNumberOfDevices’) verbunden.

#### Eingang *wActiveNumberOfDevices\_Gen*

An diesem Eingang wird die Anzahl der eingesetzten Erzeuger im Bereich 0 - 4 festgelegt. Er ist direkt mit dem internen Funktionsbaustein ‘Redundance4\_Gen’\
(Eingang ‘wActiveNumberOfDevices’) verbunden.

#### Geräteeingänge `xFb``, Alarm` und `udiOpHours`

Diese Geräteeingänge werden direkt auf die entsprechenden Eingänge der internen Funktionsbausteine vom Typ ‘Redundance4’ geführt und beeinflussen dort die aktuelle\
Sequenz der jeweils vier Geräte.

#### Eingänge `xUpdateRedundance4`

Diese Eingänge werden direkt auf die entsprechenden Eingänge der internen Funktionsbausteine vom Typ ‘Redundance4’ geführt und beeinflussen dort die aktuelle\
Sequenz der jeweils vier Geräte.

#### Ausgang *xLoadRejection\_Con*

Dieser Ausgang zeigt stets die aktuelle Abschaltung von aktiven Verbrauchern (= TRUE) an.

#### Ausgang *rTotalNomElectricalPower\_Con*

Dieser Ausgang zeigt stets die aktuell abschaltbare Leistung der betriebsbereiten und aktiven Verbraucher in kW an.

#### Ausgang *rControlSignal\_Con*

Dieser Ausgang zeigt stets das Stellsignal des internen PI-Reglers an (= gewünschte abzuschaltende Leistung).

#### Ausgang *wNumberOfOperationalDevices\_Con*

Dieser Ausgang zeigt stets die Anzahl der betriebsbereiten Verbraucher an.

#### Ausgang *udiCurrentSequence\_Con*

Dieser Ausgang zeigt stets die aktuelle Gerätefolge als Ganzzahl an. Die Nummer des Geräts mit der höchsten Priorität steht dabei immer am Anfang, dann folgt die Nummer des Geräts mit der zweithöchsten Priorität, usw.

{% hint style="info" %}
Beispiel: *udiCurrentSequence\_Con* = 145 bedeutet: Gerät 1 = Priorität 1, Gerät 4 = Priorität 2 und Gerät 5 = Priorität 3
{% endhint %}

#### Ausgang *sCurrentSequence\_Con*

Dieser Ausgang zeigt stets die aktuelle Gerätefolge als String mit Trennzeichen an. Bezüglich der Prioritäten gilt dasselbe wie beim Ausgang *udiCurrentSequence*.

{% hint style="info" %}
Beispiel: *sCurrentSequence\_Con* = ‘1-4-5’ bedeutet: Gerät 1 = Priorität 1, Gerät 4 = Priorität 2 und Gerät 5 = Priorität 3
{% endhint %}

#### Ausgänge *stOutputs\_Con*

Dieser Strukturvariablen zeigen stets die aktuellen Zustände der jeweiligen Geräte an. Es werden folgende Variablen dargestellt:

1. rMinNomElectricalPower: Minimale nominale elektrische Leistung des Verbrauchers in XX.X kW
2. rMaxNomElectricalPower: Maximale nominale elektrische Leistung des Verbrauchers in XX.X kW
3. wPrio: Aktuelle Priorität des Geräts (0 = keine, 1 = höchste, 4 = niedrigste)
4. rPowerSignalPercent: Stellsignal für die elektrische Leistung in Prozent (0.0 - 100.0%)
5. rPowerSignalkW: Stellsignal für die elektrische Leistung in kW
6. xCmd: Freigabeausgang des Geräts (TRUE = Freigabe) unter Berücksichtigung der Ein- und Ausschaltverzögerung
7. xCmd\_Redundance4: Freigabeausgang des Geräts (TRUE = Freigabe) aufgrund des internen Funktionsbausteins **Redundance4\_Con**
8. rMinRangeElectricalPower: Absoluter Minimalwert - Bereich der elektrischen Leistung des Verbrauchers in XX.X kW
9. rMaxRangeElectricalPower: Absoluter Maximalwert - Bereich der elektrischen Leistung des Verbrauchers in XX.X kW
10. rPowerSignalPercentCmd: Stellsignal für die elektrische Leistung in Prozent ( 0.0 - 100.0% ) für den Freigabeausgang xCmd<br>

#### Ausgang *eOperationalCondition\_Con*

Dieser Ausgang zeigt stets die aktuelle Lastsituation (Leerlauf, Teillast, Volllast) dar und wird direkt vom internen Funktionsbaustein **Redundance4** übernommen.

#### Ausgang *xLoadConnection\_Gen*

Dieser Ausgang zeigt stets die aktuelle Zuschaltung von aktiven (= TRUE) Erzeugern an.

#### Ausgang *rTotalNomElectricalPower\_Gen*

Dieser Ausgang zeigt stets die aktuell zuschaltbare Leistung der betriebsbereiten und aktiven Erzeuger in kW an.

#### Ausgang *rControlSignal\_Gen*

Dieser Ausgang zeigt stets das Stellsignal des internen PI-Reglers an (= gewünschte zuzuschaltende Leistung).

#### Ausgang *wNumberOfOperationalDevices\_Gen*

Dieser Ausgang zeigt stets die Anzahl der betriebsbereiten Erzeuger an.

#### Ausgang *udiCurrentSequence\_Gen*

Dieser Ausgang zeigt stets die aktuelle Gerätefolge als Ganzzahl an. Die Nummer des Geräts mit der höchsten Priorität steht dabei immer am Anfang, dann folgt die Nummer des Geräts mit der zweithöchsten Priorität, usw.

{% hint style="info" %}
Beispiel: *udiCurrentSequence\_Gen* = 145 bedeutet: Gerät 1 = Priorität 1, Gerät 4 = Priorität 2 und Gerät 5 = Priorität 3
{% endhint %}

#### Ausgang *sCurrentSequence\_Gen*

Dieser Ausgang zeigt stets die aktuelle Gerätefolge als String mit Trennzeichen an. Bezüglich der Prioritäten gilt dasselbe wie beim Ausgang *udiCurrentSequence*.

{% hint style="info" %}
Beispiel: *sCurrentSequence\_gen* = ‘1-4-5’ bedeutet: Gerät 1 = Priorität 1, Gerät 4 = Priorität 2 und Gerät 5 = Priorität 3
{% endhint %}

#### Ausgänge *stOutputs\_Gen*

Dieser Strukturvariablen zeigen stets die aktuellen Zustände der jeweiligen Geräte an. Es werden folgende Variablen dargestellt:

1. rMinNomElectricalPower: Minimale nominale elektrische Leistung des Erzeugers in XX.X kW
2. rMaxNomElectricalPower: Maximale nominale elektrische Leistung des Erzeugers in XX.X kW
3. wPrio: Aktuelle Priorität des Geräts (0 = keine, 1 = höchste, 4 = niedrigste)
4. rPowerSignalPercent: Stellsignal für die elektrische Leistung in Prozent (0.0 - 100.0%)
5. rPowerSignalkW: Stellsignal für die elektrische Leistung in kW
6. xCmd: Freigabeausgang des Geräts (TRUE = Freigabe) unter Berücksichtigung der Ein- und Ausschaltverzögerung
7. xCmd\_Redundance4: Freigabeausgang des Geräts (TRUE = Freigabe) aufgrund des internen Funktionsbausteins **Redundance4\_Gen**
8. rMinRangeElectricalPower: Absoluter Minimalwert - Bereich der elektrischen Leistung des Verbrauchers in XX.X kW
9. rMaxRangeElectricalPower: Absoluter Maximalwert - Bereich der elektrischen Leistung des Verbrauchers in XX.X kW
10. rPowerSignalPercentCmd: Stellsignal für die elektrische Leistung in Prozent ( 0.0 - 100.0% ) für den Freigabeausgang xCmd

#### Ausgang *eOperationalCondition\_Gen*

Dieser Ausgang zeigt stets die aktuelle Lastsituation (Leerlauf, Teillast, Volllast) dar und wird direkt vom internen Funktionsbaustein **Redundance4** übernommen.

#### Ausgang Störung *xErr*

Dieser Ausgang ist aktiv (= TRUE), falls mindestens eine der nachfolgenden Bedingungen erfüllt ist.

1. Anzahl der allgemeinen Fehler > 0
2. Anzahl der Fehler in der Verbraucher - Funktionalität > 0
3. Anzahl der Fehler in der Erzeuger - Funktionalität > 0

\
In allen übrigen Fällen ist der Ausgang **xErr** nicht aktiv (= FALSE).

#### Ausgang *sErrorCodes\_General*

An diesem Ausgang werden eventuell aktive Fehler (maximal 16 = Bits 0 - 15) aus dem allgemeinen Bereich als String dargestellt.

{% hint style="info" %}
Beispiel: ‘1-2’: Die Fehlerbits 0 und 1 sind aktiv.
{% endhint %}

#### Ausgang *sErrorCodes\_Con*

An diesem Ausgang werden eventuell aktive Fehler (maximal 16 = Bits 0 - 15) aus dem Verbraucher-Bereich als String dargestellt.

{% hint style="info" %}
Beispiel: ‘1-2’: Die Fehlerbits 0 und 1 sind aktiv.
{% endhint %}

#### Ausgang *sErrorCodes\_Gen*

An diesem Ausgang werden eventuell aktive Fehler (maximal 16 = Bits 0 - 15) aus dem Erzeuger-Bereich als String dargestellt.

{% hint style="info" %}
Beispiel: ‘1-2’: Die Fehlerbits 0 und 1 sind aktiv.
{% endhint %}

#### Parameter ***wTolerance\_Con***, **xEnFb\_Con** und **xConOperatingHours\_Con**

Diese Parameter betreffen die Strategien zur Festlegung der Gerätesequenz im internen Funktionsbaustein **Redundance4** und sind dort detailliert beschrieben.

#### Parameter ***wTolerance\_Gen***, **xEnFb\_Gen** und **xConOperatingHours\_Gen**

Diese Parameter betreffen die Strategien zur Festlegung der Gerätesequenz im internen Funktionsbaustein **Redundance4** und sind dort detailliert beschrieben.

#### Parameter ***rMinNominalElectricalPower\_ConX***, ***rMaxNominalElectricalPower\_ConX***, **tOnDelayCmd\_ConX** und **tOffDelayCmd\_ConX**

Diese Parameter betreffen die die Verbraucher 1 - 4 und beeinflussen die zugeordneten Geräteausgänge. Die jeweiligen Ein- und Ausschaltverzögerungen wirken dabei auf die jeweiligen Geräteausgänge **xCmd**.

#### Parameter ***rMinNominalElectricalPower\_GenX***, ***rMaxNominalElectricalPower\_GenX***, **tOnDelayCmd\_GenX** und **tOffDelayCmd\_GenX**

Diese Parameter betreffen die die Erzeuger 1 - 4 und beeinflussen die zugeordneten Geräteausgänge. Die jeweiligen Ein- und Ausschaltverzögerungen wirken dabei auf die jeweiligen Geräteausgänge **xCmd**.

#### Parameter eControlSelect

Diese Parameter legt die Regler-Charakteristik ( P- oder PI-Verhalten ) der beiden Regler ( Verbraucher und Erzeuger ) fest.\
Der Verstärkungsfaktor rkP ist bei beiden Reglern auf die Konstante 1.0 festgelegt und kann nicht verändert werden.\
Die Nachstellzeiten rTn sind für beide PI-Regler jeweils getrennt einstellbar.

#### Kriterien für die Aktualisierung der Geräte-Ausgänge ‘stOutputs\_ConX’

Dieses Ausgänge werden im freigegebenen Zustand (xEn = TRUE) aktualisiert, falls mindestens eines der folgenden Kriterien vorliegt:

1. einmalig nach jedem Neustart der Steuerung
2. bei jeder ansteigenden Flanke am Eingang **xUpdateDeviceOutputs**
3. zyklisch im Zeitintervall ‘**tTimeUpdateDeviceOutputs**’ (**tTimeUpdateDeviceOutputs** > 0)
4. einmalig bei jeder Änderung der Sequenz (**udiCurrentSequence\_Con**)
5. einmalig bei jeder Änderung der minimalen nominalen elektrischen Leistung der Verbraucher (**rMinNomElectricalPower\_ConX**)
6. einmalig bei jeder Änderung der maximalen nominalen elektrischen Leistung der Verbraucher (**rMaxNomElectricalPower\_ConX**)
7. einmalig bei jeder ansteigenden Flanke am Eingang **xEn**

#### Kriterien für die Aktualisierung der Geräte-Ausgänge **stOutputs\_GenX**

Dieses Ausgänge werden im freigegebenen Zustand (xEn = TRUE) aktualisiert, falls mindestens eines der folgenden Kriterien vorliegt:

1. einmalig nach jedem Neustart der Steuerung
2. bei jeder ansteigenden Flanke am Eingang **xUpdateDeviceOutputs**
3. zyklisch im Zeitintervall **tTimeUpdateDeviceOutputs** (**tTimeUpdateDeviceOutputs** > 0)
4. einmalig bei jeder Änderung der Sequenz (**udiCurrentSequence\_Gen**)
5. einmalig bei jeder Änderung der minimalen nominalen elektrischen Leistung der Erzeuger (**rMinNomElectricalPower\_GenX**)
6. einmalig bei jeder Änderung der maximalen nominalen elektrischen Leistung der Erzeuger (**rMaxNomElectricalPower\_GenX**)
7. einmalig bei jeder ansteigenden Flanke am Eingang **xEn**

### CODESYS

InOut:

| Scope       | Name                              | Type                                    | Initial          |
| ----------- | --------------------------------- | --------------------------------------- | ---------------- |
| Input       | `xEn`                             | `BOOL`                                  | TRUE             |
| Input       | `xUpdateDeviceOutputs`            | `BOOL`                                  | FALSE            |
| Input       | `xResError`                       | `BOOL`                                  | FALSE            |
| Input       | `rElectricalPower`                | `REAL`                                  | 0.0              |
| Input       | `rMaxElectricalPower_Con`         | `REAL`                                  | 100.0            |
| Input       | `rMaxElectricalPower_Gen`         | `REAL`                                  | -100.0           |
| Input       | `wActiveNumberOfDevices_Con`      | `WORD`                                  | 4                |
| Input       | `xFb_Con1`                        | `BOOL`                                  | FALSE            |
| Input       | `xFb_Con2`                        | `BOOL`                                  | FALSE            |
| Input       | `xFb_Con3`                        | `BOOL`                                  | FALSE            |
| Input       | `xFb_Con4`                        | `BOOL`                                  | FALSE            |
| Input       | `xAlarm_Con1`                     | `BOOL`                                  | FALSE            |
| Input       | `xAlarm_Con2`                     | `BOOL`                                  | FALSE            |
| Input       | `xAlarm_Con3`                     | `BOOL`                                  | FALSE            |
| Input       | `xAlarm_Con4`                     | `BOOL`                                  | FALSE            |
| Input       | `udiOpHours_Con1`                 | `UDINT`                                 | 0                |
| Input       | `udiOpHours_Con2`                 | `UDINT`                                 | 0                |
| Input       | `udiOpHours_Con3`                 | `UDINT`                                 | 0                |
| Input       | `udiOpHours_Con4`                 | `UDINT`                                 | 0                |
| Input       | `wActiveNumberOfDevices_Gen`      | `WORD`                                  | 4                |
| Input       | `xFb_Gen1`                        | `BOOL`                                  | FALSE            |
| Input       | `xFb_Gen2`                        | `BOOL`                                  | FALSE            |
| Input       | `xFb_Gen3`                        | `BOOL`                                  | FALSE            |
| Input       | `xFb_Gen4`                        | `BOOL`                                  | FALSE            |
| Input       | `xAlarm_Gen1`                     | `BOOL`                                  | FALSE            |
| Input       | `xAlarm_Gen2`                     | `BOOL`                                  | FALSE            |
| Input       | `xAlarm_Gen3`                     | `BOOL`                                  | FALSE            |
| Input       | `xAlarm_Gen4`                     | `BOOL`                                  | FALSE            |
| Input       | `udiOpHours_Gen1`                 | `UDINT`                                 | 0                |
| Input       | `udiOpHours_Gen2`                 | `UDINT`                                 | 0                |
| Input       | `udiOpHours_Gen3`                 | `UDINT`                                 | 0                |
| Input       | `udiOpHours_Gen4`                 | `UDINT`                                 | 0                |
| Input       | `xUpdateRedundance4_Con`          | `BOOL`                                  | FALSE            |
| Input       | `xUpdateRedundance4_Gen`          | `BOOL`                                  | FALSE            |
| Output      | `xLoadRejection_Con`              | `BOOL`                                  | FALSE            |
| Output      | `rTotalNomElectricalPower_Con`    | `REAL`                                  | 0.0              |
| Output      | `rControlSignal_Con`              | `REAL`                                  | 0.0              |
| Output      | `wNumberOfOperationalDevices_Con` | `WORD`                                  | 0                |
| Output      | `udiCurrentSequence_Con`          | `UDINT`                                 | 0                |
| Output      | `sCurrentSequence_Con`            | `STRING`                                | ‘’               |
| Output      | `stOutputs_Con1`                  | stDevicesOutputsCon\_PowerFeedOptimizer |                  |
| Output      | `stOutputs_Con2`                  | stDevicesOutputsCon\_PowerFeedOptimizer |                  |
| Output      | `stOutputs_Con3`                  | stDevicesOutputsCon\_PowerFeedOptimizer |                  |
| Output      | `stOutputs_Con4`                  | stDevicesOutputsCon\_PowerFeedOptimizer |                  |
| Output      | `eOperationalCondition_Con`       | eRedundance3\_OperationalMode           |                  |
| Output      | `xLoadConnection_Gen`             | `BOOL`                                  | FALSE            |
| Output      | `rTotalNomElectricalPower_Gen`    | `REAL`                                  | 0.0              |
| Output      | `rControlSignal_Gen`              | `REAL`                                  | 0.0              |
| Output      | `wNumberOfOperationalDevices_Gen` | `WORD`                                  | 0                |
| Output      | `udiCurrentSequence_Gen`          | `UDINT`                                 | 0                |
| Output      | `sCurrentSequence_Gen`            | `STRING`                                | ‘’               |
| Output      | `stOutputs_Gen1`                  | stDevicesOutputsGen\_PowerFeedOptimizer |                  |
| Output      | `stOutputs_Gen2`                  | stDevicesOutputsGen\_PowerFeedOptimizer |                  |
| Output      | `stOutputs_Gen3`                  | stDevicesOutputsGen\_PowerFeedOptimizer |                  |
| Output      | `stOutputs_Gen4`                  | stDevicesOutputsGen\_PowerFeedOptimizer |                  |
| Output      | `eOperationalCondition_Gen`       | eRedundance3\_OperationalMode           |                  |
| Output      | `xErr`                            | `BOOL`                                  | FALSE            |
| Output      | `sErrorCodes_General`             | `STRING`                                | ‘’               |
| Output      | `sErrorCodes_Con`                 | `STRING`                                | ‘’               |
| Output      | `sErrorCodes_Gen`                 | `STRING`                                | ‘’               |
| Input Const | `tOffDelayCmd_Gen4`               | `TIME`                                  | TIME#10s0ms      |
| Input Const | `tOnDelayCmd_Gen4`                | `TIME`                                  | TIME#10s0ms      |
| Input Const | `rMaxNomElectricalPower_Gen4`     | `REAL`                                  | -10.0            |
| Input Const | `rMinNomElectricalPower_Gen4`     | `REAL`                                  | 0.0              |
| Input Const | `tOffDelayCmd_Gen3`               | `TIME`                                  | TIME#10s0ms      |
| Input Const | `tOnDelayCmd_Gen3`                | `TIME`                                  | TIME#10s0ms      |
| Input Const | `rMaxNomElectricalPower_Gen3`     | `REAL`                                  | -10.0            |
| Input Const | `rMinNomElectricalPower_Gen3`     | `REAL`                                  | 0.0              |
| Input Const | `tOffDelayCmd_Gen2`               | `TIME`                                  | TIME#10s0ms      |
| Input Const | `tOnDelayCmd_Gen2`                | `TIME`                                  | TIME#10s0ms      |
| Input Const | `rMaxNomElectricalPower_Gen2`     | `REAL`                                  | -10.0            |
| Input Const | `rMinNomElectricalPower_Gen2`     | `REAL`                                  | 0.0              |
| Input Const | `tOffDelayCmd_Gen1`               | `TIME`                                  | TIME#10s0ms      |
| Input Const | `tOnDelayCmd_Gen1`                | `TIME`                                  | TIME#10s0ms      |
| Input Const | `rMaxNomElectricalPower_Gen1`     | `REAL`                                  | -10.0            |
| Input Const | `rMinNomElectricalPower_Gen1`     | `REAL`                                  | 0.0              |
| Input Const | `tOffDelayCmd_Con4`               | `TIME`                                  | TIME#10s0ms      |
| Input Const | `tOnDelayCmd_Con4`                | `TIME`                                  | TIME#10s0ms      |
| Input Const | `rMaxNomElectricalPower_Con4`     | `REAL`                                  | 10.0             |
| Input Const | `rMinNomElectricalPower_Con4`     | `REAL`                                  | 0.0              |
| Input Const | `tOffDelayCmd_Con3`               | `TIME`                                  | TIME#10s0ms      |
| Input Const | `tOnDelayCmd_Con3`                | `TIME`                                  | TIME#10s0ms      |
| Input Const | `rMaxNomElectricalPower_Con3`     | `REAL`                                  | 10.0             |
| Input Const | `rMinNomElectricalPower_Con3`     | `REAL`                                  | 0.0              |
| Input Const | `tOffDelayCmd_Con2`               | `TIME`                                  | TIME#10s0ms      |
| Input Const | `tOnDelayCmd_Con2`                | `TIME`                                  | TIME#10s0ms      |
| Input Const | `rMaxNomElectricalPower_Con2`     | `REAL`                                  | 10.0             |
| Input Const | `rMinNomElectricalPower_Con2`     | `REAL`                                  | 0.0              |
| Input Const | `tOffDelayCmd_Con1`               | `TIME`                                  | TIME#10s0ms      |
| Input Const | `tOnDelayCmd_Con1`                | `TIME`                                  | TIME#10s0ms      |
| Input Const | `rMaxNomElectricalPower_Con1`     | `REAL`                                  | 10.0             |
| Input Const | `rMinNomElectricalPower_Con1`     | `REAL`                                  | 0.0              |
| Input Const | `rTn_Gen`                         | `REAL`                                  | 180.0            |
| Input Const | `rTn_Con`                         | `REAL`                                  | 180.0            |
| Input Const | `tTimeConstant_EP`                | `TIME`                                  | TIME#15s0ms      |
| Input Const | `rInitValue_EP`                   | `REAL`                                  | 0.0              |
| Input Const | `eInitial_EP`                     | eInit                                   | eInit.InputValue |
| Input Const | `tInitDelay_EP`                   | `TIME`                                  | TIME#5s0ms       |
| Input Const | `xConOperatingHours_Gen`          | `BOOL`                                  | TRUE             |
| Input Const | `xEnFb_Gen`                       | `BOOL`                                  | FALSE            |
| Input Const | `wTolerance_Gen`                  | `WORD`                                  | 100              |
| Input Const | `xConOperatingHours_Con`          | `BOOL`                                  | TRUE             |
| Input Const | `xEnFb_Con`                       | `BOOL`                                  | FALSE            |
| Input Const | `wTolerance_Con`                  | `WORD`                                  | 100              |
| Input Const | `tTimeUpdateDeviceOutputs`        | `TIME`                                  | TIME#3s0ms       |
