FB_HVACTemperatureSensorEx

Dieser Funktionsbaustein dient zur Erfassung und Weiterverarbeitung von Temperaturwerten wie z.B. für die Fühlertypen PT100, PT200, PT1000, NI100, NI120, NI1000, NI1000Tk5000. Der Funktionsbaustein FB_HVACTemperatureSensorEx ist abgestimmt auf die Busklemmen KL3201/02/04 und KL3228. Diese Busklemmen können entweder vorkonfiguriert bestellt, oder softwaremäßig auf den entsprechenden Fühlertypen eingestellt werden.
Über die Eingangsvariable iRawValue wird der Temperaturrohwert in 1/10°C dem Funktionsbaustein übergeben und über rPresentValue als Fließkommazahl ausgeben. iRawValue kann z.B. direkt mit dem Temperaturrohwert der folgenden Busklemmen verknüpft werden: KL3201/02/04 und KL3228.
Der Ausgabewert rPresentValue ist abhängig von der folgenden Glättungsfunktion:
rPresentValue := ((iRawValue / 10 + rOffset) - rPresentValueOld) / rSmoothFactor + rPresentValueOld;
rPresentValueOld ist der Wert von rPresentValue, der einen SPS-Zyklus vorher ausgegeben wurde. Wenn bEnable = TRUE wird, so ist für einen SPS-Zyklus rPresentValue = rPresentValueOld. Ist bErrorSensor = TRUE, der Fehler behoben und bErrorSensor = FALSE, so ist für einen SPS-Zyklus rPresentValue = rPresentValueOld.
Über die Eingangsvariable byStatusRawValue wird der Status des angeschlossenen Temperatursensors überwacht und im Fehlerfall über die Variable bErrorSensor der Steuerung zurück geliefert. byStatusRawValue kann z.B. direkt mit dem Statusbyte der folgenden Busklemmen verknüpft werden: KL3201/02/04 und KL3228.
Mit rHighLimit/rLowLimit können Temperaturgrenzwerte festgelegt werden.
Im Gegensatz zum FB_HVACTemperatureSensor hat dieser Funktionsbaustein die Eingangsvariable bEnable, die von Nutzen ist, wenn die Sensorenkennlinien in den Busklemmen KL3201/02/04 und KL3228 aus der SPS heraus über den Funktionsbaustein FB_HVACConfigureKL32xx eingestellt werden sollen. Der Filter 2. Ordnung im FB_HVACTemperatureSensor wird in diesem Funktionsbaustein durch die oben beschriebene Glättungsfunktion ersetzt. Der Ausgang bErrorSensor ist neu und ersetzt die beiden Ausgänge bErrorShortCircuit/bErrorBrokenSensor. Diese Ausgänge sind aber weiterhin im Errorbyte byError vorhanden.
VAR_INPUT
eDataSecurityType : E_HVACDataSecurityType;
bSetDefault : BOOL;
bEnable : BOOL;
iRawValue : INT;
byStatusRawValue : BYTE;
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 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. |
bSetDefault: Wenn die Variable TRUE ist, werden die Default-Werte der VAR_IN_OUT Variablen übernommen.
bEnable: Freigabe des Bausteins, wenn bEnable = TRUE ist. Ist bEnable = FALSE, so wird am Ausgang rPresentValue der Wert von rReplacementValue ausgegeben. Sämtliche Störmeldungen und bInvalidParameter werden auf FALSE gesetzt. Wenn bEnable = TRUE wird, so ist für einen SPS-Zyklus rPresentValue = rPresentValueOld.
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. Ist die KL32xx auf Widerstandsmessung (Ω) eingestellt, so gibt es keine Fehlerdiagnose.
bEnableLimitCtrl: Freigabe für die Limit-Überwachung rHighLimit und rLowLimit
bReset: Quittierungseingang bei einem Fehler mit einer steigenden Flanke ab bReset. In Abhängigkeit der Betriebsart eTemperatureSensorMode werden Fehler entweder mit bReset oder automatisch quittiert.
VAR_OUTPUT
rPresentValue : REAL;
bErrorGeneral : BOOL;
byError : BYTE;
bErrorSensor : BOOL;
bErrorHighLimit : BOOL;
bErrorLowLimit : BOOL;
bInvalidParameter : BOOL;
rPresentValue: Temperaturausgabevariable mit einer Nachkommastelle.
Nach folgender Formel wird der Wert für rPresentValue berechnet und ausgegeben:
rPresentValue := ((iRawValue / 10 + rOffset) - rPresentValueOld) / rSmoothFactor + rPresentValueOld;
rPresentValueOld ist der Wert von rPresentValue, der einen SPS-Zyklus vorher ausgegeben wurde. Wenn bEnable = TRUE wird, so ist für einen SPS-Zyklus rPresentValue = rPresentValueOld. Ist bErrorSensor = TRUE, der Fehler behoben und bErrorSensor = FALSE, so ist für einen SPS-Zyklus rPresentValue = rPresentValueOld.
Ist bErrorSensor = TRUE, dann ist der Wert von rPresentValue abhängig von der Betriebsart eTemperatureSensorMode.
bErrorGeneral: Die Störungsmeldung bErrorGeneral wird TRUE, sobald eine der Störmeldungen bErrorHighLimit, bErrorLowLimit oder bErrorSensor = 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 eTemperatureSensorMode 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 := bErrorSensor
byError.5 := bErrorShortCircuit: Fehler, Kurzschluss an dem angeschlossenem Temperatursensor. Nach Behebung des Fehlers wird die Meldung in Abhängigkeit der Betriebsart eTemperatureSensorMode entweder mit bReset oder automatisch quittiert.
byError.6 := bErrorBrokenSensor: Fehler, Drahtbruch an dem angeschlossenem Temperatursensor. Nach Behebung des Fehlers wird die Meldung in Abhängigkeit der Betriebsart eTemperatureSensorMode entweder mit bReset oder automatisch quittiert.
bErrorSensor: Wird TRUE, wenn byError.5/bErrorShortCircuit oder byError.6/bErrorBrokenSensor = TRUE ist. Nach Behebung des Fehlers wird die Meldung in Abhängigkeit der Betriebsart eTemperatureSensorMode entweder mit bReset oder automatisch quittiert. Ist bErrorSensor = TRUE, der Fehler behoben und bErrorSensor = FALSE, so ist für einen SPS-Zyklus rPresentValue = rPresentValueOld.
bErrorHighLimit: Warnung oberer Grenzwert überschritten, wird TRUE wenn rPresentValue >= rHighLimit ist. Die Warnung, dass der obere Grenzwert überschritten ist, kann erst quittiert werden, wenn rPresentValue <= rHighLimit -1.0 für die Zeitdauer von 5 Sekunden ist. Die Warnung wird in Abhängigkeit der Betriebsart eTemperatureSensorMode entweder mit bReset oder automatisch quittiert.
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. Die Warnung wird in Abhängigkeit der Betriebsart eTemperatureSensorMode entweder mit bReset oder automatisch quittiert.
bInvalidParameter: Zeigt an, dass ein falscher Parameter an einer der Variablen rHighLimit, rLowLimit, rSmoothFactor oder eTemperatureSensorMode anliegt. Eine falsche Parameterangabe führt nicht zum Stillstand des Bausteins, siehe Beschreibung der Variablen. Nach Behebung der falschen Parameterangabe wird die Meldung bInvalidParameter in Abhängigkeit der Betriebsart eTemperatureSensorMode entweder mit bReset oder automatisch quittiert.
VAR_IN_OUT
rOffset : REAL;
rHighLimit : REAL;
rLowLimit : REAL;
rReplacementValue : REAL;
rSmoothFactor : REAL;
eTemperatureSensorMode: E_HVACTemperatureSensorMode;
rOffset: Temperaturabgleich in Kelvin, rPresentValue = (iRawValue / 10.0) + rOffset. Die Variable wird persistent gespeichert. Voreingestellt auf 0.
rHighLimit: Oberer Grenzwert. 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. 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, 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.
rSmoothFactor: Glättungsfaktor (>=1) für den Ausgabewert rPresentValue. Die Variable wird persistent gespeichert. Voreingestellt auf 100.
Nach folgender Formel wird der Wert für rPresentValue berechnet und ausgegeben:
rPresentValue := ((iRawValue / 10 + rOffset) - rPresentValueOld) / rSmoothFactor + rPresentValueOld;
rPresentValueOld ist der Wert von rPresentValue, der einen SPS-Zyklus zuvor ausgegeben wurde.
Ist rSmoothFactor = 1, dann ist rPresentValue := ((iRawValue / 10 + rOffset)
Liegt ein nicht korrekter Variablenwert an rSmoothFactor 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 (siehe E_HVACTemperatureSensorMode).
eTemperatureSensorMode = eHVACTemperatureSensorMode_ReplacementValue: Wenn bErrorSensor = 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 bErrorSensor = 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 bErrorSensor = 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 eTemperatureSensorMode an, dann wird mit dem Default-Wert weiter gearbeitet. bInvalidParameter wird bei falscher Parameterangabe gesetzt.
Die Variable wird persistent gespeichert. Voreingestellt auf 3.
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 |