FB_BARDaylightControl

FB_BARDaylightControl 1:

Tageslichtschaltung. Diese Automatikschaltung arbeitet im Gegensatz zur Konstantlichtregelung nicht mit Dimmwerten, sondern schaltet das Licht in Abhängigkeit der gemessene Helligkeit nur ein und aus.

Der Baustein kennt drei verschiedene Modi, welche über den Eingang uiLightCtrlMode eingestellt werden können:

Automatikbetrieb

Unterschreitet die Helligkeit im Raum uiBrightness den Wert uiSwitchOnValue [lux] für die Zeit uiOnDelay [s], so wird das Licht eingeschaltet. Nun wird für die Zeit uiLightOnTime gewartet, bis die Leuchtmittel ihre volle Leuchtkraft erreichen. Die dann gemessene Helligkeit im Raum ist dann - bei angenommen gleichbleibender Außenhelligkeit - um den Helligkeitszugewinn höher als vor dem Einschalten. Ein Wiederausschalten der Beleuchtung macht erst dann Sinn, wenn die Außenhelligkeit wieder deutlich ansteigt. Dieser Grenzwert errechnet sich aus dem Lichteinschaltwert plus dem Helligkeitszugewinn plus dem Parameter uiSwitchOffOffset. Überschreitet die Raumhelligkeit durch wieder ansteigende Außenhelligkeit diesen ermittelten Wiederausschaltwert für die Dauer von uiOffDelay [s], so wird die Beleuchtung wieder ausgeschaltet.

FB_BARDaylightControl 2:

FB_BARDaylightControl 3:

Handbetrieb

In den Hand-Betriebsmodi sind die Eingänge bSwitch, bCentralOn und bCentralOff ohne Funktion: bei uiLightCtrlMode=1 wird der Ausgabewert bOn auf TRUE und bei uiLightCtrlMode=2 auf FALSE gesetzt.

FB_BARDaylightControl 4:

Handmodus-Automatikmodus

Ein Wechsel in den Handmodus setzt eine zuvor gestartete Regelung zurück. Beim Wiedereintritt in den Automatik-Modus ist der Ausgangswert bOn=FALSE und die Regelung muss neu gestartet werden.

VAR_INPUT

eDataSecurityType : E_HVACDataSecurityType;
uiLightCtrlMode   : UINT;
bSwitch           : BOOL;
bCentralOn        : BOOL;
bCentralOff       : BOOL;
uiBrightness      : UINT;

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.

uiLightCtrlMode: Betriebsmodus.

bSwitch: Positive Flanken an diesem Eingang schalten die Regelung wechselseitig ein und aus. Beim Ausschalten wird der Ausgang lrDimValue auf 0.0 gesetzt. Dieser Befehlseingang ist nur im Automatik-Modus (uiLightCtrlMode=0) aktiv.

bCentralOn: Eine positive Flanke an diesem Eingang schaltet die Regelung ein. Dieser Befehlseingang ist nur im Automatik-Modus (uiLightCtrlMode=0) aktiv.

bCentralOff: Eine positive Flanke an diesem Eingang schaltet die Regelung aus und den Ausgang lrDimValue auf 0.0. Dieser Befehlseingang ist nur im Automatik-Modus (uiLightCtrlMode=0) aktiv.

uiBrightness: Licht-Ist-Wert [lux].

VAR_OUTPUT

lrDimValue          : LREAL;
bOn                 : BOOL;
uiRemainingOnDelay  : UINT;
uiRemainingOffDelay : UINT;
uiPreOnValue        : UINT;
uiLightGain         : UINT;
uiSwitchOffValue    : UINT;
bControlActive      : BOOL;
bError              : BOOL;
udiErrorId          : UDINT;

lrDimValue: Um diese Funktion zu den anderen Licht-Anwenderfunktionen gleich zu halten, existiert auch hier ein Lichtausgabewert als Fließkommazahl in Prozent, obwohl das Licht nur ein- oder ausgeschaltet wird. Das bedeutet: Licht aus: lrDimValue = 0.0, Licht an: lrDimValue = 100.0.

bOn: Schaltausgang für die Beleuchtung.

uiRemainingOnDelay: Countdown der Einschaltverzögerung in Sekunden. Solange kein Herunterzählen der Zeit stattfindet, steht dieser Ausgang auf 0.

uiRemainingOffDelay: Countdown der Ausschaltverzögerung in Sekunden. Solange kein Herunterzählen der Zeit stattfindet, steht dieser Ausgang auf 0.

uiPreOnValue: Gemessener Lichtwert unmittelbar vor dem Einschalten der Beleuchtung. Bei ausgeschalteter Steuerung oder im Handmodus steht dieser Ausgang auf "0".

uiLightGain: Errechneter Helligkeitszugewinn nach Einschalten der Beleuchtung und Ablauf einer zusätzlichen Wartezeit von 1s. Bei ausgeschalteter Steuerung oder im Handmodus steht dieser Ausgang auf "0".

uiSwitchOffValue: Ermittelter Wiederausschaltwert, wobei die gemessene Helligkeit größer sein muss. Während der Wartephase (uiLightOnTime) springt dieser Wert auf 65535, um ein Ausschalten des Lichts in dieser Zeit zu vermeiden. Bei ausgeschalteter Steuerung oder im Handmodus steht dieser Ausgang auf "0".

bError: Dieser Ausgang wird auf TRUE geschaltet, wenn die eingetragenen Parameter fehlerhaft sind.

udiErrorId: Enthält den Fehlercode, sollten die eingetragenen Werte fehlerhaft sein. Siehe Fehlercodes.

VAR_IN_OUT

Damit die eingetragenen Parameter über einen Steuerungsausfall hinweg erhalten bleiben ist es erforderlich, sie als In-Out-Variablen zu deklarieren. Im Programm wird ihnen dann eine Referenz-Variable zugewiesen. Jede Änderung des Wertes dieser Referenz-Variablen wird im Funktionsbaustein persistent gespeichert und nach einem Steuerungsausfall und -wiederanlauf zurück in die Referenz-Variable geschrieben. Wären die Parameter nur als Eingangsvariablen deklariert, so könnten sie eine Referenzvariable nicht beschreiben.
Anwendungsbeispiel: example_persistent.zip.

uiSwitchOnValue   : UINT;
uiSwitchOffOffset : UINT;
uiLightOnTime     : UINT;
uiOnDelay         : UINT;
uiOffDelay        : UINT;

uiSwitchOnValue: Lichteinschaltwert. Bei einer Außenhelligkeit unter diesem Wert wird - nach Ablauf der Einschaltverzögerung - die Beleuchtung eingeschaltet.

uiSwitchOffOffset: Ist das Licht für die Zeit uiLightOnTime eingeschaltet (siehe oben) so berechnet sich der Lichtausschaltwert aus der aktuell gemessenen Lichtstärke plus diesem Wert.

uiLightOnTime: Die Beleuchtung erreicht nicht sofort ihren wahren Einschaltwert. Um den Zugewinn an Lichtintensität zu beurteilen wird nach dem Einschalten um diese Zeit in Millisekunden gewartet, bevor der Zugewinn und der davon abhängige Lichtausschaltwert berechnet wird.

uiOnDelay: Einschaltverzögerung in Sekunden. Ständige Ein- und Ausschaltvorgänge der Beleuchtung werden als sehr störend empfunden. Sinkt die Außenhelligkeit derart, dass die Konstantlichtregelung zur Unterstützung eingeschaltet werden soll, so soll dies erst nach dieser Verzögerungszeit geschehen.

uiOffDelay: Ausschaltverzögerung in Sekunden. Steigt die Außenhelligkeit derart, dass die Konstantlichtregelung ausgeschaltet werden soll, so soll dies erst nach dieser Verzögerungszeit geschehen um kurzzeitige Schwankungen auszublenden.

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