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

Schnittstellen
Eingänge
wTotalNumberOfDevices
WORD
2
Gesamtanzahl an Geräten ( 0 - cwMaxMumberOfDevices )
wActiveNumberOfDevices
WORD
0
Anzahl der aktiven Geräte ( 0 - wTotalNumberOfDevices )
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 )
xFb4
BOOL
FALSE
Betrieb - Gerät 4 ( TRUE = Betrieb )
xFb5
BOOL
FALSE
Betrieb - Gerät 5 ( TRUE = Betrieb )
xFb6
BOOL
FALSE
Betrieb - Gerät 6 ( TRUE = Betrieb )
xFb7
BOOL
FALSE
Betrieb - Gerät 7 ( TRUE = Betrieb )
xFb8
BOOL
FALSE
Betrieb - Gerät 8 ( 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 )
xAlarm4
BOOL
TRUE
Störung - Gerät 4 ( TRUE = Störung )
xAlarm5
BOOL
TRUE
Störung - Gerät 5 ( TRUE = Störung )
xAlarm6
BOOL
TRUE
Störung - Gerät 6 ( TRUE = Störung )
xAlarm7
BOOL
TRUE
Störung - Gerät 7 ( TRUE = Störung )
xAlarm8
BOOL
TRUE
Störung - Gerät 8 ( TRUE = Störung )
uiOperatingHours1
UDINT
0
Betriebsstunden - Gerät 1
uiOperatingHours2
UDINT
0
Betriebsstunden - Gerät 2
uiOperatingHours3
UDINT
0
Betriebsstunden - Gerät 3
uiOperatingHours4
UDINT
0
Betriebsstunden - Gerät 4
uiOperatingHours5
UDINT
0
Betriebsstunden - Gerät 5
uiOperatingHours6
UDINT
0
Betriebsstunden - Gerät 6
uiOperatingHours7
UDINT
0
Betriebsstunden - Gerät 7
uiOperatingHours8
UDINT
0
Betriebsstunden - Gerät 8
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 )
xCmd4
BOOL
FALSE
Freigabe - Gerät 4 ( TRUE = Freigabe )
xCmd5
BOOL
FALSE
Freigabe - Gerät 5 ( TRUE = Freigabe )
xCmd6
BOOL
FALSE
Freigabe - Gerät 6 ( TRUE = Freigabe )
xCmd7
BOOL
FALSE
Freigabe - Gerät 7 ( TRUE = Freigabe )
xCmd8
BOOL
FALSE
Freigabe - Gerät 8 ( TRUE = Freigabe )
wPrio1
WORD
0
Aktuelle Priorität des Geräts 1 ( 0 = keine, 1 - wTotalNumberOfDevices )
wPrio2
WORD
0
Aktuelle Priorität des Geräts 2 ( 0 = keine, 1 - wTotalNumberOfDevices )
wPrio3
WORD
0
Aktuelle Priorität des Geräts 3 ( 0 = keine, 1 - wTotalNumberOfDevices )
wPrio4
WORD
0
Aktuelle Priorität des Geräts 4 ( 0 = keine, 1 - wTotalNumberOfDevices )
wPrio5
WORD
0
Aktuelle Priorität des Geräts 5 ( 0 = keine, 1 - wTotalNumberOfDevices )
wPrio6
WORD
0
Aktuelle Priorität des Geräts 6 ( 0 = keine, 1 - wTotalNumberOfDevices )
wPrio7
WORD
0
Aktuelle Priorität des Geräts 7 ( 0 = keine, 1 - wTotalNumberOfDevices )
wPrio8
WORD
0
Aktuelle Priorität des Geräts 8 ( 0 = keine, 1 - wTotalNumberOfDevices )
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 - 8 gleichartigen Geräten in Abhängigkeit von den Einflußgrößen Anforderungen ( wActiveNumberOfDevices ), Betriebstunden ( uiOperatingHours ), Betriebszuständen ( xFb ) und Störzuständen ( xAlarm ).\
Eingang wTotalNumberOfDevices
Dieser Eingang dient zur Festlegung der Gesamt-Anzahl der verwendbaren Geräte. Die Geräte werden von den niedrigsten Gerätenummern her fortlaufend belegt. Beispiel: wTotalNumberOfDevices = 3: Es werden die Geräte 1 - 3 ( Eing#nge und Ausgänge ) verwandt / berücksichtigt. Zulässiger Bereich: 0 - cwMaxNumberOfDevices\
Eingang wActiveNumberOfDevices
Dieser Eingang dient zur Festlegung der Anzahl der Geräte, die aktuell verwendet werden sollen. Zulässiger Bereich: 0 - wTotalNumberOfDevices\
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 > wTotalNumberOfDevices\
wTotalNumberOfDevices > cwMaxNumberOfDevices\
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, wTotalNumberOfDevices = 3 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 ( Geräte 1 - wTotalNumberOfDevices ) ist verändert ( hohe Priorität )\
Die Gesamtanzahl an Geräten ( Eingang wTotalNumberOfDevices ) ( 1 - cwMaxNumberOfDevices ) hat sich verändert ( hohe Priorität )\
Die Betriebsstundenanzahl von mindestens einem betriebsbereiten Gerät ( Geräte 1 - wTotalNumberOfDevices ) hat sich verändert ( niedrige Priorität )\
Definition - Leerlauf: **xEnFb** = FALSE: Die Freigabeausgänge ‘xCmd’ aller betriebsbereiten Geräte ( Geräte 1 - *wTotalNumberOfDevices* ) sind inaktiv ( = FALSE ) **xEnFb** = TRUE: Die Betriebsmeldungen ‘xFb’ aller betriebsbereiten Geräte ( Geräte 1 - *wTotalNumberOfDevices* ) sind inaktiv ( = FALSE ) Definition - Volllast: **xEnFb** = FALSE: Die Freigabeausgänge ‘xCmd’ aller betriebsbereiten Geräte ( Geräte 1 - *wTotalNumberOfDevices* ) sind aktiv ( = TRUE ) **xEnFb** = TRUE: Die Betriebsmeldungen ‘xFb’ aller betriebsbereiten Geräte ( Geräte 1 - *wTotalNumberOfDevices* ) 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 ( Geräte 1 - *wTotalNumberOfDevices* ) **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 ( Geräte 1 - *wTotalNumberOfDevices* ) Umschaltung mit **hoher** Priorität ( = sofort ) in Abhängigkeit von den Störzuständen ( Eingänge *xAlarm* ) und dem Eingang
*wTotalNumberOfDevices’ Der Störzustand jedes Gerätes im Bereich 1 - wTotalNumberOfDevices wird zyklisch erfasst und auf Veränderungen hin ausgewertet. Der Eingang wTotalNumberOfDevices wird zyklisch erfasst und auf Veränderungen hin ausgewertet. Jedes gestörte Gerät ( Eingang xAlarm = TRUE ) im Bereich 1 - wTotalNumberOfDevices ist nicht mehr betriebsbereit. Jede Änderung im Störzustand von mindestens einem Gerät im Bereich 1 - wTotalNumberOfDevices löst eine sofortige Neuberechnung der Gerätefolge aus. Jede Änderung im Eingang wTotalNumberOfDevices 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 - wTotalNumberOfDevices werden zyklisch erfasst und auf Veränderungen hin ausgewertet. Die Betriebszustände und Freigabeausgänge jedes betriebsbereiten Gerätes im Bereich 1 - wTotalNumberOfDevices 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 <br/>*<br/> xCmd’
<br/>*<br/> xCmd’Die Zustände der Ausgänge der Geräte im Bereich 1 - *wTotalNumberOfDevices* werden abschließend wie folgt festgelegt: Die Freigabeausgänge der betriebsbereiten Geräte im Bereich 1 - *wTotalNumberOfDevices* 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 - *wTotalNumberOfDevices* 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 - *wTotalNumberOfDevices*. 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 usw.\
CODESYS
InOut:
Input
wTotalNumberOfDevices
WORD
2
Input
wActiveNumberOfDevices
WORD
0
Input
xFb1
BOOL
FALSE
Input
xFb2
BOOL
FALSE
Input
xFb3
BOOL
FALSE
Input
xFb4
BOOL
FALSE
Input
xFb5
BOOL
FALSE
Input
xFb6
BOOL
FALSE
Input
xFb7
BOOL
FALSE
Input
xFb8
BOOL
FALSE
Input
xAlarm1
BOOL
TRUE
Input
xAlarm2
BOOL
TRUE
Input
xAlarm3
BOOL
TRUE
Input
xAlarm4
BOOL
TRUE
Input
xAlarm5
BOOL
TRUE
Input
xAlarm6
BOOL
TRUE
Input
xAlarm7
BOOL
TRUE
Input
xAlarm8
BOOL
TRUE
Input
udiOperatingHours1
UDINT
0
Input
udiOperatingHours2
UDINT
0
Input
udiOperatingHours3
UDINT
0
Input
udiOperatingHours4
UDINT
0
Input
udiOperatingHours5
UDINT
0
Input
udiOperatingHours6
UDINT
0
Input
udiOperatingHours7
UDINT
0
Input
udiOperatingHours8
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
xCmd4
BOOL
FALSE
Output
xCmd5
BOOL
FALSE
Output
xCmd6
BOOL
FALSE
Output
xCmd7
BOOL
FALSE
Output
xCmd8
BOOL
FALSE
Output
wPrio1
WORD
0
Output
wPrio2
WORD
0
Output
wPrio3
WORD
0
Output
wPrio4
WORD
0
Output
wPrio5
WORD
0
Output
wPrio6
WORD
0
Output
wPrio7
WORD
0
Output
wPrio8
WORD
0
Output
xErr
BOOL
FALSE
Output
eOperationalCondition
eRedundance3_OperationalMode
Zuletzt aktualisiert

