Redundance3

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

Name
Datentyp
Wertebereich
Initialwert
Funktion

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

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 )

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

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

  1. wActiveNumberOfDevices > 3\

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

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

  2. 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:

Scope
Name
Type
Initial

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