FB_HVACAnalogTo3Point

FB_HVACAnalogTo3Point 1:

Dieser Funktionsbaustein dient der Umwandlung eines analogen Stellsignals in ein Dreipunktschrittsignal. Damit können Dreipunktklappen oder -ventile von einem Regler mit einem stetigen Stellsignal angesteuert werden. Der Funktionsbaustein FB_HVACAnalogTo3Point funktioniert mit oder ohne einer stetigen Stellungsrückmeldung des Antriebs.

Beispiel: 3-Punkt-Antrieb ohne Feedback und Endlagenschalter

FB_HVACAnalogTo3Point 2:

VAR_INPUT

eDataSecurityType    : E_HVACDataSecurityType;
bSetDefault          : BOOL;
bEnable              : BOOL;
rSetpoint            : REAL;
rFeedb               : REAL;
bLimitSwitchOpen     : BOOL;
bLimitSwitchClose    : BOOL;
bCtrlVoltage         : BOOL;
bReset               : BOOL;
tTaskCycleTime       : TIME;

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 Bausteines, wenn bEnable = TRUE ist. Bei anliegender Steuerspannung, keinem Fehler und nicht vorhandener Freigabe bEnable = FALSE werden die Ausgänge bClose = TRUE und bOpen = FALSE. Wenn der Referenzmodus eReferencingMode = eHVACReferencingMode_Emulation ist, dann bleibt der Ausgang bClose solange gesetzt, bis entweder der Endlagenschalter angefahren ist, die Freigabe wieder da ist oder eine Störung anliegt.
Wenn der Referenzmode eReferencingMode = eHVACReferencingMode_AnalogFeedback ist, dann bleibt der Ausgang bClose solange gesetzt, bis die Freigabe wieder da ist, eine Störung anliegt oder rFeedback = rMinSetpoint ist.

rSetpoint: Mit der Variable rSetpoint wird dem Funktionsbaustein der Sollwert für die Lage der Klappe oder des Ventils übergeben. Mit den Parametern rMaxSetpoint und rMinSetpoint wird der Wertebereich von rSetpoint festgelegt (0,0..32767).
Liegt ein nicht korrekter Variablenwert an rSetpoint an, dann wird, wenn vorhanden der letzte, gültige Variablenwert genommen. Wenn kein gültiger, letzter Wert vorliegt, dann wird mit rMinSetpoint intern weitergearbeitet. bInvalidParameter wird bei falschem Variablenwert gesetzt, der Funktionsbaustein arbeitet normal weiter.

rFeedb: Die Eingangsvariable rFeedb (0,0..32767). st nur aktiv, wenn der Referenzierungsmodus des Funktionsbausteins eReferencingMode = eHVACReferencingMode_AnalogFeedback ist. Mit dem skalierten Eingangssignal rFeedbwird die tatsächliche Position des Antriebs zurückgemeldet. Die Skalierung von rFeedb muss übereinstimmend mit der Skalierung von rSetpoint sein. Mit den Parametern rMaxSetpoint und rMinSetpoint wird der Wertebereich von rFeedb festgelegt. rFeedb wird über die Ausgangsvariable rPosition an die Steuerung zurückgegeben.
Liegt ein nicht korrekter Variablenwert an rFeedb an, dann wird, wenn vorhanden der letzte, gültige Variablenwert genommen. Wenn kein gültiger, letzter Wert vorliegt, dann wird mit rMinSetpoint intern weiter gearbeitet. bInvalidParameter wird bei falschem Variablenwert gesetzt, der Funktionsbaustein arbeitet normal weiter.

bLimitSwitchOpen/bLimitSwitchClose: Besitzt der Dreipunktstellantrieb Endlagenschalter, dann können diese an den Eingängen bLimitSwitchOpen und bLimitSwitchClose angeschlossen werden.
Die Endlagenschalter dienen in dem Referenzierungsmodus eReferencingMode = eHVACReferencingMode_Emulation dem Funktionsbaustein zur Referenzierung. Je nach Fahrtrichtung wird mit einer fallenden Flanke an einem der beiden Eingänge bLimitSwitchOpen/bLimitSwitchClose die aktuell errechnete Position rPositon automatisch auf den dementsprechenden Wert von rMaxSetpoint/rMinSetpoint gesetzt. Dieses geschieht auch im Stillstand des Antriebs.
Egal in welchem Referenzierungsmodus sich der Funktionsbaustein befindet, bleibt nach dem Erreichen des jeweiligen Endlagenschalters der dazu gehörige Ausgang bOpen oder bClose auf TRUE.
Die Endlagenschalter müssen als Öffner Kontakt an den Funktionsbaustein angelegt werden. Wenn keine vorhanden sind, muss an den beiden Eingängen bLimitSwitchOpen/bLimitSwitchClose ein TRUE angelegt werden.

bCtrlVoltage: Durch die Eingangsvariable bCtrlVoltage wird überprüft, ob die Steuerspannung anliegt. Bei einem Ausfall der Steuerspannung werden die beiden Ausgänge bOpen und bClose auf FALSE gesetzt. Da viele Störmeldungen nach dem Ruhestromprinzip aufgebaut sind, würde nach dem Ausfall der Steuerspannung ein Meldeschauer von Störmeldungen stattfinden. Deshalb werden bei einem Ausfall der Steuerspannung in dem FB_HVACAnalogTo3Point alle Störmeldungen unterdrückt.
Die Steuerspannung ist vorhanden, wenn am Eingang bCtrlVoltage ein TRUE ansteht.

bReset: Quittierungseingang bei einer Störung.

tTaskCycleTime: Zykluszeit, mit der der Funktionsbaustein aufgerufen wird. Diese entspricht der Task-Zykluszeit der aufrufenden Task, wenn der Baustein in jedem Zyklus aufgerufen wird.
Liegt ein nicht korrekter Zeitwert von T#0s an tTaskCycleTime an, dann wird intern die tTaskCycleTime auf T#1ms gesetzt. bInvalidParameter wird bei falschem Variablenwert gesetzt.

VAR_OUTPUT

bOpen             : BOOL;
bClose            : BOOL;
byState           : BYTE;
rPosition         : REAL;
bErrorGeneral     : BOOL;
byError           : BYTE;
bErrorLimitSwitch : BOOL;
bInvalidParameter : BOOL;

bOpen: Ausgang zum Auffahren des Dreipunktantriebes.

bClose: Ausgang zum Zufahren des Dreipunktantriebes.

byState: Statusbyte über den Betriebszustand des Funktionsbausteins.
byState.0 := bEnable
byState
.1 := bOpen
byState.2 := bClose
byState.3 := bLimitSwitchOpen
byState.4 := bLimitSwitchClose
byState.7 := bCtrlVoltage

rPosition: Mit rPosition wird entweder die gemessene oder die errechnete Position des Antriebs an die Steuerung zurückgegeben.
Wenn eReferencingMode = eHVACReferencingMode_AnalogFeedback ist, dann wird rFeedb über die Ausgangsvariable rPosition an die Steuerung zurückgegeben. Ist rFeedb > rMaxSetpoint, dann ist rPosition = rMaxSetpoint und bInvalidParameter wird gesetzt. Ist rFeedb < rMinSetpoint, dann ist rPosition = rMinSetpoint und bInvalidParameter wird gesetzt.
Wenn eReferencingMode = eHVACReferencingMode_Emulation ist, dann wird die tatsächliche Position des Antriebs anhand einer Berechnung emuliert und über rPosition an die Steuerung zurückgegeben.

bErrorGeneral: Die Fehlermeldung bErrorGeneral wird TRUE, sobald bErrorGeneralLimitSwitch = TRUE ist. Die Ausgänge bOpen und bClose werden dann auf FALSE gesetzt und erst wieder freigegeben, wenn der Fehler behoben ist und mit bReset quittiert wurde.

byError: Liefert alle Fehlermeldungen und Warnungen des Funktionsbausteines
byError.1 := bInvalidParameter
byError.2
:= bErrorGeneral
byError.3 := bErrorLimitSwitch

bErrorLimitSwitch: Wird TRUE, wenn entweder beide Endlagenschalter gleichzeitig anstehen oder ((rMaxSetpoint - rThreshold) < rSetpoint) und bOpen = TRUE) oder ((rMinSetpoint + rThreshold) > rSetpoint) und bClose = TRUE) ist. Der Fehler bErrorLimitSwitch kann nur auftreten, wenn eReferencingMode = eEmulation ist.

bInvalidParameter: Zeigt an, dass ein falscher Parameter an einer der Variablen rMinSetpoint, rMaxSetpoint, rThreshold, rTolerance, tPauseMin, tPauseMax, tInterval, tStrokeTime, tSwitchOverDeadTime, eReferencingMode, rSetpoint oder rFeedback anliegt. Eine falsche Parameterangabe führt nicht zum Stillstand des Bausteines, siehe Beschreibung der Variablen. Nach Behebung der falschen Parameterangabe muss die Meldung bInvalidParameter mit bReset quittiert werden.

VAR_IN_OUT

rMinSetpoint        : REAL;
rMaxSetpoint        : REAL;
rThreshold          : REAL;
rTolerance          : REAL;
tPauseMin           : TIME;
tPauseMax           : TIME;
tInterval           : TIME;
tStrokeTime         : TIME;
tSwitchOverDeadTime : TIME;
eReferencingMode    : E_HVACReferencingMode;

rMinSetpoint/rMaxSetpoint: Mit den Parametern rMaxSetpoint (0..32767) und rMinSetpoint (0..32767) wird der Wertebereich von rSetpoint festgelegt. rMaxSetpoint muss größer als rMinSetpoint sein. Außerdem werden die beiden Variablen rMaxSetpoint und rMinSetpoint bei der Berechnung der variablen Puls-Pausenmodulation eingebunden, siehe Bild 1.1.
Liegt ein falscher Variablenwert an, dann wird, wenn vorhanden der letzte, gültige Variablenwert genommen. Wenn kein gültiger, letzter Wert vorliegt, wird mit dem Voreinstellwert weitergearbeitet. bInvalidParameter wird bei falscher Parameterangabe gesetzt, der Funktionsbaustein arbeitet normal weiter. Die Variablen werden persistent gespeichert. rMinSetpoint voreingestellt auf 0. rMaxSetpoint voreingestellt auf 100.

rThreshold/rTolerance: Ist die Abweichung zwischen dem Positionssollwert rSetpoint und dem errechneten oder gemessenen Positionsistwert rPosition des Stellorgans größer als der mit der Variable rThreshold (0,001..32767) eingestellte Schwellwert, dann beginnt der Funktionsbaustein abhängig von dem Betrag der Regelabweichung durch Takten der Ausgänge bOpen oder bClose die Position zu korrigieren. Die Korrektur erfolgt so lange, bis die Abweichung kleiner als der Wert rTolerance (0,001..32767) ist. Mit dem Betrag von rThreshold – rTolerance wird eine Hysterese für die Auf- und Zufahrbewegung des Antriebs definiert. Diese ist erforderlich, damit der Antrieb nicht bei kleinsten Stellwertänderungen reagiert. Es wird damit der Verschleiß des Antriebs und der Relais reduziert. rThreshold muss größer als rTolerance sein.
rSetpoint - rPosition
> = rThreshold Ansteuerung von bOpen
rPosition- rSetpoint
> = rThreshold Ansteuerung von bClose
Liegt ein falscher Variablenwert an, dann wird, wenn vorhanden der letzte, gültige Variablenwert genommen. Wenn kein gültiger, letzter Wert vorliegt, dann wird mit dem Voreinstellwert weitergearbeitet. bInvalidParameter wird bei falscher Parameterangabe gesetzt, der Funktionsbaustein arbeitet normal weiter. Die Variablen werden persistent gespeichert. rThreshold voreingestellt auf 5,0. rTolerance voreingestellt auf 2,0.

tPauseMin/tPauseMax/tInterval: Mit den Parametern tPauseMin [s] (0..3600), tPauseMax [s] (0..3600)und tInterval [s] (0..3600) kann eine variable Puls-Pausenmodulation zum Takten des Dreipunktantriebs eingestellt werden. Durch die Parameter tPauseMin und tPauseMax wird die Pausenlänge als Funktion der Regelabweichung definiert. Bei einer kleinen Abweichung ist die Pausenzeit im Verhältnis zur Intervallzeit lang. Analog ist die Pausenzeit bei einer großen Abweichung kurz. Damit ist die effektive Verfahrgeschwindigkeit des Dreipunktantriebes bei großen Regelabweichungen größer als bei kleinen, siehe nachfolgendes Bild. Folgende Bedingung muss auf jeden Fall erfüllt sein: tPauseMin < tPauseMax < tInterval
Liegt ein falscher Variablenwert an, dann wird, wenn vorhanden der letzte, gültige Variablenwert genommen. Wenn kein gültiger, letzter Wert vorliegt, dann wird mit dem Voreinstellwert weitergearbeitet. bInvalidParameter wird bei falscher Parameterangabe gesetzt, der Funktionsbaustein arbeitet normal weiter. Die Variablen werden persistent gespeichert. tPauseMin voreingestellt auf 2s. tPauseMax voreingestellt auf 8s. tInterval voreingestellt auf 10s.

tStrokeTime: Die Variable tStrokeTime [s] gibt die komplette Verfahrzeit des Antriebs an. Wenn der Antrieb keine stetige Stellungsrückmeldung besitzt, wird die tatsächliche Position des Antriebs anhand einer Berechnung emuliert. Eine genaue Eingabe der Gesamtverfahrzeit des Stellorgans ist deshalb wichtig. Folgende Bedingung muss auf jeden Fall erfüllt sein: tStrokeTime > tInterval
Liegt ein falscher Variablenwert an, dann wird, wenn vorhanden der letzte, gültige Variablenwert genommen. Wenn kein gültiger, letzter Wert vorliegt, dann wird mit dem Voreinstellwert weitergearbeitet. bInvalidParameter wird bei falscher Parameterangabe gesetzt, der Funktionsbaustein arbeitet normal weiter. Die Variable wird persistent gespeichert. Voreingestellt auf 200s.

tSwitchOverDeadTime: Verweildauer beim Richtungswechsel (0..3600). Während dieser Zeit sind beide Ausgänge zurückgesetzt.
Liegt ein falscher Variablenwert an, dann wird, wenn vorhanden der letzte, gültige Variablenwert genommen. Wenn kein gültiger, letzter Wert vorliegt, dann wird mit dem Voreinstellwert weitergearbeitet. bInvalidParameter wird bei falscher Parameterangabe gesetzt, der Funktionsbaustein arbeitet normal weiter. Die Variable wird persistent gespeichert. Voreingestellt auf 500ms.

eReferencingMode: Enum, über das der Referenzierungsmodus des Bausteins vorgegeben wird (siehe E_HVACReferencingMode).
Je nach Ausstattung des verwendeten Stellantriebs erfolgt das Referenzieren der Position in Abhängigkeit von eReferencingMode.
Ist eReferencingMode = eHVACReferencingMode_Emulation, so wird die Position des Antriebs anhand der Ansteuerung von bOpen und bClose mittels tStrokeTime errechnet. Mit zunehmenden Betriebsstunden des Dreipunktventils oder der Dreipunktklappe können jedoch Abweichungen durch mechanische Ungenauigkeiten im Antrieb entstehen. Um einen automatischen Abgleich zwischen der Ist- und der errechneten Position zu erreichen, wird einer der Ausgänge bOpen oder bClose bei Erreichen der errechneten Position rPosition von rMaxSetpoint oder rMinSetpoint auf TRUE gesetzt und sie erhält dementsprechend den Wert des Parameters rMaxSetpoint oder rMinSetpoint. Eine fallende Flanke an den Signaleingängen bLimitSwitchOpenund bLimitSwitchClose wird für die Referenzierung der Position des Antriebs auf rMaxSetpoint oder rMinSetpoint genutzt. Nach dem Erreichen des jeweiligen Endlagenschalters wird der dazu gehörige Ausgang bOpenoder bClose auf TRUE gesetzt bleiben.
Ist eReferencingMode = eHVACReferencingMode_AnalogFeedback so wird die Position des Antriebs anhand des Signals rFeedback übergeben. Nach dem Erreichen des jeweiligen Endlagenschalters wird der dazu gehörige Ausgang bOpenoder bClose auf TRUE gesetzt bleiben.
Liegt ein falscher Variablenwert an, dann wird, wenn vorhanden der letzte, gültige Variablenwert genommen. Wenn kein gültiger, letzter Wert vorliegt, dann wird mit dem Voreinstellwert weitergearbeitet. bInvalidParameter wird bei falscher Parameterangabe gesetzt, der Funktionsbaustein arbeitet normal weiter. Die Variable wird persistent gespeichert. Voreingestellt auf 0.

FB_HVACAnalogTo3Point 3:

Beispiel

tInterval

120 Sekunden

tPauseMin

10 Sekunden

tPauseMax

60 Sekunden

 

 

rSetpoint

100%

rPosition

50%

tPauseInterval / bClose OR bOpen

35 Sekunden/85 Sekunden

 

 

rSetpoint

50%

rPosition

25%

tPauseInterval / bClose OR bOpen

47,5 Sekunden/72,5 Sekunden

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