FB_DALI102ConstantLightControl

Der Baustein FB_DALI102ConstantLightControl stellt die grundlegenden Funktionen zur Realisierung einer Konstantlichtregelung zur Verfügung.
Durch zyklisches Auf- und Abdimmen wird versucht, auf einen vorgegebenen Sollwert (nSetpointValue) zu regeln. Die Dynamik der Regelung wird durch eine Totzeit (tDeadtime) bestimmt. Die Totzeit legt die Wartezeit zwischen den einzelnen DALI-Befehlen zur Veränderung des Ausgangswertes (nActualLevel) fest. Je kleiner die Totzeit, desto schneller wird nachgeregelt. Eine frei definierbare Hysterese (nHysteresis) verhindert ein ständiges Schwingen um den Sollwert. Liegt der Istwert im Bereich der Hysterese um den Sollwert, so wird der Ausgangswert der DALI-Vorschaltgeräte nicht verändert.
Bedienung
Der Baustein bietet die Möglichkeit, ein einzelnes DALI-Vorschaltgerät per Kurzadresse, mehrere DALI-Vorschaltgeräte per Gruppenadresse, oder alle DALI-Vorschaltgeräte einer DALI-Linie per Sammelruf anzusprechen.
Die Variablen minLevel, maxLevel, fadeRate, fadeTime, extendedFadeTimeBase und extendedFadeTimeMultiplier sind Parameter, die in jedem DALI-Vorschaltgeräte separat abgespeichert werden. Durch Beschreiben der jeweiligen Eigenschaften und einer positive Flanke am Eingang bInitialize können diese Variablen in den DALI-Vorschaltgeräten verändert werden.
Regelung
Durch positive Flanken an den Eingängen bOn, bOff und bToggle kann der Ausgangswert der DALI-Vorschaltgeräte geschaltet werden. Sind die DALI-Vorschaltgeräte eingeschaltet und ist die Regelung aktiv (bEnable = TRUE), so wird auf den vorgegebenen Sollwert geregelt. Ist die Regelung nicht aktiv (bEnable = FALSE), so bleibt der Ausgangswert der DALI-Vorschaltgeräte unverändert.
Das schrittweise Anpassen des Ausgangswertes der DALI-Vorschaltgeräte erfolgt mit den DALI-Befehlen STEP UP/STEP DOWN bzw. UP/DOWN.
Ist die Regelabweichung (nDeviation) größer als nHysteresis, so wird mit dem DALI-Befehl UP/DOWN der Ausgangswert angepasst. Die Anzahl der Schritte, um die sich der Ausgangswert ändert, wird durch die Eigenschaft eFadeRate vorgegeben.
Liegt die Regelabweichung zwischen nHysteresis/2 und nHysteresis, so wird der DALI-Befehl STEP UP/STEP DOWN verwendet und somit der Ausgangswert nur um einen Schritt angepasst.
Ist die Regelabweichung kleiner als nHysteresis/2, so bleibt der Ausgangswert der DALI-Vorschaltgeräte unverändert.
Die Regelabweichung berechnet sich aus nSetpointValue - nActualBrightness.
Die Totzeit (tDeadtime) gibt die Zeit vor, nach der der Ausgangswert angepasst wird. Je Regelzyklus wird der DALI-Befehl STEP UP/STEP DOWN bzw. UP/DOWN nur einmal aufgerufen.
Bedienung über die Eingänge bOn, bOff und bToggle
Durch positive Flanken an den Eingängen bOn, bOff und bToggle kann der Ausgangswert der DALI-Vorschaltgeräte unmittelbar geändert werden. Dieses ist unabhängig davon, ob die Regelung aktiviert oder deaktiviert (bEnable) wurde.
Werden die DALI-Vorschaltgeräte durch bOn oder bToggle eingeschaltet, so geben die Variablen fadeTime, extendedFadeTimeBase und extendedFadeTimeMultiplier die Geschwindigkeit vor, in der der Ausgangswert verändert wird. Das Ausschalten der DALI-Vorschaltgeräte durch bOff oder bToggle erfolgt unmittelbar. Als Einschaltwert wird in diesem Fall nSwitchOnLevel verwendet. Dieser Wert muss im Bereich der Eigenschaften nMinLevel und nMaxLevel liegen.
DALI-Kurzadresse Referenzgerät (nReferenceDeviceAddress)
Werden mehrere DALI-Vorschaltgeräte angesprochen, so wird über nReferenceDeviceAddress der aktuelle Ausgangswert des Referenz-DALI-Vorschaltgerätes ausgelesen. Je nach Zustand des Referenz-DALI-Vorschaltgerätes werden die DALI-Vorschaltgeräte auf den gewünschten Ausgangswert gesetzt.
Der Parameter nReferenceDeviceAddress wird ebenfalls verwendet, wenn im Hintergrund der Ausgangswert des Referenz-DALI-Vorschaltgerätes zyklisch ausgelesen wird (tCycleActualLevel > 0 sec).
Soll mit dem Baustein ein einzelnes DALI-Vorschaltgerät angesteuert werden (eAddressType = E_DALIAddressType.Short) so wird kein Referenz-DALI-Vorschaltgerät benötigt. Der Ausgangswert des einzelnen DALI-Vorschaltgerätes wird über nAddress ermittelt. Der Parameter nReferenceDeviceAddress ist in diesem Fall ohne Bedeutung.
Wird nReferenceDeviceAddress verwendet, so muss dieser immer die Kurzadresse eines DALI-Vorschaltgerätes enthalten, welches auch in der angesprochenen DALI-Gruppe enthalten ist. Bei Sammelruf muss sich an der DALI-Linie ein DALI-Vorschaltgerät mit entsprechender Kurzadresse befinden.
Beispiel
Das folgende Beispiel soll zeigen, wie ein DALI-Helligkeitssensor mit dem Baustein FB_DALIConstantLightControl kombiniert werden kann. In diesem Beispiel wird der DALI-Sensor PD11-BMS-FLAT der Firma B.E.G. verwendet.
Da nur die gemessene Helligkeit benötigt wird, wird die Instanz für den Bewegungsmelder deaktiviert (Eigenschaft bEnableOccupancy).
Die Helligkeit wird über den Eingang bQueryBrightness aus dem DALI-Sensor ausgelesen. Somit kann auch die Instanz für den Helligkeitssensor deaktiviert werden (Eigenschaft bEnableBrightness).
Zum Ende der Totzeit wird der Ausgang bControlCyclerEnding der Konstantlichtregelung auf TRUE gesetzt. Diese positive Flanke wird mit dem Eingang bQueryBrightness des DALI-Sensors verbunden. Dadurch wird unmittelbar vor der Berechnung der Regelabweichung (nDeviation) der aktuelle Helligkeitswert ausgelesen.
![]() | Durch das Deaktivieren beider Instanzen, versendet der DALI-Sensor keine Events und der DALI-Bus wird nicht unnötig belastet. |
Die Eigenschaften werden bei der Deklaration der Instanz direkt initialisiert. Ein explizites Zuweisen zur Laufzeit ist dadurch nicht mehr notwendig.
PROGRAM P_ConstantLightControl
VAR
fbBrightness : FB_DALI_BEG_PD11_BMS_V8_Flat(Communication.fbKL6821Communication) :=
(bEnableOccupancy := FALSE,
bEnableBrightness := FALSE);
fbConstantLightControl : FB_DALI102ConstantLightControl(Communication.fbKL6821Communication) :=
(nMinLevel := 85,
nMaxLevel := 254);
bInitialize : BOOL;
bToggle : BOOL;
nBrightnessLevel : UINT;
nActualLevel : BYTE;
nDeviation : DINT;
END_VAR

Eingänge
VAR_INPUT
bInitialize : BOOL := FALSE;
bEnable : BOOL := TRUE;
nAddress : BYTE;
eAddressType : E_DALIAddressType := E_DALIAddressType.Short;
nSetpointValue : UINT := 500;
nActualBrightness : UINT := 500;
nHysteresis : UINT := 30;
tDeadtime : TIME := T#5S;
bOn : BOOL;
bOff : BOOL;
bToggle : BOOL;
nSwitchOnLevel : BYTE := 254;
nReferenceDeviceAddress : BYTE;
tCycleActualLevel : TIME := T#30S;
nOptions : DWORD := 0;
END_VAR
Name | Typ | Beschreibung |
---|---|---|
bInitialize | BOOL | Über eine positive Flanke an diesem Eingang werden die Werte aller Eigenschaften in die DALI-Vorschaltgeräte geschrieben. Das Schreiben der Eigenschaften in die DALI-Vorschaltgeräte ist nur dann möglich, wenn keine anderen Funktionen von dem Baustein ausgeführt werden (bBusy = FALSE). |
bEnable | BOOL | Aktiviert die Konstantlichtregelung, sobald dieser Eingang TRUE ist. Ist der Eingang FALSE, so ist die Konstantlichtregelung deaktiviert. |
nAddress | BYTE | Adresse eines DALI-Vorschaltgerätes oder einer DALI-Gruppe. |
eAddressType | Definiert, ob der Eingang nAddress eine Kurzadresse (0…63) oder eine Gruppenadresse (0…15) enthält. Der Eingang nAddress hat keine Bedeutung, wenn ein Sammelruf (Broadcast) oder ein Sammelruf an nicht adressierte Geräte (BroadcastUnaddr) ausgewählt wurde. | |
nSetpointValue | UINT | An diesem Eingang wird der Sollwert angelegt (0…65535). |
nActualBrightness | UINT | An diesem Eingang wird der Istwert angelegt. |
nHysteresis | UINT | Regelhysterese (1...65535) um den Sollwert. Liegt der Istwert innerhalb dieses Bereiches, so werden die Ausgangswerte der DALI-Vorschaltgeräte nicht verändert. |
tDeadtime | TIME | Nach Ablauf der Totzeit (2...3600 s) wird die Regelabweichung neu berechnet und, wenn notwendig, werden die Ausgangswerte der DALI-Vorschaltgeräte reduziert bzw. erhöht. |
bOn | BOOL | Durch eine positive Flanke an diesem Eingang werden die DALI-Vorschaltgeräte auf nSwitchOnLevel gesetzt. |
bOff | BOOL | Durch eine positive Flanke an diesem Eingang werden die DALI-Vorschaltgeräte ausgeschaltet. |
bToggle | BOOL | Durch eine positive Flanke an diesem Eingang wechseln die DALI-Vorschaltgeräte zwischen Aus und nSwitchOnLevel. |
nSwitchOnLevel | BYTE | Ausgangswert (minLevel...maxLevel) für das Einschalten der DALI-Vorschaltgeräte durch die Eingänge bOn und bToggle. |
nReferenceDeviceAddress | BYTE | Kurzadresse (0…63) des Referenz DALI-Vorschaltgerätes bei Gruppen- und Sammelruf. Bei eAddressType = E_DALIAddressType.Short wird dieser Parameter nicht ausgewertet. In diesem Fall wird über nAddress das Referenz DALI-Vorschaltgerät ausgelesen. |
tCycleActualLevel | TIME | Zykluszeit, mit der im Hintergrund der aktuelle Ausgangswert des Referenz DALI-Vorschaltgerätes ausgelesen wird. Stellen Sie die Zykluszeit so ein, dass möglichst wenige DALI-Befehle versendet werden. Wird die Zeit auf 0 sec gesetzt, so wird das Auslesen nicht ausgeführt. |
nOptions | DWORD | Reserviert für zukünftige Erweiterungen. |
Konstante | Beschreibung |
---|---|
Tc3_DALI.GVL.cMemoryMode | Aktiviert den Memory-Mode. |
Ausgänge
VAR_OUTPUT
bError : BOOL;
ipResultMessage : I_TcMessage;
bBusy : BOOL;
bInitializing : BOOL;
nActualLevel : BYTE;
nDeviation : DINT;
bControlCycleEnding : BOOL;
END_VAR
Name | Typ | Beschreibung |
---|---|---|
bError | BOOL | Der Ausgang wird auf TRUE geschaltet, wenn bei der Ausführung ein Fehler aufgetreten ist. Weitere Informationen zu dem Fehler können über die Variable ipResultMessage abgefragt werden. Der Ausgang wird wieder auf FALSE gesetzt, sobald bBusy auf TRUE geht. |
ipResultMessage | I_TcMessage | Interface-Pointer (siehe Fehlerauswertung) mit dem detaillierte Informationen über die Abarbeitung des Bausteins abgefragt werden können (siehe Laufzeitmeldungen). Der Interface-Pointer ist gültig, nachdem bBusy von TRUE auf FALSE gewechselt hat. |
bBusy | BOOL | Der Ausgang wird gesetzt, sobald die Ausführung der DALI-Befehle gestartet wurde und bleibt so lange aktiv, bis alle DALI-Befehle abgearbeitet wurden. |
bInitializing | BOOL | Der Ausgang wird gesetzt, sobald die Initialisierung der DALI-Vorschaltgeräte gestartet wurde und bleibt so lange aktiv, bis alle DALI-Befehle abgearbeitet wurden. |
nActualLevel | BYTE | Aktueller Ausgangswert (0, minLevel...maxLevel, 255) des Referenz DALI-Vorschaltgerätes welches über nReferenceDeviceAddress angesprochen wird. Bei eAddressType = E_DALIAddressType.Short wird das Referenz DALI-Vorschaltgerät über nAddress ausgelesen. Ein Wert von 255 (MASK) kennzeichnet das beim Auslesen des Ausgangswertes aus dem Referenz DALI-Vorschaltgerät ein Fehler aufgetreten ist. Die Ursache kann z.B. ein technischer Defekt sein oder das DALI-Vorschaltgerät befindet sich in der Aufstartphase. In diesem Fall wird bError nicht auf TRUE gesetzt. |
nDeviation | DINT | Aktuelle Regelabweichung (nSetpointValue - nActualBrightness) |
bControlCycleEnding | BOOL | Vor Ablauf der Totzeit (tDeadtime) wird dieser Ausgang für 500 ms auf TRUE gesetzt. Dieser Ausgang kann z.B. dazu genutzt werden, um von einem DALI-Helligkeitssensor die aktuelle Helligkeit auszulesen. |
Eigenschaften
Alle Parameter, die per bInitialize in das DALI-Steuergerät geschrieben werden, sind als Eigenschaften vorhanden.
Name | Typ | Zugriff | Initialwert | Beschreibung |
---|---|---|---|---|
nMaxLevel | BYTE | Get, Set | 254 | Siehe Variable maxLevel. |
nMinLevel | BYTE | Get, Set | 126 | Siehe Variable minLevel. |
eFadeRate | E_DALIFadeRate | Get, Set | N045StepsPerSec | Siehe Variable fadeRate. |
eFadeTime | E_DALIFadeTime | Get, Set | Disabled | Siehe Variable fadeTime. |
eExtendedFadeTimeBase | E_DALIExtendedFadeTimeBase | Get, Set | Base01 | Siehe Variable extendedFadeTimeBase. |
eExtendedFadeTimeMultiplier | E_DALIExtendedFadeTimeMultiplier | Get, Set | Disabled | Siehe Variable extendedFadeTimeMultiplier. |
ipDALICommunication | I_DALICommunication | Get, Set | 0 | Interface-Pointer auf den Kommunikationsbaustein (siehe Übergabe der Referenz auf den Kommunikationsbaustein). |
Voraussetzungen
Entwicklungsumgebung | Erforderliche SPS-Bibliothek |
---|---|
TwinCAT ab v3.1.4024.25 | Tc3_DALI ab v3.10.5.0 |