FB_HVACWork

FB_HVACWork 1:

Dieser Funktionsbaustein dient zur Betriebsstundenerfassung und zur Erfassung der Einschaltzyklen. Weiterhin ist es möglich, das Erreichen von vorgegebenen Betriebszeiten zu melden.

Betriebsstundenerfassung

Sobald der Eingang bOn den Betrieb meldet, wird die Betriebszeit mit einer Auflösung von intern 1s erfasst. Die Ausgabe erfolgt als Realwert in Stunden mit 2 Nachkommastellen (1/100 h). Sollte keine Systemzeit mit Sekundenauflösung zur Verfügung stehen, oder diese gestört sein, so wird nach 2s auf den Takteingang bSysTakt1Hz umgeschaltet. Es wird auf die steigende Flanke an diesem Eingang getriggert. Die Variante mit der Systemzeit ist aufgrund der Möglichkeit der Synchronisierung über das Netzwerk mit einer Masteruhr genauer, als die Variante mit dem Taktgeber.

Jede positive Flanke an bOn wird als Einschaltzyklus gezählt, und steht als iCount am Ausgang zur Verfügung.

VAR_INPUT

eDataSecurityType : E_HVACDataSecurityType;
bSetDefault       : BOOL;
bOn               : BOOL;
bResetHours       : BOOL;
bResetCount       : BOOL;
dtSystemtime      : DT;
bStartWarnLevel   : BOOL;
bStartAlarmLevel  : BOOL;
bSysTakt1Hz       : BOOL;
bReset            : BOOL;

Hinweis

Wenn E_HVACDataSecurityType := eHVACDataSecurityType_Persistent gewählt wurde, wird vom Standardverfahren abgewichen. Die Daten werden nach Änderung nicht mit einer Verzögerung entsprechend g_tHVACWriteBackupDataTime (default t#5s) in den Flashspeicher geschrieben, sondern Konstant nur alle Stunde. Dies dient dem Schutz des Flash-Speichers, da sonst bei laufendem Betriebszähler alle 5sek alle persistenten Daten auf diesen geschrieben würden.

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.

bOn: Betriebsmeldung, die Betriebszeit wird aufsummiert solange die Meldung ansteht. Die steigende Flanke wird als Einschaltzyklus gezählt.

bResetHours: Steigende Flanke setzt den Betriebsstundenzähler auf 0.

bResetCount: Steigende Flanke setzt den Einschaltzyklenzähler auf 0.

dtSystemtime: Systemzeit mit Sekundenanzeige.

bStartWarnLevel: Steigende Flanke am Eingang setzt den Ausgang bQWarnLevel zurück und startet die Zeitmessung für diesen neu.

bStartAlarmLevel: Steigende Flanke am Eingang setzt den Ausgang bQAlarmLevel zurück und startet die Zeitmessung für diesen neu.

bSysTakt1Hz: Taktsignal mit 1Hz als Ersatz für dtSystemTime, sollte dtSystemTime nicht vorhanden sein, oder länger als 2sek keine Wertänderung aufweisen, wird als Ersatz das Taktsignal genutzt.

bReset: Quittierungseingang bei einer Störung. Setzt den Merker bInvalidParameter zurück.

VAR_OUTPUT

bQAlarmLevel       : BOOL;  
bQWarnLevel        : BOOL;  
bInvalidParameter  : BOOL;

bQAlarmLevel: Betriebsstundenzähler hat den Warnwert erreicht.

bQWarnLevel: Betriebsstundenzähler hat den Alarmwert erreicht.

bInvalidParameter: Bei der Plausibilitätsüberprüfung ist ein Fehler aufgetreten. Wir durch bReset wieder gelöscht.

VAR_IN_OUT

rHours            : REAL;
uiCount           : UINT;
uiWarnLevel       : UINT;
uiAlarmLevel      : UINT;
bEnableWarnLevel  : BOOL;
bEnableAlarmLevel : BOOL;

rHours: Betriebsstunden mit einer Auflösung von 1/100 Stunden (intern mit 1s). Die Variable wird persistent gespeichert.

uiCount: Einschaltzyklenzähler. Die Variable wird persistent gespeichert.

uiWarnLevel: Betriebsstunden nach deren Erreichen eine Warnung ausgegeben wird (0..50000). Bei steigender Flanke am Eingang bStartWarnLevel wird der aktuelle Betriebsstundenzählerstand mit dem Wert uiWarnLevel addiert und als absolute Betriebszeit gespeichert. Sobald der Betriebsstundenzählerstand diesen Wert erreicht hat und die Meldung über bEnableWarnLevel freigegeben ist, wird der Ausgang bQWarnLevel auf TRUE gesetzt. Die Variable wird persistent gespeichert. Voreingestellt auf 0h.

uiAlarmLevel: Betriebsstunden nach deren Erreichen ein Alarm ausgegeben wird (0..50000). Bei steigender Flanke am Eingang bStartAlarmLevel wird der aktuelle Betriebsstundenzählerstand mit dem Wert uiAlarmLevel addiert und als absolute Betriebszeit gespeichert. Sobald der Betriebsstundenzählerstand diesen Wert erreicht hat und die Meldung über bEnableAlarmLevel freigegeben ist, wird der Ausgang bQAlarmLevel auf TRUE gesetzt. Die Variable wird persistent gespeichert. Voreingestellt auf 0h.

bEnableWarnLevel: Gibt den Ausgang bQWarnLevel frei. Die Variable wird persistent gespeichert. Voreingestellt auf FALSE.

bEnableAlarmLevel: Gibt den Ausgang bQAlarmLevel frei. Die Variable wird persistent gespeichert. Voreingestellt auf FALSE.

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