FB_LightControl
Funktionsblock zur tageslichtabhängigen Lichtsteuerung mit bis zu 30 Stützpunkten.
Kernstück dieses Funktionsblockes ist eine Eingangs-/Stellgrößentabelle von 30 Elementen mit einer Schwellwertumschaltung. Erreicht der Eingangswert den Bereich eines Stützpunktes (arrControlTable[n].nActualValue-arrControlTable[n].nSwitchRange/2 ... arrControlTable[n].nActualValue+arrControlTable[n].nSwitchRange/2) so springt die Stellgröße auf den entsprechenden Funktionswert arrControlTable[n].nSetpoint (siehe Diagramm). Daran angekoppelt ist ein Rampenbaustein, der die Stellgröße in der Zeit tRampTime anfährt.
Beim Einschalten mit einer positiven Flanke an bOn wird das Licht jedoch zunächst auf die nächstgelegene Stellgröße direkt geschaltet. Erst dann wird die Steuerung aktiviert. Während die Steuerung aktiv ist, kann jederzeit mit einer positiven Flanke an bOn "nachgestartet" und damit das Licht auf den nächstgelegene Stellgröße direkt gesteuert werden. Eine positive Flanke an bOff schaltet das Licht direkt aus.
Es muß nicht der ganze Bereich der Tabelle genutzt werden. Das erste Tabellenelement (arrControlTable, s.u.), bei dem der Parameter nSwitchrange eine 0 hat, wird als Beginn des unbenutzten Bereiches angesehen.
VAR_INPUT
bEnable : BOOL;
bOn : BOOL;
bOff : BOOL;
nActualValue : UINT;
tRampTime : TIME := t#30s;
arrControlTable : ARRAY[1..30] OF ST_ControlTable;
nOptions : DWORD;
bEnable: Solange dieser Eingang auf TRUE steht, sind die Eingänge bOn und bOff aktiv. Ein negativer Zustand deaktiviert die Eingänge.
bOn: Eine steigende Flanke schaltet nLightLevel direkt auf den nächst gelegene Stellgröße .
bOff: Eine steigende Flanke schaltet nLightLevel unmittelbar auf "0".
nActualValue: aktuelle Helligkeit.
tRampTime: Zeitdauer, in der der Helligkeitswert auf den nächste Stellgröße gesteuert wird. (Voreingestellter Wert: 30s).
arrControlTable: Eingagswert-/Stellgrößen-Tabelle. arrControlTable[1] bis arrControlTable[30] vom Typ ST_ControlTable.
TYPE ST_ControlTable : STRUCT nActualValue : UINT; nControlValue : UINT; nSwitchRange : UINT; END_STRUCT END_TYPE nActualValue: aktuelle Helligkeit. nControlValue: Zugehöriger Umschaltpunkt (Stellgröße). nSwitchRange: Schwellwert um die Eingangswert-Stützstelle bei der umgeschaltet wird. Der Eintrag "0" kennzeichnet den Anfang des nicht genutzten Bereiches der Tabelle. |
nOptions: Reserviert für zukünftige Entwicklungen.
VAR_OUTPUT
bLight : BOOL;
bBusy : BOOL;
bControlActive : BOOL;
bError : BOOL;
nErrorId : UDINT;
bLight: Dieser Ausgang ist so lange gesetzt, wie nLightLevel größer als "0" ist.
bBusy: Dieser Ausgang ist immer dann aktiv, solange eine Befehlsabarbeitung (bOn, bOff, bToggle oder Rampenfahrt) aktiv ist.
bControlActive: Dieser Ausgang ist so lange aktiv, wie auch die Regelung aktiv ist.
bError: Dieser Ausgang wird auf TRUE geschaltet, wenn bei der Ausführung eines Befehls ein Fehler aufgetreten ist. Der befehlsspezifische Fehlercode ist in nErrorId enthalten. Wird durch das Ausführen eines Befehls an den Eingängen auf FALSE zurückgesetzt.
nErrorId: Enthält den spezifischen Fehlercode des zuletzt ausgeführten Befehls. Wird durch das Ausführen eines Befehls an den Eingängen auf "0" zurückgesetzt. Siehe Fehlercodes.
VAR_IN_OUT
nLightLevel : UINT;
nLightLevel: Ausgabe-Stellgröße des Bausteines und Verweis auf den Lichtausgangswert.