FB_BA_LightGroupSwitch

In einer Licht-Zone werden ein oder mehrere Lichtaktoren zur gleichzeitigen Ansteuerung zusammengefasst, je nachdem wie es die örtlichen Gegebenheiten erfordern.
Dieses Template stellt eine Licht-Zone (Raum) dar, welche nur über Schalter bedient wird.
Funktion
Über den Templateeingang bManualSwitch lässt sich das Licht über den Steuerbaustein LightSwitch wechselweise ein- und ausschalten bzw. bei Langtastendruck (t > SwiOvrTi) auf- und abdimmen.
Die Eingänge bOn und bOff lassen das Licht gezielt ein- und ausschalten während über eine HMI durch den Befehl bSetLightValueMan_In der Lichtwert fSetLightValueMan_In direkt gesetzt wird.
Durch Handbefehle (nicht Präsenz) geschaltet arbeitet der Lichtbaustein FB_BA_LightCtrl normalerweise so, dass er immer aktiv ist und dies am Ausgang bManualMode anzeigt. Das ist dadurch begründet, dass der Anwender auch einmal gezielt das Licht abschalten möchte und es dadurch nicht zu der Situation kommen darf, dass der Baustein inaktiv wird und ein Lichttelegramm niedrigerer Priorität die Aktoren schaltet.
Normalerweise deaktiviert dann eine fallende Flanke am Präsenzeingang bPrc die Funktion. Da dies ohne Präsenzerkennung nicht möglich ist, ist der Lichtfunktion eine Logik voran geschaltet, die bei Erreichen von 0% am Lichtausgang einen Triggerimpuls an den Reset-Eingang bRst sendet und den Lichtsteuereingang so trotzdem deaktiviert. Wahlweise kann die Deaktivierung auch über den Templateeingang bResetRoomFunction erfolgen.
Im Falle des eingeschalteten Lichts wird der Baustein LightEvent durch bManualMode = TRUE aktiviert und ein Lichttelegramm mit dem gesetzten Lichtwert ausgegeben.
Neben dem internen Telegramm von LightEvent werden die eingangsseitigen Telegramme stAreaLighting und stScene mit auf einen Selektor (PrioSwi) geführt.
Dabei stellt stArea das resultierende Telegramm aus den übergeordneten Ebenen (Bereich/area, Etage/floor und Gebäude/building) dar, während stScene für eine beliebige, die Konstantlichtregelung zu übersteuernde Lichtszene reserviert ist.
Der Telegrammselektor (PrioSwi) leitet das höchst priorisierte Telegramm durch - bei gleicher Priorität das zuletzt gesendete (last writer wins).
Eingang stReferenceFeedback
Über diesen Eingang werden Informationen über den angesteuerten Lichtaktor bzw. den Referenzaktor einer Gruppe in die Lichtsteuerfunktion zurückgeführt.
Hierbei ist der Lichtwert des Referenzaktors von besonderer Bedeutung: Ist der Lichtaktor bereits von einer anderen Funktion gleicher oder niederer Priorität angesteuert und das hier beschriebene Template "übernimmt" nun die Kontrolle, so muss es den Aktor ausgehend von seinem bestehenden Lichtwert aus ansteuern.
Darüber hinaus werden aktuelle Werte und Status übertragen, die über die HMI zur Anzeige gebracht werden können.
Datenaustausch HMI
Der Datenaustausch mit der HMI wird hier in der Basisklasse FB_BA_Ext_LightCtrl (interner Baustein) realisiert. In diesem Template sichtbar ist die Verwendung folgender Variablen:
- fSetLightValueMan_In: Lichtwert, der über die HMI gesetzt werden soll.
- bSetLightValueMan_In: Befehl von der HMI, dass der obige Lichtwert gesetzt werden soll.
- bLightOn_Out: Ausgabeinformation "Licht Ein" an die HMI.
- fLightValue_Out: Ausgabeinformation Lichtwert an die HMI.
- bErr_Out: Ausgabeinformation "Referenzaktor in Störung" an die HMI.
- eActualPrio_Out: Aktuell steuernde Telegrammpriorität an die HMI.
![]() | Die Initialisierung des Templates erfolgt innerhalb der Methode FB_Init. |
Blockschaltbild

Syntax
FUNCTION_BLOCK FB_BA_LightGroupSwitch EXTENDS FB_BA_Ext_LightCtrl
VAR_INPUT
bManualSwitch : BOOL;
bOn : BOOL;
bOff : BOOL;
bResetRoomFunction : BOOL;
stAreaLighting : ST_BA_Lighting;
stScene : ST_BA_Lighting;
stReferenceFeedback : ST_BA_LightActuatorFeedback;
END_VAR
VAR_OUTPUT
stLighting : ST_BA_Lighting;
END_VAR
VAR_INPUT CONSTANT PERSISTENT
nSwiOvrTi : UDINT;
nSwiTi : UDINT;
nDimTi : UDINT;
nPreOffRampTi : UDINT;
fOnVal : REAL;
fPreOffVal : REAL;
nPreOffDly : UDINT;
bMemoryMode : BOOL;
eLightActivationMode : E_BA_LightActivationMode;
fLgtT : REAL;
END_VAR
VAR_INPUT CONSTANT
LightEvent : FB_BA_LightingEvt :=( ePrio:= E_BA_LightingPrio.eSimple);
END_VAR
VAR
LightSwitch : FB_BA_LightCtrl;
PrioSwi : FB_BA_LightingTgmSel4;
rtZero : R_TRIG;
bRst : BOOL;
END_VAR
Eingänge
Name | Typ | Beschreibung |
---|---|---|
bManualSwitch | BOOL | Kurze Tastendrücke an diesem Eingang schalten das Licht an und aus. Lange Tastendrücke (t > SwiOvrTi) lassen das Licht auf- und abdimmen. |
bOn | BOOL | Schaltet das Licht ein und aktiviert den Lichtsteuerbaustein. |
bOff | BOOL | Schaltet das Licht aus. Bedingt durch eine Zusatzbeschaltung, die bei Erreichen von 0% am Lichtsteuerbaustein einen Triggerimpuls an dessen Eingang bRst gibt, wird auch gleichzeitig der Baustein deakiviert. |
bResetRoomFunction | BOOL | Dieser Eingang schaltet den Lichtbaustein LightSwitch ab - er ist dann nicht mehr aktiv (Ausgang bAutmaticMode/bManualMode = FALSE). Die Abschaltung erfolgt über eine Rampe und Verweilzeit auf einem Basislichtwert, siehe Parameter: fPreOffVal, nPreOffDly und nPreOffRampT. |
stAreaLighting | Resultierendes Telegramm aus den übergeordneten Ebenen (Bereich/area, Etage/floor und Gebäude/building), welches im Baustein FB_BA_AreaLighting gebildet wird. | |
stScene | Reservierter Telegramm-Eingang für eine Szenenansteuerung. | |
stReferenceFeedback | Rückmeldeeingang des angesteuerten Lichtaktors bzw. der Führungsleuchte der angesteuerten Gruppe. |
Eingänge CONSTANT PERSISTENT
Name | Typ | Beschreibung |
---|---|---|
nSwiOvrTi | UDINT | Unterscheidungszeit [ms] zwischen Kurz- und Langtastendruck. In FB_Init voreingestellt auf 250 ms. |
nSwiTi | UDINT | Rampe für die Schaltfunktionen in Sekunden, bezogen auf ein Dimmen von 0 bis 100%. In FB_Init voreingestellt auf 2 s. |
nDimTi | UDINT | Rampe für die Dimmfunktionen in Sekunden, bezogen auf ein Dimmen von 0 bis 100%. In FB_Init voreingestellt auf 10 s. |
nPreOffRampTi | UDINT | Rampe, mit vor dem Abschalten auf einen Basiswert fPreOffVal gefahren wird. In FB_Init voreingestellt auf 2 s. |
fOnVal | REAL | Einschaltwert. In FB_Init voreingestellt auf 100%. |
fPreOffVal / nPreOffDly | REAL / UDINT | Basiswert und Haltezeit auf diesem Wert vor dem Ausschalten der Gesamtfunktion. Unterschreitet der aktuelle Lichtwert den Basiswert bereits, so ist diese Funktion nicht aktiv und es wird unmittelbar abgeschaltet. In FB_Init voreingestellt auf 4% und 10s. |
bMemoryMode | BOOL | Beim Einschalten des Lichts im Handbetrieb nimmt das Licht den Wert an, den die Funktion vor dem letzten Ausschalten innehatte. Ist der "Memory-Mode" nicht aktiv, so ist der Einschaltwert über fOnValMan definiert. In FB_Init voreingestellt auf FALSE. |
eLightActivationMode | Auswahl der Funktion der Beleuchtungsautomatik:
| |
fLgtT | REAL | Lichttemperatur: In FB_Init voreingestellt auf 3000K. |
Eingänge CONSTANT
Name | Typ | Beschreibung |
---|---|---|
LightEvent | Telegrammerzeuger für die Lichtwerte. Die Priorität ist voreingestellt auf eManualActuator. |
VAR
Name | Typ | Beschreibung |
---|---|---|
LightSwitch | Lichtsteuerbaustein. | |
PrioSwi | Telegrammauswahl. | |
rtZero | R_TRIG | Trigger, der vom Lichtausgabewert "0" aktiviert wird. |
bRst | BOOL | Interne Variable zum Deaktivieren der Gesamtfunktion. Es wird kein gültiges Lichtsteuertelegramm stLighting mehr ausgegeben. |
Voraussetzungen
Entwicklungsumgebung | Erforderliche Function |
---|---|
TwinCAT ab v3.1.4024.56 | TF8040 | TwinCAT Building Automation ab V5.8.0.0 |