FB_HVACPriority_REAL_8

FB_HVACPriority_REAL_8 1:

Der Funktionsbaustein kann als Priorisierung von Ereignissen oder als Muliplexer eingesetzt werden. Diese Auswahl wird mittels des Enums eCtrlMode vorgenommen.

Der Funktionsbaustein kann als Priorisierung von Ereignissen verwendet werden, wenn eCtrlMode = eHVACCtrlMode_Auto ist. Der Ausgang rValueOut wird über die eintretenden Ereignisse der Eingänge bEvent1-8, rValue1-8 und dem Wirksinn der Priorisierung bDirection gesteuert.
bDirection
= FALSE bedeutet, dass die Ereignisse in aufsteigender Form von 1 nach 8 eine höhere Priorität besitzen. Ist bEnable = TRUE AND eCtrlMode = eHVACCtrlMode_Auto AND bDirection = FALSE AND bEvent7 = TRUE (höchstes eingetretenes Ereignis in Tabelle 1 Spalte 1), dann hat rValueOut den Wert von rValue7.
bDirection = TRUE bedeutet, dass die Ereignisse in absteigender Form von 8 nach 1 eine höhere Priorität besitzen. Ist bEnable = TRUE AND eCtrlMode = eHVACCtrlMode_Auto AND bDirection = TRUE AND bEvent1 = TRUE (niedrigstes eingetretenes Ereignis in Tabelle 2 Spalte 1), dann hat rValueOut den Wert von rValue1.

Der Funktionsbaustein kann als Multiplexer verwendet werden, wenn eCtrlMode = eHVACCtrlMode_Manual ist. Der Wert von iManualValue bezieht sich auf eine der VAR_IN_OUT-Variablen rValue1-8, deren Wert über rValueOut ausgegeben wird. Ist bEnable = TRUE AND eCtrlMode = eHVACCtrlMode_Manual AND iManualValue = 2, so ist rValueOut = rValue2, siehe Tabelle 3.

Hinweis

Eine sich häufig ändernde Variable darf nicht an die VAR_IN_OUT-Variablen rValue1-8 angelegt werden, wenn eDataSecurityType = eHVACDataSecurityType_Persistent ist. Dieses würde zu einem frühzeitigen Verschleiß des Speichermediums der Steuerung führen. Wenn sich die VAR_IN_OUT-Variablen rValue1-8 häufig ändern und nicht persistent abgelegt werden sollen, muss eDataSecurityType = eDataSecurityType_Idle sein.

Tabelle 1: Priorisierung von Ereignissen in aufsteigender Form von 1 nach 8

In der Tabelle 1 ist zu sehen, dass bDirection = FALSE ist. Das bedeutet, dass die Ereignisse in aufsteigender Form von 1 nach 8 den Ausgabewert rValueOut bestimmen. Ist bEnable = TRUE AND eCtrlMode = eHVACCtrlMode_Auto AND bDirection = FALSE AND bEvent7 = TRUE (höchstes eingetretenes Ereignis in Spalte 1), dann ist rValueOut = rValue7.

FB_HVACPriority_REAL_8 2:

Tabelle 2: Priorisierung von Ereignissen in absteigender Form von 8 nach 1

In der Tabelle 2 ist zu sehen, dass bDirection = TRUE ist. Das bedeutet, dass die Ereignisse in absteigender Form von 8 nach 1 den Ausgabewert rValueOut bestimmen. Ist bEnable = TRUE AND eCtrlMode = eHVACCtrlMode_Auto AND bDirection = TRUE AND bEvent1 = TRUE (niedrigstes eingetretenes Ereignis in Tabelle 2 Spalte 1), dann ist rValueOut = rValue1.

FB_HVACPriority_REAL_8 3:

Tabelle 3: Multiplexer

Ist bEnable = TRUE AND eCtrlMode = eHVACCtrlMode_Manual AND iManualValue = 2, dann ist rValueOut = 2.

FB_HVACPriority_REAL_8 4:

VAR_INPUT

eDataSecurityType : E_HVACDataSecurityType;
bEnable           : BOOL;
bEvent1 - bEvent8 : BOOL;
eCtrlMode         : E_HVACCtrlMode;
iManualValue      : INT;             0..8
bDirection        : BOOL;

eDataSecurityType:Wenn eDataSecurityType:= eHVACDataSecurityType_Persistent ist, werden die persistenten VAR_IN_OUT-Variablen des Funktionsbausteins bei einer Wertänderung im Flash des Rechners abgelegt. Dafür ist es zwingend erforderlich den Funktionsbaustein FB_HVACPersistentDataHandling einmalig im Hauptprogramm, das zyklisch aufgerufen wird, zu instanziieren. Ansonsten wird der instanziierte FB intern nicht freigegeben.

Eine Wertänderung kann vom Gebäudeleitsystem, einem lokalen Bediengerät oder von einem Schreibzugriff von TwinCAT aus erfolgen. Beim Neustart des Rechners werden die gesicherten Daten automatisch vom Flash in den RAM zurück gelesen.

Anwendungsbeispiel: example_persistent.zip

Bei eDataSecurityType:= eHVACDataSecurityType_Idle werden die persistent deklarierten Variablen nicht spannungsausfallsicher gespeichert.

Hinweis

Eine sich zyklisch ändernde Variable darf niemals mit der IN_OUT-Variablen eines Funktionsbausteins verbunden werden, wenn eDataSecurityType:= eHVACDataSecurityType_Persistent ist. Es würde zu einem frühzeitigen Verschleiß des Flashspeichers führen.

bEnable: Über ein TRUE wird der Funktionsbaustein freigegeben. Ist bEnable = FALSE, so wird rValueOut konstant auf 0 gesetzt.

eCtrlMode: Mittels des Enums wird die Betriebsart des Funktionsbausteins vorgegeben (siehe E_HVACCtrlMode).
Ist eCtrlMode = eHVACCtrlMode_Auto, so stellt der Funktionsbaustein eine Priorisierung von Ereignissen dar. Ist bEnable = TRUE AND eCtrlMode = eHVACCtrlMode_Auto so wird der Ausgang rValueOut über die eintretenden Ereignisse der Eingänge bEvent1-8, rValue1-8 und des Wirksinns der Priorisierung bDirection gesteuert, siehe Tabelle 1 und Tabelle 2
Ist eCtrlMode = eHVACCtrlMode_Manual, so stellt der Funktionsbaustein einen Multiplexer dar. Ist bEnable = TRUE AND eCtrlMode = eHVACCtrlMode_Manual, so wird der Wert des Ausgangs rValueOut über iManualValue gesteuert. Ist iManualProfile = 5, so ist rValueOut = rValue5, siehe Tabelle 3

iManualProfile: Ist die Betriebsart eCtrlMode = eHVACCtrlMode_Manual (Multiplexer) AND bEnable = TRUE AND bError = FALSE, so wird der Wert des Ausgangs rValueOut über iManualValue gesteuert. Ist iManualProfile = 5, so ist rValueOut = rValue5, siehe Tabelle 3

bEvent1-8: Der Ausgang rValueOut wird über die eintretenden Ereignisse der Eingänge bEvent1-8, rValue1-8 und dem Wirksinn der Priorisierung bDirection gesteuert.
bDirection
= FALSE bedeutet, dass die Ereignisse in aufsteigender Form von 1 nach 8 den Ausgabewert rValueOut bestimmen. Ist bEnable = TRUE AND eCtrlMode = eHVACCtrlMode_AutoANDbDirection = FALSE AND bEvent7 = TRUE (höchstes eingetretenes Ereignis in Tabelle 1 Spalte 1), dann ist rValueOut = rValue7.
bDirection = TRUE bedeutet, dass die Ereignisse in absteigender Form von 8 nach 1 den Ausgabewert rValueOut bestimmen. Ist bEnable = TRUE AND eCtrlMode = eHVACCtrlMode_Auto AND bDirection = TRUE AND bEvent1 = TRUE (niedrigstes eingetretenes Ereignis in Tabelle 2 Spalte 1), dann ist rValueOut = rValue1.
Die Variablen bEvent1-8 und bDirection werden nur dann berücksichtigt, wenn eCtrlMode = eHVACCtrlMode_Auto ist.

bDirection: Der Funktionsbaustein kann als Priorisierung von Ereignissen verwendet werden, wenn eCtrlMode = eHVACCtrlMode_Auto ist. Der Ausgang rValueOut wird über die eintretenden Ereignisse der Eingänge bEvent1-8, rValue1-8 und dem Wirksinn der Priorisierung bDirection gesteuert.
bDirection
= FALSE bedeutet, dass die Ereignisse in aufsteigender Form von 1 nach 8 den Ausgabewert rValueOut bestimmen. Ist bEnable = TRUE AND eCtrlMode = eHVACCtrlMode_Auto AND bDirection = FALSE AND bEvent7 = TRUE (höchstes eingetretenes Ereignis in Tabelle 1 Spalte 1), dann ist rValueOut = rValue7.
bDirection = TRUE bedeutet, dass die Ereignisse in absteigender Form von 8 nach 1 den Ausgabewert rValueOut bestimmen. Ist bEnable = TRUE AND eCtrlMode = eHVACCtrlMode_Auto AND bDirection = TRUE AND bEvent1 = TRUE (niedrigstes eingetretenes Ereignis in Tabelle 2 Spalte 1), dann ist rValueOut = rValue1.
Die Variablen bEvent1-8 und bDirection werden nur dann berücksichtigt, wenn eCtrlMode = eHVACCtrlMode_Auto ist.

VAR_OUTPUT

rValueOut           : REAL;
bActive             : BOOL;
bEdgeNewEvent       : BOOL;
iValueNumber        : INT;

rValueOut: Der Funktionsbaustein kann als Priorisierung von Ereignissen oder als Muliplexer eingesetzt werden. Diese Auswahl wird mittels des Enums eCtrlMode vorgenommen.

Der Funktionsbaustein kann als Priorisierung von Ereignissen verwendet werden, wenn eCtrlMode = eHVACCtrlMode_Auto ist. Der Ausgang rValueOut wird über die eintretenden Ereignisse der Eingänge bEvent1-8, rValue1-8 und dem Wirksinn der Priorisierung bDirection gesteuert.
bDirection
= FALSE bedeutet, dass die Ereignisse in aufsteigender Form von 1 nach 8 den Ausgabewert rValueOut bestimmen. Ist bEnable = TRUE AND eCtrlMode = eHVACCtrlMode_Auto AND bDirection = FALSE AND bEvent7 = TRUE (höchstes eingetretenes Ereignis in Tabelle 1 Spalte 1), dann ist rValueOut = rValue7.
bDirection = TRUE bedeutet, dass die Ereignisse in absteigender Form von 8 nach 1 den Ausgabewert rValueOut bestimmen. Ist bEnable = TRUE AND eCtrlMode = eHVACCtrlMode_Auto AND bDirection = TRUE AND bEvent1 = TRUE (niedrigstes eingetretenes Ereignis in Tabelle 2 Spalte 1), dann ist rValueOut = rValue1.

Der Funktionsbaustein kann als Multiplexer verwendet werden, wenn eCtrlMode = eHVACCtrlMode_Manual ist. Der Wert von iManualValue bezieht sich auf eine von den VAR_IN_OUT-Variablen rValue1-8, deren Wert über rValueOut ausgegeben wird. Ist bEnable = TRUE AND eCtrlMode = eHVACCtrlMode_Manual AND iManualValue = 2, so ist rValueOut = rValue2, siehe Tabelle 3.

bActive: bActive wird TRUE , wenn

1. bEnable = TRUE AND eCtrlMode = eHVACCtrlMode_Auto und eine der Eingangsvariablen bEvent1-8 = TRUE ist.

2. bEnable = TRUE AND eCtrlMode = eHVACCtrlMode_Manual AND iManualValue > 0 ist

bEdgeNewEvent: Ist für einen SPS-Zyklus TRUE, wenn

1. bEnable = TRUE AND eCtrlMode = eHVACCtrlMode_Auto und sich das entscheidende Ereignis (bEvent1-8) zur Steuerung des Ausgangs rValueOut mittels rValue1-8 geändert hat.

2. bEnable = TRUE AND eCtrlMode = eHVACCtrlMode_Manual und mit jeder Änderung von iManualValue

iValueNumber: Mittels der Variable iValueNumber wird angezeigt, von welcher Variable der Wert an rValueOut ausgegeben wird. Ist rValueOut = rValue7, so ist iValueNumber = 7, siehe Tabelle 1, Tabelle 2 und Tabelle 3

VAR_IN_OUT

rValue1-8        : REAL;

rValue1-8: Mittels der Variablen rValue1 bis rValue8 wird der Wert der Ausgangsvariablen rValueOut bestimmt. rValueOut = rValueX

Wird der Funktionsbaustein als Priorisierung von Ereignissen eingesetzt, so wird jede der Variablen rValue1-8 einem Ereignis zugeordnet. rValue1 wird dem Ereignis bEvent1 zugeordnet, rValue2 dem Ereignis bEvent2, rValue3 dem Ereignis bEvent3,..., rValue8 dem Ereignis bEvent8

Wird der Funktionsbaustein als Muliplexer eingesetzt werden, so wird jede der Variablen rValue1-8 dem Wert von iManualValue zugeordnet. Ist iManualValue = 1, dann ist rValueOut = rValue1. Ist iManualValue = 2, dann ist rValueOut = rValue2.... Ist iManualValue = 8, dann ist rValueOut = rValue8.

Die Variable wird persistent gespeichert.

Voraussetzungen

Entwicklungsumgebung

erforderliche Bibliothek

Erforderliche Function

TwinCAT 3.1 ab Build 4022.16

Tc2_HVAC V3.3.1.0

TF8000 | TC3 HVAC V1.0.0.0