FB_HVACPriority_INT_16

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 = TRUE AND eCtrlMode = eHVACCtrlMode_Auto AND bDirection = FALSE AND bEvent15 = 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 = TRUE AND eCtrlMode = eHVACCtrlMode_Auto AND bDirection = TRUE AND bEvent1 = 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 = TRUE AND eCtrlMode = eHVACCtrlMode_Manual AND 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_Persistent ist. 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
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 = TRUE AND eCtrlMode = eHVACCtrlMode_Auto AND bDirection = FALSE AND bEvent15 = TRUE (höchstes eingetretenes Ereignis in Spalte 1), dann ist iValueOut = iValue15.

Tabelle 2: Priorisierung von Ereignissen in absteigender Form von 16 nach 1
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 = TRUE AND eCtrlMode = eHVACCtrlMode_Auto AND bDirection = TRUE AND bEvent1 = TRUE (niedrigstes eingetretenes Ereignis in Tabelle 2 Spalte 1), dann ist iValueOut = iValue1.

Tabelle 3: Multiplexer
Ist bEnable = TRUE AND eCtrlMode = eHVACCtrlMode_Manual AND iManualValue = 2, dann ist iValueOut = 2.

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 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 iValueOut 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 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 = TRUE AND eCtrlMode = 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) AND bEnable = TRUE AND bError = 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 = TRUE AND eCtrlMode = eHVACCtrlMode_Auto AND bDirection = FALSE AND bEvent15 = 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 = TRUE AND eCtrlMode = eHVACCtrlMode_Auto AND bDirection = TRUE AND bEvent1 = 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 = TRUE AND eCtrlMode = eHVACCtrlMode_Auto AND bDirection = FALSE AND bEvent15 = 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 = TRUE AND eCtrlMode = eHVACCtrlMode_Auto AND bDirection = TRUE AND bEvent1 = 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 = TRUE AND eCtrlMode = eHVACCtrlMode_Auto AND bDirection = FALSE AND bEvent15 = 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 = TRUE AND eCtrlMode = eHVACCtrlMode_Auto AND bDirection = TRUE AND bEvent1 = 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 = TRUE AND eCtrlMode = eHVACCtrlMode_Manual AND iManualValue = 2, so ist iValueOut = iValue2, siehe Tabelle 3.
bActive: bActive wird TRUE, wenn
1. bEnable = TRUE AND eCtrlMode = eHVACCtrlMode_Auto und eine der Eingangsvariablen bEvent1-16 = 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-16) zur Steuerung des Ausgangs iValueOut mittels iValue1-16 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 iValueOut ausgegeben wird. Ist iValueOut = iValue7, so ist iValueNumber = 7, siehe Tabelle 1, Tabelle 2 und Tabelle 3
VAR_IN_OUT
iValue1-16 : INT; X
iValue1-16: Mittels der Variablen iValue1 bis iValue16 wird der Wert der Ausgangsvariablen 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.
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 |