FB_HVACPriority_REAL_8
Anwendung
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 = TRUEANDeCtrlMode = eHVACCtrlMode_AutoANDbDirection = FALSEANDbEvent7 = 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 = TRUEANDeCtrlMode = eHVACCtrlMode_AutoANDbDirection = TRUEANDbEvent1 = 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 = TRUEANDeCtrlMode = eHVACCtrlMode_ManualAND 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_Persistentist. 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
Tabelle 1
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 = TRUEANDeCtrlMode = eHVACCtrlMode_AutoANDbDirection = FALSEANDbEvent7 = TRUE (höchstes eingetretenes Ereignis in Spalte 1), dann ist rValueOut = rValue7.
Tabelle 2: Priorisierung von Ereignissen in absteigender Form von 8 nach 1
Tabelle 2
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 = TRUEANDeCtrlMode = eHVACCtrlMode_AutoANDbDirection = TRUEANDbEvent1 = TRUE (niedrigstes eingetretenes Ereignis in Tabelle 2 Spalte 1), dann ist rValueOut = rValue1.
Tabelle 3: Multiplexer
Tabelle 3
Ist bEnable = TRUEANDeCtrlMode = eHVACCtrlMode_ManualANDiManualValue = 2, dann ist rValueOut = 2.
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 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: 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.
Ist eCtrlMode = eHVACCtrlMode_Auto, so stellt der Funktionsbaustein eine Priorisierung von Ereignissen dar. Ist bEnable = TRUEANDeCtrlMode = 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 = TRUEANDeCtrlMode = 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) ANDbEnable = TRUEANDbError = 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 = TRUEANDeCtrlMode = eHVACCtrlMode_AutoANDbDirection = FALSEANDbEvent7 = 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 = TRUEANDeCtrlMode = eHVACCtrlMode_AutoANDbDirection = TRUEANDbEvent1 = 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 = TRUEANDeCtrlMode = eHVACCtrlMode_AutoANDbDirection = FALSEANDbEvent7 = 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 = TRUEANDeCtrlMode = eHVACCtrlMode_AutoANDbDirection = TRUEANDbEvent1 = 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 = TRUEANDeCtrlMode = eHVACCtrlMode_AutoANDbDirection = FALSEANDbEvent7 = 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 = TRUEANDeCtrlMode = eHVACCtrlMode_AutoANDbDirection = TRUEANDbEvent1 = 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 = TRUEANDeCtrlMode = eHVACCtrlMode_ManualAND iManualValue = 2, so ist rValueOut = rValue2, siehe Tabelle 3.
bActive: bActive wird TRUE , wenn
1. bEnable = TRUEANDeCtrlMode = eHVACCtrlMode_Auto und eine der Eingangsvariablen bEvent1-8 = 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-8) zur Steuerung des Ausgangs rValueOut mittels rValue1-8 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 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 Ausgangsvariable 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.