FB_HVACAnalogInput

FB_HVACAnalogInput 1:

Dieser Funktionsbaustein dient zur Erfassung und Skalierung von analogen Eingangssignalen. Mittels der Klemmen KL30xx, KL31xx und KL32xx können die Normsignale 0-20mA, 4-20mA, 0-10V und 10-5000Ω erfasst und in physikalische Werte umgerechnet werden.

VAR_INPUT

eDataSecurityType    : E_HVACDataSecurityType;
bSetDefault          : BOOL;
iRawValue            : INT; 
tTaskCycleTime       : TIME;
tCtrlCycleTime       : TIME;
bEnableLimitCtrl     : BOOL;
bCtrlVoltage         : 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.

iRawValue: Mit dem Parameter iRawValue wird dem Funktionsbaustein der Rohwert von der Klemme übergeben.

tTaskCycleTime: Zykluszeit, mit der der Funktionsbaustein aufgerufen wird. Diese entspricht der Task-Zykluszeit der aufrufenden Task, wenn der Baustein in jedem Zyklus aufgerufen wird.

tCtrlCycleTime: Zykluszeit, mit der der Funktionsbaustein bearbeitet wird. Diese muss größer oder gleich der TaskCycleTime sein. Der Funktionsbaustein berechnet mit dieser Eingangsgröße intern, ob die Zustands- und Ausgangsgrößen im aktuellen Zyklus aktualisiert werden müssen.

bEnableLimitCtrl: Die Grenzwertüberwachung wird erst aktiviert, wenn die Variable bEnableLimitCtrl TRUE ist. So kann die Grenzwertüberwachung mit einem Timer so lange verzögert werden bis sich die Heizungs- oder Klimaanlage in einem eingeregelten Zustand befindet. Bei Raumlufttechnischen Anlagen erfolgt diese Freigabe in der Regel vom Anlagenstartprogramm. Siehe hierzu auch FB_HVACStartAirConditioning.

bCtrlVoltage: Durch die Überprüfung der Fühlerversorgungsspannung mit dem Eingang bCtrlVoltage werden Störmeldungen unterdrückt, wenn die Versorgungsspannung der Sensoren nicht vorhanden ist. Wenn die Fühlerversorgungsspannung vorhanden ist, steht am Eingang bCtrlVoltage ein TRUE an.

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; 
byState             : BYTE;
bError              : BOOL;
eErrorCode          : E_HVACErrorCodes;
bErrorHighLimit     : BOOL;
bErrorLowLimit      : BOOL;
bErrorGeneral       : BOOL;
byError             : BYTE;
bInvalidParameter   : BOOL;

rPresentValue: Ermittelter Ausgangswert.

byState: Status des Bausteines.
byState.1:= TRUE, Grenzwertüberwachung ist aktiviert.
byState.7:= TRUE, Fühlerspannungsversorgung liegt an.

bError: Die Variable bErrorwird TRUE bei einem internen Fehler des Funktionsbausteines.

eErrorCode: Enthält den spezifischen Fehlercode im Zusammenhang mit dem Ausgang bError (siehe E_HVACErrorCodes).

bErrorHighLimit: TRUE, wenn der obere Grenzwert erreicht ist.

bErrorLowLimit: TRUE, wenn der untere Grenzwert erreicht ist.

bErrorGeneral: TRUE, wenn eine Einzelstörmeldung aus dem Prozess anliegt.

byError: Ausgabe der Fehler als Byte.
byError.0:= bError
byError.1:= bInvalidParameter
byError.2:= bErrorGeneral
byError.3:= bErrorLowLimit ist TRUE, wenn der untere Grenzwert unterschritten wird.
byError.4:= bErrorHighLimit ist TRUE, wenn der obere Grenzwert überschritten wird.

bInvalidParameter: TRUE, wenn bei der Plausibilitätsüberprüfung ein Fehler aufgetreten ist. Die Meldung muss mit bReset quittiert werden.

VAR_IN_OUT

iHighRange   : INT;
iLowRange    : INT;
rHighRange   : REAL;
rLowRange    : REAL;
rHighLimit   : REAL;
rLowLimit    : REAL;
tFilterTime  : TIME;
rOffset      : REAL;

iHighRange: Oberer Rohwert von der Eingangsvariable iRawValue. Die Variable wird persistent gespeichert. Voreingestellt auf 32767.

iLowRange: Unterer Rohwert von der Eingangsvariable iRawValue. Die Variable wird persistent gespeichert. Voreingestellt auf 0.

rHighRange: Der obere skalierte Messwert. Die Variable wird persistent gespeichert. Voreingestellt auf 100.

rLowRange: Der untere skalierte Messwert. Die Variable wird persistent gespeichert. Voreingestellt auf 0.

rHighLimit: Falls der skalierte Messwert größer ist als der obere Grenzwert rHighLimit kann ein unzulässig hoher Messwert erreicht sein. Der Funktionsbaustein meldet diesen Fehler, indem die Variable bErrHighLimit auf TRUE gesetzt wird. Die Variable wird persistent gespeichert. Voreingestellt auf 100.

rLowLimit: Falls der skalierte Messwert kleiner ist als der untere Grenzwert rLowLimit kann ein unzulässig niedriger Messwert erreicht sein. Der Funktionsbaustein meldet diesen Fehler, indem die Variable bErrLowLimit auf TRUE gesetzt wird. Die Variable wird persistent gespeichert. Voreingestellt auf 0.

tFilterTime: Um starke Schwankungen und Sprünge des Messsignals zu vermeiden, ist der Funktionsbaustein mit zwei Filter 1. Ordnung versehen. Beide Filter arbeiten mit der gleichen Zeitkonstante. Die Filterkonstanten werden mit der Variable tFilterTime [s] bestimmt (0..3600). Die Variable wird persistent gespeichert. Voreingestellt auf 2s.

rOffset: Mit dem Offset wird die mittels der zwei Punkte zur Umrechnung ermittelte Geradengleichung parallel nach unten oder oben verschoben. Die Variable wird persistent gespeichert. Voreingestellt auf 0.

Mit den zwei Wertepaaren iHighRange/rHighRange und iLowRange/rLowRange erfolgt eine lineare Umwandlung des Rohwertes in die physikalische Einheit. iHighRange und iLowRange entsprechen den Rohwerten. rHighLimit und rLowLimit entsprechen den skalierten Werten in der physikalischen Einheit des zu messenden Signals.

Der Ausgangswert ergibt sich aus:

rPresentValue = [ { (rHighRange - rLowRange) / (iHighRange - iLowRange) } x (iRawValue - iHighRange ] + rHighRange + rOffset

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