Redundance8

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

Name
Datentyp
Wertebereich
Initialwert
Funktion

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

Name
Datentyp
Wertebereich
Initialwert
Funktion

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

Name
Datentyp
Wertebereich
Initialwert
Funktion

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.\

  1. wActiveNumberOfDevices > wTotalNumberOfDevices\

  2. wTotalNumberOfDevices > cwMaxNumberOfDevices\

  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, 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: \

  1. Der Störzustand von mindestens einem Gerät ( Geräte 1 - wTotalNumberOfDevices ) ist verändert ( hohe Priorität )\

  2. Die Gesamtanzahl an Geräten ( Eingang wTotalNumberOfDevices ) ( 1 - cwMaxNumberOfDevices ) hat sich verändert ( hohe Priorität )\

  3. 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’

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:

Scope
Name
Type
Initial

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