FB_HVACTemperatureSensor

FB_HVACTemperatureSensor 1:

Anwendung

Dieser Funktionsbaustein dient zur Erfassung und Weiterverarbeitung von Temperaturwerten für die Fühlertypen PT100, PT200, PT1000, NI100, NI120, NI1000. Der Funktionsbaustein FB_HVACTemperatureSensor ist abgestimmt auf die Busklemmen KL320x. Diese Busklemmen können entweder vorkonfiguriert bestellt werden oder sie können softwaremäßig auf den entsprechenden Fühlertypen eingestellt werden.

VAR_INPUT

eDataSecurityType      : E_HVACDataSecurityType;  
bSetDefault            : BOOL;  
iRawValue              : INT;               
byStatusRawValue       : BYTE;
tTaskCycleTime         : TIME;
tCtrlCycleTime         : TIME;                  
bEnableLimitCtrl       : BOOL;
bReset                 : 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_HVACTemperatureSensor 2: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.

bSetDefault: Wenn die Variable TRUE ist, werden die Default-Werte der VAR_IN_OUT Variablen übernommen.

iRawValue: Rohwert des Temperaturfühlers in 1/10°C von der Busklemme

byStatusRawValue: Statusbyte des Temperaturfühlers von der Busklemme. Dient zur Fehlerdiagnose, z.B. Drahtbruch oder Kurzschluss.

tTaskCycleTime: Zykluszeit, mit der der Funktionsbaustein aufgerufen wird. Diese entspricht der Task-Zykluszeit der aufrufenden Task, wenn der Baustein in jedem Zyklus aufgerufen wird. tTaskCycleTime muß größer als T#0ms sein.

tCtrlCycleTime: Mit der Variablen tCtrlCycleTime wird die Zykluszeit vorgegeben mit welcher intern der Filter 2. Ordnung abgearbeitet wird. Die Zykluszeit tCtrlCycleTime muß größer oder gleich der tTaskCycleTime sein. Ist dieses nicht der Fall, so steht eine Störung bErrorCycleTime an und an rPresentValue wird entsprechend dem eingestellten Modus eTemperatureSensorMode entweder der Ersatzwert rReplacementValue oder der letzte gültige Messwert ausgegeben.

bEnableLimitCtrl: Freigabe für die Limit-Überwachung rHighLimit und rLowLimit

bReset: Quittierungseingang bei einem Fehler. Außerdem kann über diesen Eingang der Filter 2. Ordnung auf das anstehende Messsignal synchronisiert werden, so dass dieses am Ausgang rPresentValue ausgegeben wird.

VAR_OUTPUT

rPresentValue         : REAL;
bErrorGeneral         : BOOL;               
byError               : BYTE;   
bErrorShortCircuit    : BOOL;                   
bErrorBrokenSensor    : BOOL;                   
bErrorHighLimit       : BOOL;               
bErrorLowLimit        : BOOL;       
bErrorCycleTime       : BOOL;                   
bInvalidParameter     : BOOL;

rPresentValue: Temperaturausgabevariable mit einer Nachkommastellen, rPresentValue = (iRawValue / 10.0) + rOffset, wenn bErrorShortCircuit oder bErrorBrokenSensor = TRUE, dann ist rPresentValue abhängig von der Betriebsart eTemperatureSensorMode.

bErrorGeneral: Die Störungsmeldung bErrorGeneral wird TRUE, sobald eine der Störmeldungen bErrorHighLimit, bErrorLowLimit, bErrorCycleTime, bErrorShortCircuit oder bErrorBrokenSensor = TRUE ist. Der Wert der Ausgangsvariable rPresentValue ist dann abhängig von der Betriebsart eTemperatureSensorMode und wird frei gegeben, wenn die Störung behoben ist und je nach Betriebsart mit bReset quittiert wurde.

byError: Liefert alle Fehlermeldungen und Warnungen,
byError.1 := bInvalidParameter
byError
.2 := bErrorGeneral
byError.3 := bErrorHighLimit
byError.4 := bErrorLowLimit
byError.5 := bErrorShortCircuit
byError.6 := bErrorBrokenSensor
byError
.7 := bErrorCycleTime

bErrorShortCircuit: Fehler, Kurzschluss an dem angeschlossenem Temperatursensor. Nach Behebung des Fehlers ist die Quittierung abhängig von der Betriebsart.

bErrorBrokenSensor: Fehler, Drahtbruch an dem angeschlossenem Temperatursensor. Nach Behebung des Fehlers ist die Quittierung abhängig von der Betriebsart.

bErrorHighLimit: Warnung oberer Grenzwert überschritten, wird TRUE wenn rPresentValue >= rHighLimit ist. Die Warnung, dass der oberer Grenzwert überschritten ist, kann erst quittiert werden, wenn rPresentValue <= rHighLimit -1.0 für die Zeitdauer von 5 Sekunden ist.

bErrorLowLimit: Warnung unterer Grenzwert unterschritten, wird TRUE wenn rPresentValue <= rLowLimit ist. Die Warnung, dass der untere Grenzwert unterschritten ist, kann erst quittiert werden, wenn rPresentValue >= rLowLimit +1.0 für die Zeitdauer von 5 Sekunden ist

bErrorCycleTime: Fehler, der durch falsche Zeitangabe an den Eingangsvariablen tTaskCycleTime und tCtrlCycleTime entsteht und nach Behebung des Fehlers quittiert werden muß.

bInvalidParameter: Zeigt an, dass ein falscher Parameter an einer der Variablen rOffset, rHighLimit, rLowLimit, rReplacementValue, tFilterTime und eTemperatureSensorMode anliegt. Eine falsche Parameterangabe führt nicht zum Stillstand des Bausteins, siehe Beschreibung der Variablen. Nach Behebung der falschen Parameterangabe muss die Meldung bInvalidParameter mit bReset quittiert werden.

VAR_IN_OUT

rOffset                : REAL;
rHighLimit             : REAL;
rLowLimit              : REAL;
rReplacementValue      : REAL;
tFilterTime            : TIME;
eTemperatureSensorMode : E_HVACTemperatureSensorMode;

rOffset: Temperaturabgleich in Kelvin (-50..+50), rPresentValue = (iRawValue / 10.0) + rOffset. Die Variable wird persistent gespeichert. Voreingestellt auf 0.
Liegt ein nicht korrekter Variablenwert an, dann wird, wenn vorhanden der letzte, gültige Variablenwert genommen. Wenn kein gültiger, letzter Wert vorliegt, dann wird mit dem Default-Wert weitergearbeitet.
bInvalidParameter wird bei falscher Parameterangabe gesetzt.

rHighLimit: Oberer Grenzwert (-250..+850), wenn rPresentValue >= rHighLimit , dann wird der Ausgang bErrorHighLimit gesetzt. rHighLimit muss größer sein als rLowLimit. Die Variable wird persistent gespeichert. Voreingestellt auf 120.
Liegt ein nicht korrekter Variablenwert an, dann wird, wenn vorhanden der letzte, gültige Variablenwert genommen. Wenn kein gültiger, letzter Wert vorliegt, dann wird mit dem Default-Wert weitergearbeitet. bInvalidParameter wird bei falscher Parameterangabe gesetzt.

rLowLimit: Unterer Grenzwert (-250..+850), wenn rPresentValue <= rLowLimit, dann wird der Ausgang bErrorLowLimit gesetzt. Die Variable wird persistent gespeichert. Voreingestellt auf -60.
Liegt ein nicht korrekter Variablenwert an, dann wird, wenn vorhanden der letzte, gültige Variablenwert genommen. Wenn kein gültiger, letzter Wert vorliegt, dann wird mit dem Default-Wert weitergearbeitet. bInvalidParameter wird bei falscher Parameterangabe gesetzt.

rReplacementValue: Ersatzwert (-250..+850), der bei den Fehlern bErrorShortCircuit und bErrorBrokenSensor an den Ausgang rPresentValue ausgegeben wird, wenn die Betriebsart eTemperatureSensorMode = eHVACTemperatureSensorMode_ReplacementValue oder eTemperatureSensorMode = eHVACTemperatureSensorMode_AutoResetReplacementValue ausgewählt ist. Die Variable wird persistent gespeichert. Voreingestellt auf 0.
Liegt ein nicht korrekter Variablenwert an, dann wird, wenn vorhanden der letzte, gültige Variablenwert genommen. Wenn kein gültiger, letzter Wert vorliegt, dann wird mit dem Default-Wert weitergearbeitet. bInvalidParameter wird bei falscher Parameterangabe gesetzt.

tFilterTime: Filterkonstante (1ms..100s). Der Funktionsbaustein ist mit einem Filter 2. Ordnung versehen um starke Schwankungen und Sprünge des Messsignals zu vermeiden. Bei einem Neustart der Steuerung oder nach Behebung der Fehler bErrorShortCircuit oder bErrorBrokenSensor wird der Filter 2. Ordnung sofort und zusätzlich nach 2 Sekunden auf das anstehende Messsignal synchronisiert, so dass dieses am Ausgang rPresentValue ausgegeben wird. Während des laufenden Betriebes kann das Messsignal über den Eingang bReset synchronisiert werden. Die Variable wird persistent gespeichert. Voreingestellt auf 10s.
Liegt ein nicht korrekter Variablenwert an, dann wird, wenn vorhanden der letzte, gültige Variablenwert genommen. Wenn kein gültiger, letzter Wert vorliegt, dann wird mit dem Default-Wert weitergearbeitet. bInvalidParameter wird bei falscher Parameterangabe gesetzt.

eTemperatureSensorMode: Enum, über welches die Betriebsart des Bausteines vorgegeben wird. Die Variable wird persistent gespeichert. Voreingestellt auf 3.

eTemperatureSensorMode = eHVACTemperatureSensorMode_ReplacementValue: Wenn bErrorShortCircuit oder bErrorBrokenSensor = TRUE, dann ist rPresentValue = rReplacementValue. Nach Behebung des Fehlers muss der Funktionsbaustein durch eine steigende Flanke an der Eingangsvariablen bReset quittiert werden.

eTemperatureSensorMode = eHVACTemperatureSensorMode_LastValue: Wenn bErrorShortCircuit oder bErrorBrokenSensor = TRUE, dann wird an der Ausgangsvariablen rPresentValue der zuletzt gültige Temperaturwert, der 10 Sekunden vorher anstand, ausgegeben. Nach Behebung des Fehlers muss dieser durch eine steigende Flanke an der Eingangsvariablen bReset quittiert werden.

eTemperatureSensorMode = eHVACTemperatureSensorMode_AutoResetReplacementValue : Wenn bErrorShortCircuit oder bErrorBrokenSensor = TRUE, dann ist rPresentValue = rReplacementValue. Nach Behebung des Fehlers quittiert sich der Funktionsbaustein automatisch.

eTemperatureSensorMode = eHVACTemperatureSensorMode_AutoResetLastValue: Wenn bErrorShortCircuit oder bErrorBrokenSensor = TRUE, dann wird an der Ausgangsvariable rPresentValue der zuletzt gültige Temperaturwert, der 10 Sekunden vorher anstand, ausgegeben. Nach Behebung des Fehlers quittiert sich der Funktionsbaustein automatisch.

Liegt ein nicht korrekter Variablenwert an, dann wird, wenn vorhanden der letzte, gültige Variablenwert genommen. Wenn kein gültiger, letzter Wert vorliegt, dann wird mit dem Default-Wert weitergearbeitet. bInvalidParameter wird bei falscher Parameterangabe gesetzt.