Redundance3
Redundance3 (FB)
Redundance3 (FB)FUNCTION_BLOCK Redundance3
Kurzbeschreibung
Redundante Steuerung von 0 - 3 gleichartigen Geräten Einflussfaktoren: Anforderungen, Betriebsstunden, Betriebs- und Störzustände Typische Anwendung: Festlegung der Führungs- und Folgegeräte
Darstellung

Schnittstellen
Eingänge
wActiveNumberOfDevices
WORD
0
Anzahl der aktiven Geräte ( 0 - 3 )
xFb1
BOOL
FALSE
Betrieb - Gerät 1 ( TRUE = Betrieb )
xFb2
BOOL
FALSE
Betrieb - Gerät 2 ( TRUE = Betrieb )
xFb3
BOOL
FALSE
Betrieb - Gerät 3 ( TRUE = Betrieb )
xAlarm1
BOOL
TRUE
Störung - Gerät 1 ( TRUE = Störung )
xAlarm2
BOOL
TRUE
Störung - Gerät 2 ( TRUE = Störung )
xAlarm3
BOOL
TRUE
Störung - Gerät 3 ( TRUE = Störung )
uiOperatingHours1
UDINT
0
Betriebsstunden - Gerät 1
uiOperatingHours2
UDINT
0
Betriebsstunden - Gerät 2
uiOperatingHours3
UDINT
0
Betriebsstunden - Gerät 3
xUpdate
BOOL
Auslösung der Neuberechnung der Sequenz bei jeder ansteigenden Flanke
Ausgänge
udiCurrentSequence
UDINT
0
Aktuelle Gerätefolge als Integer
sCurrentSequence
STRING
‘’
Aktuelle Gerätefolge als String
wNumberOfOperationalDevices
WORD
0
Anzahl der betriebsbereiten Geräte
xCmd1
BOOL
FALSE
Freigabe - Gerät 1 ( TRUE = Freigabe )
xCmd2
BOOL
FALSE
Freigabe - Gerät 2 ( TRUE = Freigabe )
xCmd3
BOOL
FALSE
Freigabe - Gerät 3 ( TRUE = Freigabe )
wPrio1
WORD
0
Aktuelle Priorität des Geräts 1 ( 0 = keine, 1 - 3 )
wPrio2
WORD
0
Aktuelle Priorität des Geräts 2 ( 0 = keine, 1 - 3 )
wPrio3
WORD
0
Aktuelle Priorität des Geräts 3 ( 0 = keine, 1 - 3 )
xErr
BOOL
FALSE
Ausgang - Störung
eOperationalCondition
eRedundance3_OperationalMode
Nummer / Name des aktuelle Betriebszustands
Sollwerte / Parameter
xConOperatingHours
BOOL
TRUE
FALSE = Freigabe Folgeschaltung nur durch Eingang xUpdate, TRUE = Folgeschaltung automatisch nach Betriebsstunden
xEnFb
BOOL
TRUE
FALSE = Umschaltung nach Freigabe ( xCmdX ), TRUE = Umschaltung nach Betriebsmeldung ( xFbX )
wTolerance
WORD
100
Grenzwert - Betriebsstundendifferenz für direkten Folgewechsel im Teillastbetrieb
Funktionsbeschreibung
Allgemeines
Dieser Funktionsbaustein dient zur redundanten Steuerung von 0 - 3 gleichartigen Geräten in Abhängigkeit von den Einflußgrößen Anforderungen ( wActiveNumberOfDevices ), Betriebstunden ( uiOperatingHours ), Betriebszuständen ( xFb ) und Störzuständen ( xAlarm ).\
Eingang wActiveNumberOfDevices
Dieser Eingang dient zur Festlegung der Anzahl der Geräte, die aktuell verwendet werden sollen. Zulässiger Bereich: 0 - 3\
Eingang xUpdate
Jede ansteigende Flanke an diesem Eingang löst eine Neuberechnung der aktuellen Gerätefolge aus. Randbedingungen: xConOperationHours = FALSE, Betriebsstundendifferenz = 0 Stunden.\
Ausgang udiCurrentSequence
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. Beispiel: udiCurrentSequence = 145 bedeutet: Gerät 1 = Priorität 1, Gerät 4 = Priorität 2 und Gerät 5 = Priorität 3\
Ausgang sCurrentSequence
Dieser Ausgang zeigt stets die aktuelle Gerätefolge als String mit Trennzeichen an. Bezüglich der Prioritäten gilt dasselbe wie beim Ausgang udiCurrentSequence. Beispiel: sdiCurrentSequence = ‘1-4-5’ bedeutet: Gerät 1 = Priorität 1, Gerät 4 = Priorität 2 und Gerät 5 = Priorität 3\
Ausgang wNumberOfOperationalDevices
Dieser Ausgang zeigt stets die Anzahl der betriebsbereiten Geräte an.\
Ausgang Störung xErr
Dieser Ausgang ist aktiv ( = TRUE ), falls mindestens eine der nachfolgenden Bedingungen erfüllt ist.\
wActiveNumberOfDevices > 3\
wActiveNumberOfDevices > wOperationalNumberofDevices\
In allen übrigen Fällen ist der Ausgang *xErr* nicht aktiv ( = FALSE ).\
Ausgang eOperationalCondition
Dieser Ausgang stellt stets die aktuelle Lastsituation ( Leerlauf, Teillast, Volllast ) in Abhängigkeit vom Sollwert / Parameter xEnFb dar. xEnFb = FALSE: Die Freigabeausgänge xCmd der betriebsbereiten Geräte werden ausgewertet / berücksichtigt. xEnFb = TRUE: Die Betriebszustände xFb der betriebsbereiten Geräte werden ausgewertet / berücksichtigt. Beispiel: xEnFb = TRUE und xFb1 = TRUE und xFb2 = TRUE: Ausgang = PartLoad_Inputs_Fb\
Sollwert / Parameter xConOperatingHours
xConOperatingHours = FALSE: Die Umschaltung der Gerätefolge wird nur durch eine ansteigende Flanke am Eingang xUpdate ausgelöst. xConOperatingHours = TRUE: Die Umschaltung der Gerätefolge wird in Abhängigkeit von den Betriebsstunden, den Betriebsmeldungen ( bei xEnFb = TRUE ) und den Freigaben ( bei xEnFb = FALSE ) ausgelöst.\
Sollwert / Parameter xEnFb
xEnFb = FALSE: Die Freigabeausgänge ‘xCmd’ der betriebsbereiten Geräte werden ausgewertet / berücksichtigt. xEnFb = TRUE: Die Betriebszustände ‘xFb’ der betriebsbereiten Geräte werden ausgewertet / berücksichtigt.\
Sollwert / Parameter wTolerance
Dieser Sollwert bestimmt die maximale Betriebsstundendifferenz vor einer Umschaltung der Gerätefolge aufgrund der Betriebsstunden. \
Bestimmung der Gerätefolge
Eine Umschaltung der Gerätefolge kann generell nur erfolgen, falls mindestens eine der nachfolgenden Bedingungen erfüllt ist: \
Der Störzustand von mindestens einem Gerät ist verändert ( hohe Priorität )\
Die Betriebsstundenanzahl von mindestens einem betriebsbereiten Gerät hat sich verändert ( niedrige Priorität )\
Definition - Leerlauf: **xEnFb** = FALSE: Die Freigabeausgänge ‘xCmd’ aller betriebsbereiten Geräte sind inaktiv ( = FALSE ) **xEnFb** = TRUE: Die Betriebsmeldungen ‘xFb’ aller betriebsbereiten Geräte sind inaktiv ( = FALSE ) Definition - Volllast: **xEnFb** = FALSE: Die Freigabeausgänge ‘xCmd’ aller betriebsbereiten Geräte sind aktiv ( = TRUE ) **xEnFb** = TRUE: Die Betriebsmeldungen ‘xFb’ aller betriebsbereiten Geräte sind aktiv ( = TRUE ) Definition - Teillast: **xEnFb** = FALSE: Die Anzahl der Freigabeausgänge *xCmd* aller betriebsbereiten Geräte im Zustand aktiv ( = TRUE ) ist grösser/gleich 1 und kleiner als die Anzahl aller betriebsbereiten Geräte **xEnFb** = FALSE: Die Anzahl der Betriebsmeldungen *xFb* aller betriebsbereiten Geräte im Zustand aktiv ( = TRUE ) ist grösser/gleich 1 und kleiner als die Anzahl aller betriebsbereiten Geräte Umschaltung mit **hoher** Priorität ( = sofort ) in Abhängigkeit von den Störzuständen ( Eingänge *xAlarm* ) Der Störzustand jedes Gerätes im Bereich 1 - 3 wird zyklisch erfasst und auf Veränderungen hin ausgewertet. Jedes gestörte Gerät im Bereich 1 - 3 ( Eingang *xAlarm* = TRUE ) ist nicht mehr betriebsbereit. Jede Änderung im Störzustand von mindestens einem Gerät im Bereich 1 - 3 löst eine sofortige Neuberechnung der Gerätefolge aus. Umschaltung mit **niedriger** Priorität in Abhängigkeit von den Betriebsstunden ( Eingänge *udiOperationHours* ), Betriebszuständen ( Eingänge *xFb* ) und Freigabeausgängen ( Ausgänge *xCmd* ) der Geräte 1 - 3. Die Betriebsstunden jedes betriebsbereiten Gerätes im Bereich 1 - 3 werden zyklisch erfasst und auf Veränderungen hin ausgewertet. Die Betriebszustände und Freigabeausgänge jedes betriebsbereiten Gerätes im Bereich 1 - 3 werden zyklisch erfasst. Die Neuberechnung der Gerätefolge erfolgt, sobald eine der nachfolgend beschriebenen Situationen gegeben ist: **Situation 1** ( *xConOperationHours* = FALSE, ansteigende Flanke am Eingang *xUpdate* ) Es erfolgt eine Neuberechung der Gerätefolge mit einer Betriebsstundendifferenz von 0 Stunden, d.h. das ungestörte Gerät mit der geringsten Betriebsstundenanzahl hat die höchste Priorität ( bei Betriebsstunden-Gleichheit hat das Gerät mit der niedrigeren Nummer die höhere Priorität ). **Situation 2** ( *xConOperationHours* = TRUE, Leerlauf bzw. Volllast ) Im Leerlauf bzw. unter Volllast erfolgt eine Neuberechung der Gerätefolge mit einer Betriebsstundendifferenz von 0 Stunden, d.h. das ungestörte Gerät mit der geringsten Betriebsstundenanzahl hat die höchste Priorität ( bei Betriebsstunden-Gleichheit hat das Gerät mit der niedrigeren Nummer die höhere Priorität ). Die Neuberechnung der Gerätefolge wird ausgelöst, falls sich die Betriebsstundenanzahl von mindestens einem betriebsbereiten Gerät verändert hat. **Situation 3** ( *xConOperationHours* = TRUE, Teillast ) Beim erstmaligen Sprung in den Teillastbetrieb erfolgt eine Neuberechung der Gerätefolge mit einer Betriebsstundendifferenz von 0 Stunden, d.h. das ungestörte Gerät mit der geringsten Betriebsstundenanzahl hat die höchste Priorität ( bei Betriebsstunden-Gleichheit hat das Gerät mit der niedrigeren Nummer die höhere Priorität ). Im regulären Teillastbetrieb erfolgt eine Neuberechung der Gerätefolge mit einer Betriebsstundendifferenz von **wTolerance** Stunden. Die Neuberechnung der Gerätefolge wird ausgelöst, falls sich die Betriebsstundenanzahl von mindestens einem betriebsbereiten Gerät verändert hat. \
Freigabeausgänge xCmd’
Die Zustände der Ausgänge der Geräte im Bereich 1 - 3 werden abschließend wie folgt festgelegt: Die Freigabeausgänge der betriebsbereiten Geräte im Bereich 1 - 3 werden aktiviert, falls deren aktuelle Priorität <= der Anzahl der angeforderten Geräte ( Eingang *wActiveNumberOfDevices* ) ist. Die Freigabeausgänge der betriebsbereiten Geräte im Bereich 1 - 3 werden deativiert, falls deren aktuelle Priorität > der Anzahl der angeforderten Geräte ( Eingang *wActiveNumberOfDevices* ) ist. \
Prioritätsausgänge wPrio
Die Prioritätsausgänge jedes Geräts enthalten stets die aktuelle Priorität im Bereich 0 - 3. Priorität = 0: Das Gerät hat keine oder eine ungültige Priorität Priorität = 1: Das Gerät hat die höchste Priorität Priorität = 2: Das Gerät hat die zweithöchste Priorität Priorität = 3: Das Gerät hat die dritthöchste Priorität\
CODESYS
InOut:
Input
wActiveNumberOfDevices
WORD
0
Input
xFb1
BOOL
FALSE
Input
xFb2
BOOL
FALSE
Input
xFb3
BOOL
FALSE
Input
xAlarm1
BOOL
TRUE
Input
xAlarm2
BOOL
TRUE
Input
xAlarm3
BOOL
TRUE
Input
udiOperatingHours1
UDINT
0
Input
udiOperatingHours2
UDINT
0
Input
udiOperatingHours3
UDINT
0
Input
xUpdate
BOOL
Input Const
xConOperatingHours
BOOL
TRUE
Input Const
xEnFb
BOOL
TRUE
Input Const
wTolerance
WORD
100
Output
udiCurrentSequence
UDINT
0
Output
sCurrentSequence
STRING
‘’
Output
wNumberOfOperationalDevices
WORD
0
Output
xCmd1
BOOL
FALSE
Output
xCmd2
BOOL
FALSE
Output
xCmd3
BOOL
FALSE
Output
wPrio1
WORD
0
Output
wPrio2
WORD
0
Output
wPrio3
WORD
0
Output
xErr
BOOL
FALSE
Output
eOperationalCondition
eRedundance3_OperationalMode
Zuletzt aktualisiert

