FB_HVACPriority_INT_16

FB_HVACPriority_INT_16 1:

Anwendung

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

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

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 iValue1-16, deren Wert über iValueOut ausgegeben wird. Ist bEnable = TRUEANDeCtrlMode = eHVACCtrlMode_ManualAND iManualValue = 2, so ist iValueOut = iValue2, siehe Tabelle 3.

Hinweis

Eine sich häufig ändernde Variable darf nicht an die VAR_IN_OUT-Variablen iValue1-16 angelegt werden, wenn eDataSecurityType = eHVACDataSecurityType_Persistentist. Dieses würde zu einem frühzeitigen Verschleiß des Speichermediums der Steuerung führen. Wenn sich die VAR_IN_OUT-Variablen iValue1-16 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 16

Tabelle 1

In der Tabelle 1 ist zu sehen, dass bDirection = FALSE ist. Das bedeutet, dass die Ereignisse in aufsteigender Form von 1 nach 16 den Ausgabewert iValueOut bestimmen. Ist bEnable = TRUEANDeCtrlMode = eHVACCtrlMode_AutoANDbDirection = FALSEANDbEvent15 = TRUE (höchstes eingetretenes Ereignis in Spalte 1), dann ist iValueOut = iValue15.

FB_HVACPriority_INT_16 2:

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

Tabelle 2

In der Tabelle 2 ist zu sehen, dass bDirection = TRUE ist. Das bedeutet, dass die Ereignisse in absteigender Form von 16 nach 1 den Ausgabewert iValueOut bestimmen. Ist bEnable = TRUEANDeCtrlMode = eHVACCtrlMode_AutoANDbDirection = TRUEANDbEvent1 = TRUE (niedrigstes eingetretenes Ereignis in Tabelle 2 Spalte 1), dann ist iValueOut = iValue1.

FB_HVACPriority_INT_16 3:

Tabelle 3: Multiplexer

Tabelle 3

Ist bEnable = TRUEANDeCtrlMode = eHVACCtrlMode_ManualANDiManualValue = 2, dann ist iValueOut = 2.

FB_HVACPriority_INT_16 4:

Anwendungsbeispiel

Download

Benötigte Bibliothek

tchvac.zip

TcHVAC.lib

VAR_INPUT

eDataSecurityType : E_HVACDataSecurityType;
bEnable           : BOOL;
bEvent1 - bEvent8 : BOOL;
eCtrlMode         : E_HVACCtrlMode;
iManualValue      : INT;             0..16
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 instanzieren. Ansonsten wird der instanzierte 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: FB_HVACPriority_INT_16 5: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 iValueOut konstant auf 0 gesetzt.

eCtrlMode: Mittels des Enums wird die Betriebsart des Funktionsbausteins vorgegeben.
Ist eCtrlMode = eHVACCtrlMode_Auto, so stellt der Funktionsbaustein eine Priorisierung von Ereignissen dar. Ist bEnable = TRUEANDeCtrlMode = eHVACCtrlMode_Auto so wird der Ausgang iValueOut über die eintretenden Ereignisse der Eingänge bEvent1-16, iValue1-16 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 = TRUEANDeCtrlMode = eHVACCtrlMode_Manual, so wird der Wert des Ausgangs iValueOut über iManualValue gesteuert. Ist iManualProfile = 5, so ist iValueOut = iValue5, siehe Tabelle 3

iManualProfile: Ist die Betriebsart eCtrlMode = eHVACCtrlMode_Manual (Multiplexer) ANDbEnable = TRUEANDbError = FALSE, so wird der Wert des Ausgangs iValueOut über iManualValue gesteuert. Ist iManualProfile = 5, so ist iValueOut = iValue5, siehe Tabelle 3

bEvent1-16: Der Ausgang iValueOut wird über die eintretenden Ereignisse der Eingänge bEvent1-16, iValue1-16 und dem Wirksinn der Priorisierung bDirection gesteuert.
bDirection
= FALSE bedeutet, dass die Ereignisse in aufsteigender Form von 1 nach 16 den Ausgabewert iValueOut bestimmen. Ist bEnable = TRUEANDeCtrlMode = eHVACCtrlMode_AutoANDbDirection = FALSEANDbEvent15 = TRUE (höchstes eingetretenes Ereignis in Tabelle 1 Spalte 1), dann ist iValueOut = iValue15.
bDirection = TRUE bedeutet, dass die Ereignisse in absteigender Form von 16 nach 1 den Ausgabewert iValueOut bestimmen. Ist bEnable = TRUEANDeCtrlMode = eHVACCtrlMode_AutoANDbDirection = TRUEANDbEvent1 = TRUE (niedrigstes eingetretenes Ereignis in Tabelle 2 Spalte 1), dann ist iValueOut = iValue1.
Die Variablen bEvent1-16 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 iValueOut wird über die eintretenden Ereignisse der Eingänge bEvent1-16, iValue1-16 und dem Wirksinn der Priorisierung bDirection gesteuert.
bDirection
= FALSE bedeutet, dass die Ereignisse in aufsteigender Form von 1 nach 16 den Ausgabewert iValueOut bestimmen. Ist bEnable = TRUEANDeCtrlMode = eHVACCtrlMode_AutoANDbDirection = FALSEANDbEvent15 = TRUE (höchstes eingetretenes Ereignis in Tabelle 1 Spalte 1), dann ist iValueOut = iValue15.
bDirection = TRUE bedeutet, dass die Ereignisse in absteigender Form von 16 nach 1 den Ausgabewert iValueOut bestimmen. Ist bEnable = TRUEANDeCtrlMode = eHVACCtrlMode_AutoANDbDirection = TRUEANDbEvent1 = TRUE (niedrigstes eingetretenes Ereignis in Tabelle 2 Spalte 1), dann ist iValueOut = iValue1.
Die Variablen bEvent1-16 und bDirection werden nur dann berücksichtigt, wenn eCtrlMode = eHVACCtrlMode_Auto ist.

VAR_OUTPUT

iValueOut           : INT;
bActive             : BOOL;
bEdgeNewEvent       : BOOL;
iValueNumber        : INT;

iValueOut: 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 iValueOut wird über die eintretenden Ereignisse der Eingänge bEvent1-16, iValue1-16 und dem Wirksinn der Priorisierung bDirection gesteuert.
bDirection
= FALSE bedeutet, dass die Ereignisse in aufsteigender Form von 1 nach 16 den Ausgabewert iValueOut bestimmen. Ist bEnable = TRUEANDeCtrlMode = eHVACCtrlMode_AutoANDbDirection = FALSEANDbEvent15 = TRUE (höchstes eingetretenes Ereignis in Tabelle 1 Spalte 1), dann ist iValueOut = iValue15.
bDirection = TRUE bedeutet, dass die Ereignisse in absteigender Form von 16 nach 1 den Ausgabewert iValueOut bestimmen. Ist bEnable = TRUEANDeCtrlMode = eHVACCtrlMode_AutoANDbDirection = TRUEANDbEvent1 = TRUE (niedrigstes eingetretenes Ereignis in Tabelle 2 Spalte 1), dann ist iValueOut = iValue1.

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 iValue1-16, deren Wert über iValueOut ausgegeben wird. Ist bEnable = TRUEANDeCtrlMode = eHVACCtrlMode_ManualAND iManualValue = 2, so ist iValueOut = iValue2, siehe Tabelle 3.

bActive: bActive wird TRUE , wenn

1. bEnable = TRUEANDeCtrlMode = eHVACCtrlMode_Auto und eine der Eingangsvariablen bEvent1-16 = TRUE ist.

2. bEnable = TRUEANDeCtrlMode = eHVACCtrlMode_ManualANDiManualValue > 0 ist

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

1. bEnable = TRUEANDeCtrlMode = eHVACCtrlMode_Auto und sich das entscheidende Ereignis (bEvent1-16) zur Steuerung des Ausgangs iValueOut mittels iValue1-16 geändert hat.

2. bEnable = TRUEANDeCtrlMode = eHVACCtrlMode_Manual und mit jeder Änderung von iManualValue

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

VAR_IN_OUT

Name              : Type        Persistent
iValue1-16        : INT;        X            

iValue1-16: Mittels der Variablen iValue1 bis iValue16 wird der Wert der Ausgangsvariable iValueOut bestimmt. iValueOut = iValueX

Wird der Funktionsbaustein als Priorisierung von Ereignissen eingesetzt, so wird jede der Variablen iValue1-16 einem Ereignis zugeordnet. iValue1 wird dem Ereignis bEvent1 zugeordnet, iValue2 dem Ereignis bEvent2, iValue3 dem Ereignis bEvent3,..., iValue16 dem Ereignis bEvent16

Wird der Funktionsbaustein als Muliplexer eingesetzt werden, so wird jede der Variablen iValue1-16 dem Wert von iManualValue zugeordnet. Ist iManualValue = 1, dann ist iValueOut = iValue1. Ist iManualValue = 2, dann ist iValueOut = iValue2.... Ist iManualValue = 16, dann ist iValueOut = iValue16.

Die Variable wird persistent gespeichert.