FB_HVACRedundancyCtrlEx

FB_HVACRedundancyCtrlEx 1:

Dieser Funktionsbaustein dient zum Ansteuern einer bestimmten Anzahl von Aktoren, z.B. von Pumpen, aus einem Pool von 8 Aktoren. Die Logik sucht sich aus allen freigegebenen Aktoren diejenigen aus, welche die geringste Laufzeit aufweisen und schaltet diese entsprechend der Laufzeitreihenfolge ein. Dies erfolgt solange, bis die über iCountCtrl vorgegebene Anzahl erreicht ist. Intern werden die Aktoren über einen FIFO-Speicher geführt, so dass die Aktoren in derselben Reihenfolge wieder abgeschaltet werden. Mit der Zeitvorgabe uiMaxOnLevel, einer Änderung von iCountCtrl oder durch den Trigger bForceChange, kann ein Umschalten im Betrieb erfolgen. Es wird der am längsten angesteuerte Aktor abgeschaltet und derjenige mit der geringsten Laufzeit dazugeschaltet. Um bei Pumpen einen hydraulischen Schlag zu vermeiden, kann über tOverlap1Actuator eine Überlappungszeit vorgeben werden. Diese Zeit gilt nur für den Fall, wenn ein Wechsel zwischen zwei Aktoren stattfindet.
Im Gegensatz zum FB_HVACRedundancyCtrl wird für die Ermittlung der Laufzeiten kein interner Timer genutzt, sondern die Zeiten müssen als Stundenwerte von außen als Var_Input angelegt werden.

VAR_INPUT

eDataSecurityType       : E_HVACDataSecurityType;
bSetDefault             : BOOL;
iCountCtrl              : INT;
bEn1 - bEn8             : BOOL;
bFeedBack1 - bFeedBack8 : BOOL;
bForceChange            : BOOL;
rHours1-rHours8         : REAL;

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.

iCountCtrl: Anzahl der einzuschaltenden Aktoren (0..8). Bei Änderung von iCountCtrl zur Laufzeit entsteht ein Wechsel in der Folge der einzuschaltenden Aktoren.

bEn1 - 8: Freigabe für den entsprechenden Aktor.

bFeedBack1 - 8: Betriebsrückmeldung vom Aktor. Eine Auswertung findet nur statt, wenn tNoFeedbActuator > t#0s ist.

bForceChange: Eine positive Flanke an dem Eingang schaltet den ersten im FIFO befindlichen Aktor aus, und schaltet den Aktor aus dem Pool mit der geringsten Laufzeit zu.

rHours: Betriebsstunden

VAR_OUTPUT

bQ1 - bQ8         : BOOL;
arrFiFo           : Array[1..8] of INT;
eErrorCode        : E_HVACErrorCodes;
bErrorGeneral     : BOOL;
bInvalidParameter : BOOL;

bQ1 - 8: Rückmeldung Aktor.

arrFiFo: Tabelle des mit den Informationen welcher Aktor eingeschaltet ist (Aktornummer). Die Reihenfolge gibt die Ausschaltfolge an. arrFiFo[1] = Nr. des Aktors der als nächster ausgeschaltet wird.

eErrorCode: Zeigt an, welcher Aktor keine Betriebsrückmeldung innerhalb der vorgegebenen Zeitspanne gezeigt hat (siehe E_HVACErrorCodes). Die Erkennung dieser Fehlergruppe wird durch eine Zeit größer 0 in der Variable tNoFeedbActuator aktiviert.
eHVACErrorCodes_Error_NoFeedbackActuator1 := 15,
eHVACErrorCodes_Error_NoFeedbackActuator2 := 16,
eHVACErrorCodes_Error_NoFeedbackActuator3 := 17,
eHVACErrorCodes_Error_NoFeedbackActuator4 := 18,
eHVACErrorCodes_Error_NoFeedbackActuator5 := 19,
eHVACErrorCodes_Error_NoFeedbackActuator6 := 20,
eHVACErrorCodes_Error_NoFeedbackActuator7 := 21,
eHVACErrorCodes_Error_NoFeedbackActuator8 := 22,

bErrorGeneral: Fehler bei der Auswertung der Betriebsrückmeldung.

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

VAR_IN_OUT

tOverlap1Actuator  : TIME;
uiMaxOnLevel       : UINT;
tNoFeedbActuator   : TIME;

tOverlap1Actuator: Überlappungszeit für den Fall, wenn ein Wechsel zwischen zwei Aktoren stattfindet (0ms..1min). Die Variable wird persistent gespeichert. Voreingestellt auf 20s.

uiMaxOnLevel: Zeit in Stunden die ein Aktor max. Eingeschaltet sein darf (0h..1000h). Erzwingt einen Aktorenwechsel nur, wenn ein Aktor zum Einschalten zur Verfügung steht. Die Variable wird persistent gespeichert. Voreingestellt auf 200h.

tNoFeedbActuator: Zeit die vergehen darf bis die fehlende Betriebsrückmeldung vom Aktor zum bErrorGeneral = TRUE führt (0ms..60s). Ist die Zeit gleich 0, erfolgt keine Auswertung. Die Variable wird persistent gespeichert. Voreingestellt auf 3s

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