FB_HVACRedundancyCtrl

FB_HVACRedundancyCtrl 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, die 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 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 dazu geschaltet. 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.
Für die Ermittlung der Laufzeiten wird intern der Funktionsbaustein FB_HVACWork instanziiert und die IN-OUT-Variablen nach außen weitergeben (rHours und uiCount). Die Betriebszeiterfassung wird über die Feedback Eingänge angesteuert. Sollte kein Rückmeldungssignal vom Aktor zur Verfügung stehen, so muss der Aktor-Ausgang auf den Feedback-Eingang zurückgeführt werden.

VAR_INPUT

eDataSecurityType        : E_HVACDataSecurityType;
bSetDefault              : BOOL;
iCountCtrl               : INT;
bEn1 - bEn8              : BOOL;
bFeedBack1 - bFeedBack8  : BOOL;
bForceChange             : BOOL;
dtSystemTime             : DT;
bSysTakt1Hz              : BOOL;
bResetAllHours           : BOOL;
bResetAllCounter         : 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.

iCountCtrl: Anzahl der einzuschaltenden Aktoren (0..8).

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

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

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.

dtSystemTime: Systemzeit.

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

bResetAllHours: Setzt alle Betriebsstundenzähler zurück.

bResetAllCounter: Setzt alle Einschaltzähler zurück.

bReset: Quittierungseingang bei einer Störung.

VAR_OUTPUT

bQ1 - bQ8           : BOOL;
eErrorCode          : E_HVACErrorCodes;
bErrorGeneral       : BOOL;
bInvalidParameter   : BOOL;

bQ1 - 8: Rückmeldung Aktor.

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

rHours             : REAL;
uiCount            : UINT;
tOverlap1Actuator  : TIME;
uiMaxOnLevel       : UINT;
tNoFeedbActuator   : TIME;

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

uiCount[1..8]: Einschaltzyklenzähler. Die Variable wird persistent gespeichert.

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 [h] 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