FB_DALI102ConstantLightControl

FB_DALI102ConstantLightControl 1:

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.

FB_DALI102ConstantLightControl 2:

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
FB_DALI102ConstantLightControl 3:

FB_DALI102ConstantLightControl 4: 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

E_DALIAddressType

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.

FB_DALI102ConstantLightControl 5: 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.

FB_DALI102ConstantLightControl 6: 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