FB_BARConstantLightControl

FB_BARConstantLightControl 1:

Der Funktionsbaustein Konstantlichtregelung regelt die Beleuchtung bei Raumbelegung so, dass eine eingestellte Mindestbeleuchtungsstärke nicht unterschritten wird. Dabei wird eine ausreichende Beleuchtung bei gleichzeitig minimalem Energieverbrauch sichergestellt.

Die Freigabe der Konstantlichtregelung erfolgt beim Betreten des Raums bzw. bei einer steigenden Flanke an den Eingang bPresence. Optional kann die Konstantlichtregelung auch über einen Taster bedient werden. Bei einem Kurzimpuls an dem Eingang bToggle wird die Konstantlichtregelung je nach aktuellen Zustand frei gegeben oder ausgeschaltet. Falls viele Konstantlichtregler mit einem Zentral-Ein-Kommando eingeschaltet werden sollen zum Beispiel in einer Büroetage, kann dieses mit dem Eingang bCentralOn realisiert werden. Ein Zentralbefehl zur Ausschaltung kann am Eingang bCentralOff angeschlossen werden.

Bei langem Betätigen der Taste an bToggle wird der Sollwert für die Raumhelligkeit manuell verändert. Bei einer fallenden Flanke von bToggle wird der aktuelle Wert der Raumhelligkeit als Sollwert abgespeichert. Die Änderungsgeschwindigkeit beim manuellen Erhöhen bzw. Absenken der Raumhelligkeit kann mittels eines Parameters eingestellt werden.

Der manuell eingestellte Sollwert für die Konstantlichtregelung bleibt bis zum nächsten Abschalten der Beleuchtung erhalten. Beim Neustart der Regelung bedingt durch die Ereignisse, steigende Flanke von bPresence, steigende Flanke an bCentralOn oder einem Impuls an bToggle wird je nach Einstellung des Parameter bInitialMode der zuletzt manuell gewählte Sollwert oder der Wert von uiSetpointlValue übernommen.

Im Automatikbetrieb erfolgt die Einschaltung der Beleuchtung nur dann wenn die Raumhelligkeit unter einem einstellbaren Hysteresewert (uiTargetRange) liegt. Bei steigender Außenhelligkeit reduziert der Konstantlichtregler den Kunstlichtanteil so lange bis ein minimaler Laststellwert lrMinDimValue am Ausgang des Reglers lrDimValue ansteht. Anschließend schaltet der Regler die Beleuchtung zeitverzögert mit dem Timer uiOffDelay ab.
Ein erneutes Einschalten der Beleuchtung bei abnehmender Außenhelligkeit wird mit dem Timer uiOnDealy verzögert.

Um unangenehme sichtbare Änderungen der Helligkeit zu vermeiden wird die Änderungsgeschwindigkeit des Stellsignals mit dem Parameter uiControlRampTime verzögert.

Für Wartungs- und Testwecke kann die Automatik der Konstantlichtregelung deaktiviert und die Beleuchtung im Handbetrieb ein- und ausgeschaltet werden. Die Flankenerkennung der Eingänge bCentrolOn,bCentalOff und bToggle ist damit deaktiviert.

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

Automatikbetrieb

Im Automatikbetrieb kann die Regelung auf drei verschiedene Weisen aktiviert bzw. deaktiviert werden:

  1. Über den Eingang bSwitch: Ein kurzes TRUE-Signal (kürzer als uiSwitchOverTime in Millisekunden) an bSwitch schaltet die Konstantlichtregelung aktiv, sofern sie vorher inaktiv war. Ein erneutes Kurzsignal an bSwitch deaktiviert die Konstantlichtregelung wieder. Ein langes TRUE-Signal an bSwitch lässt den Baustein in die Sollwert-Nachführung wechseln, dies ist weiter unten beschrieben.
  2. Über den Eingang bPresence: Die Einschaltmöglichkeit über diesen Eingang muss explizit durch ein TRUE-Signal an bPresenceOnActive (VAR_IN_OUT) freigegeben werden. Dann aktiviert eine steigende Flanke die Regelung, während eine fallende Flanke die Regelung immer deaktiviert, unabhängig vom Zustand von bPresenceOnActive .
  3. Über TRUE-Flanken an den Eingängen bCentralOn und bCentralOff wird die Regelung explizit ein- und ausgeschaltet, unabhängig vom vorherigen Zustand der Regelung. Diese Eingänge wirken nicht übersteuernd: ist beispielsweise über bCentralOff ausgeschaltet worden kann über bSwitch jederzeit auch wieder eingeschaltet werden.

Der Lichtausgabewert lrDimValue wird im aktiven Zustand zunächst auf den Startwert lrStartDimValue gesetzt. Daraufhin findet ein kontinuierlicher Ist-Sollwert-Vergleich statt. Läuft der Raum-Istwert uiBrightness [lux] dabei aus einem Zielbereich uiTargetRange [lux] um den Sollwert uiSetpointValue [lux] heraus, so wird dem durch Auf- bzw. Abdimmen der Beleuchtung entgegen geregelt. Die Regelung arbeitet dabei immer mit einer konstanten, parametrierbaren Dimmrampe uiRamptime [s], welche die Zeit eines kompletten Dimmvorgangs von 0% bis 100% angibt. Ebenfalls konstant sind die Zielwerte der Regelung: 0% für ab- und 100% für Aufdimmen. Im inaktiven Zustand wird der Lichtausgabewert lrDimValue auf 0.0 gesetzt.

FB_BARConstantLightControl 2:

Ein- und Ausschaltverzögerung, Mindestausgabewert

Steigt die Außenhelligkeit, so wird immer weniger künstliches Licht notwendig um die gewünschte Gesamthelligkeit zu erreichen. Bei ausreichender Außenhelligkeit kann die Beleuchtung auch ganz abgeschaltet werden.
Ein- und Ausschaltvorgänge können jedoch als störend empfunden werden, genauso wie sehr niedrige Ausgabe-Dimmwerte. Daher können an dem Baustein eine Ein- und Ausschaltverzögerung uiOnDelay/uiOffDelay um einen unteren Grenzwert lrMinDimValue definiert werden. Sinkt der intern ermittelte Ausgabewert unter diesen Mindestwert, so verharrt die Ausgabe auf diesem Minimum für die Zeit uiOffDelay [s]. Erst danach wird auf am Ausgang lrDimValue 0.0 ausgegeben. Ist im umgekehrten Fall einmal auf 0.0 ausgeschaltet worden, so wird bei Bedarf an künstlichem Licht dieses erst nach Ablauf von uiOnDelay [s] und dann auf den Wert lrMinDimValue eingeschaltet. Das folgende Diagramm soll das Verhalten verdeutlichen:

Die gelben Flächen zeigen die Bereiche, wo die Außenhelligkeit ein Abdimmen der Beleuchtung zulässt, bei den blauen Bereichen hingegen reicht die Außenhelligkeit alleine nicht aus um die gewünschte Raumhelligkeit zu erzielen. In den weißen Flächen ist die ausgegebene Stellgröße lrDimValue den Lichtverhältnissen angemessen.

FB_BARConstantLightControl 3:

Manuelle Nachführung des Sollwertes

Um die Lichtregelung persönlichen Helligkeitsbedürfnissen anpassen zu können, ist die Möglichkeit gegeben, den Sollwert zu erhöhen oder zu erniedrigen. Ein langes TRUE-Signal an bSwitch (länger als uiSwitchOverTime in Millisekunden) lässt den Baustein in den Dimmmodus wechseln und das Licht wird aufgedimmt, wenn im vorhergehenden Dimmmodus abgedimmt wurde und umgekehrt. Fällt bSwitch wieder auf FALSE, so wird der nun gemessene Helligkeitswert an uiBrightness als neuer Sollwert angenommen, auf den es zu regeln gilt.

Handbetrieb

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

FB_BARConstantLightControl 4:

Handmodus-Automatikmodus

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

VAR_INPUT

eDataSecurityType : E_HVACDataSecurityType;
uiLightCtrlMode   : UINT;
bSwitch           : BOOL;
bPresence         : BOOL;
bCentralOn        : BOOL;
bCentralOff       : BOOL;
uiBrightness      : UINT;
uiSetpoint        : 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.

bPresence: Eine dauerhaftes TRUE-Signal an diesem Eingang aktiviert die Regelung dann, wenn die Präsenz-Funktion durch bPresenceOnActive=TRUE (VAR_IN_OUT) aktiviert ist. Eine fallende Flanke an diesem Eingang hingegen deaktiviert die Regelung immer. 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-Istwert [lux].

uiSetpointValue: Licht-Sollwert [lux].

VAR_OUTPUT

lrDimValue              : LREAL;
bControlActive          : BOOL;
bAdjustedSetpointActive : BOOL;
uiAdjustedSetpoint      : UINT;
diActDeviation          : DINT;
bError                  : BOOL;
udiErrorId              : UDINT;

lrDimValue: Lichtausgabewert, 0..100%.

bControlActive: Dieser Ausgang ist TRUE, wenn der Baustein sich im Automatikbetrieb befindet und die Regelung eingeschaltet ist. Dies soll als zusätzliche Rückmeldung dienen, wenn eingeschaltet wurde, die Regelung jedoch einen Lichtwert von lrDimValue=0.0 ausgibt.

bAdjustedSetpointActive: Ist die Regelung aktiv und der Sollwert wurde manuell nachgeführt (s.o.), so wechselt der Zustand dieses Ausganges auf TRUE, um anzuzeigen, dass der Sollwert am Eingang uiSetpointValue nicht mehr aktiv ist.

uiAdjustedSetpoint: Dieser Ausgang zeigt den aktiven Sollwert an, wenn dieser manuell nachgeführt wurde (bAdjustedSetpointActive = TRUE). Ist kein nach geführter Sollwert aktiv, so wird dieser Ausgang auf 0 gesetzt.

diActDeviation: Aktuelle Regelabweichung in Lux. Dieser Ausgang zeigt nur dann einen gültigen Wert an, wenn der Baustein im Automatikmodus und eingeschaltet ist. Andernfalls wird 0.0 ausgegeben.

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.

uiSwitchOverTime  : UINT;
uiAdjustRampTime  : UINT;
bPresenceOnActive : BOOL;
bInitialMode      : BOOL;
uiTargetRange     : UINT;
uiControlRampTime : UINT;
uiOnDelay         : UINT;
uiOffDelay        : UINT;
lrMinDimValue     : LREAL;
lrMaxDimValue     : LREAL;
lrStartDimValue   : LREAL;
lrManualDimValue  : LREAL;

uiSwitchOverTime: Umschaltzeit in Millisekunden für den Eingang bSwitch zu Erkennung von Kurz- und Langsignal. (Kurzsignal: Ein-Ausschaltfunktion, Langsignal: Dimmfunktion)

uiAdjustRampTime: Rampenzeit in Sekunden mit welcher der Sollwert bei manueller Nachführung verstellt wird.

bPresenceOnActive: Steht dieser Eingang auf TRUE, so wird die Regelung durch eine positive Flanke an bPresence aktiviert werden, sofern der Baustein im Automatikmodus (uiLightCtrlMode = 0) ist.

bInitialMode: Ein TRUE-Signal an diesem Eingang lässt den Baustein nach jeder Aktivierung mit dem Sollwert an uiSetpoint beginnen. Steht dieser Eingang hingegen auf FALSE, so wird bei Aktivierung des Bausteines der Sollwert genommen, welcher zuletzt aktiv war, also auch manuell nachgeführte Sollwerte.

uiTargetRange: Zielbereich um den Sollwert in dem nicht weiter ausgeregelt wird.

uiControlRampTime: Rampenzeit in Sekunden (benötigte Zeit, um von 0% auf 100% zu dimmen).

uiOnDelay: Einschaltverzögerung in Sekunden um den Minimalwert lrMinDimValue.

uiOffDelay: Ausschaltverzögerung in Sekunden um den Minimalwert lrMinDimValue.

lrMinDimValue: Unterer Grenzwert, auf den gedimmt wird, siehe Einleitung.

lrMaxDimValue: Obere Grenze, auf die der Ausgang lrDimValue geregelt werden kann.

lrStartDimValue: Wert, auf den das Licht beim Start der Regelung springen soll.

lrManualDimValue: Ausgabe-Dimmwert im Hand-Ein-Modus (uiLightCtrlMode=1).

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