FB_DALIV2Ramp

FB_DALIV2Ramp 1:

Der Funktionsbaustein FB_DALIV2Ramp dient zur Realisierung einer Lichtrampe.

Durch eine steigende Flanke am Eingang bOn wird das Licht auf den Maximalwert der Master-Lampe geschaltet. Eine steigende Flanke am Eingang bOff schaltet das Licht wieder aus. Steigende Flanken am Eingang bToggle invertieren den jeweiligen Lichtzustand. Eine positive Flanke am Eingang bStart läßt den Baustein das Licht vom aktuellen Wert auf nEndLevel dimmen. Die dazu benötigte Zeit wird durch tRampTime festgelegt. Alle Eingänge sind nur aktiv, solange bEnable auf TRUE steht, ansonsten wird der Baustein intern zurückgesetzt und keine weiteren DALI-Befehle mehr ausgegeben.
Bei jedem Start der Dimm-Rampe findet eine Überprüfung statt, ob der Wert nEndLevel innerhalb der zulässigen Grenzen (MIN LEVEL ... MAX LEVEL) des Master-Gerätes liegen. Der Wert „0“ ist ebenfalls erlaubt.

Rampenrealisierung

Grundsätzlich ist der Baustein so konzipiert, dass er innerhalb der vorgegebenen Rampenzeit die nötige Anzahl an OnAndStepUp- bzw. StepDownAndOff-Befehlen zeitlich gleichmäßig verteilt ausgibt.
Die Abarbeitung dieser Step- und Query-Befehle benötigt jedoch ihrerseits Zeit. Je weiter die Rampenzeit verringert wird, desto wahrscheinlicher wird die Tatsache, dass die intern berechnete Zeit für einen StepUp- bzw StepDown- Befehl nicht mehr ausreichend ist; die tatsächliche Rampenzeit wird im Vergleich zur eingestellten immer größer.
Um auch kleine Rampen realisieren zu können wird unterhalb eines intern voreingestellten Grenzwert von 11 s Rampenzeit die Funktionsweise des Bausteines vom Schritt-Betrieb auf DirectArcPower-Betrieb umgeschaltet. Der DALI-Befehl DirectArcPowerControl steuert die entsprechenden Lampen von ihrem aktuellen Wert innerhalb der FADE TIME auf den eingestellten Endwert. Insgesamt gibt es 16 verschiedene Fade-Time-Werte, die jeweils im Ansteuergerät einer jeden Lampe hinterlegt sind und folgende Werte annehmen können:

nFadeTime

tFadeTime (s)

0

<0,0707

1

0,707

2

1,000

3

1,414

4

2,000

5

2,828

6

4,000

7

5,657

8

8,000

9

11,314

10

16,000

11

22,627

12

32,000

13

45,255

14

64,000

15

90,510

Für die am Baustein eingestellte Rampe wird der nächste Wert aus der Tabelle genommen und in alle anzusteuernden Vorschaltgeräte einprogrammiert. Bei 6 s wäre das beispielsweise Stufe 7 = 5,657 s. Derselbe Wert würde ebenfalls für eine Rampenzeit von 5 s genommen werden. Ein genaues Zeitverhalten ist somit leider nicht möglich. Nach erfolgreicher Beendigung der Rampenansteuerung wird der Wert in alle Vorschaltgeräte zurück übertragen, den das Mastergerät vor der Zeiteinstellung innehatte.
Während der Rampenfahrt wird der Ausgabewert nActualLevelMasterDev als intern berechneter Wert ausgegeben, um den DALI-Bus nicht mit ständigen Abfrage-Befehlen zu belasten. Dieser Berechnung liegen die Start-Endwert-Differenz sowie die gewählte Rampenzeit zugrunde. Da es sich um einen berechneten Wert handelt, kann er durch Rundungen und Befehlsverzögerungen mit Fehlern behaftet sein und soll nur zur Orientierung dienen. Nach Beendigung der Rampe jedoch wird die Helligkeit direkt abgefragt und der Ausgabewert ist wieder exakt.

Anmerkung zum Parameter nMasterDevAddr

Das DALI-System bietet die Möglichkeit, Lampen nicht nur einzeln zu steuern, sondern diese auch gruppenweise oder mit Sammelbefehlen anzusprechen. Da die einzelnen Geräte Teilnehmer von verschiedenen Gruppen sein können, kann es sein, dass die einzelnen Lampen vor einer Gruppen- bzw. Sammelansteuerung verschiedene Helligkeitszustände haben. Um dennoch eine Aussage darüber treffen zu können, ob die Lampen nun ein- oder ausgeschaltet werden sollen, wird jeder Gruppe ein Führungsgerät (Master-Device) zugeordnet, nach dessen Zustand sich die restlichen Geräte richten. Soll mit dem Baustein eine einzelne Lampe angesteuert werden, eAddrType = eAddrTypeShort, so braucht kein Master-Device angegeben werden. Der Parameter nMasterDevAddr ist in diesem Fall ohne Bedeutung.

FB_DALIV2Ramp 2: Eingänge

VAR_INPUT
  bEnable                    : BOOL := TRUE;
  bOn                        : BOOL;
  bOff                       : BOOL;
  bToggle                    : BOOL;
  bStart                     : BOOL;
  nEndLevel                  : BYTE;
  tRampTime                  : TIME := t#8s;
  nOptions                   : DWORD := 0;
  nAddr                      : BYTE := 0;
  eAddrType                  : E_DALIV2AddrType := eDALIV2AddrTypeShort;
  nMasterDevAddr             : BYTE := 0;
  tCycleActualLevelMasterDev : TIME := t#0s;
END_VAR

Name

Typ

Beschreibung

bEnable

BOOL

Solange dieser Eingang auf TRUE steht, sind die Eingänge bOn, bOff, bToggle und bStart aktiv. Ein negativer Zustand deaktiviert die Eingänge und setzt den Baustein nach Abarbeitung der letzten notwendigen DALI-Befehle zurück. Es werden dann keine DALI-Befehle außer die zyklische Abfrage der Helligkeit des Mastergerätes mehr ausgegeben.

bOn

BOOL

Eine steigende Flanke schaltet die angesteuerten Lampen direkt auf den Maximalwert der Master-Lampe.

bOff

BOOL

Eine steigende Flanke schaltet die angesteuerten Lampen unmittelbar aus.

bToggle

BOOL

Eine steigende Flanke schaltet die angesteuerten Lampen unmittelbar aus, wenn die Master-Lampe nicht ausgeschaltet ist und umgekehrt ein, wenn die Master-Lampe aus ist.

bStart

BOOL

Liegt an diesem Eingang eine steigende Flanke an, so wird das Licht vom derzeitigen Wert (ausschlaggebend ist hier das Master-Gerät) auf nEndLevel herauf bzw. herabgedimmt. Die dafür benötigte Zeit wird mit tRampTime festgelegt. Der Dimmvorgang kann jederzeit durch bOn, bOff oder bToggle unterbrochen werden.

nEndLevel

BYTE

Zielwert des Dimmvorgangs. (Gültiger Wertebereich:0 oder MIN LEVEL ... MAX LEVEL)

tRampTime

TIME

Rampenzeit, siehe bStart. (Voreingestellter Wert: 8 Sekunden)

nOptions

DWORD

Reserviert für zukünftige Entwicklungen.

nAddr

BYTE

Adresse des Einzelgerätes bei Einzelansteuerung oder der Gruppe bei Gruppenansteuerung

nMasterDevAddr

BYTE

Adresse des Master-Gerätes (Referenzgerät) bei Gruppen- und Sammelschaltungen

eAddrType

E_DALIV2AddrType

Kurzadresse, Gruppenadresse oder Sammelruf (Broadcast)

tCycleActualLevelMasterDev

TIME

Zykluszeit, mit der im Hintergrund der aktuelle Istwert ausgelesen wird (siehe ACTUAL DIM LEVEL). Damit das Dimmen der Lampen nicht gestört wird, wird das Auslesen immer in der niedrigsten Priorität durchgeführt. Wird der Wert auf 0 gesetzt, so wird das Auslesen gesperrt.

FB_DALIV2Ramp 3: Ein-/Ausgänge

VAR_IN_OUT
  stCommandBuffer : ST_DALIV2CommandBuffer;
END_VAR

Name

Typ

Beschreibung

stCommandBuffer

ST_DALIV2CommandBuffer

Verweis auf die interne Struktur zur Kommunikation mit FB_KL6811Communication (KL6811) oder FB_KL6821Communication (KL6821).

FB_DALIV2Ramp 4: Ausgänge

VAR_OUTPUT
  nActualLevelMasterDev : BYTE;
  bBusy                 : BOOL;
  bError                : BOOL;
  nErrorId              : UDINT;
END_VAR

Name

Typ

Beschreibung

nActualLevelMasterDev

BYTE

Aktueller Ausgabewert des Master-Gerätes (bei eAddrType = eAddrTypeShort immer des jeweilig angesprochenen Gerätes)

bBusy

BOOL

Bei der Aktivierung des Funktionsbausteins wird der Ausgang gesetzt und bleibt so lange aktiv, bis der Befehl abgearbeitet wurde.

bError

BOOL

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

UDINT

Enthält den befehlsspezifischen Fehlercode des zuletzt ausgeführten Befehls. Wird durch das Ausführen eines Befehls an den Eingängen auf 0 zurückgesetzt (siehe Fehlercodes).

Voraussetzungen

Entwicklungsumgebung

Einzubindende SPS-Bibliothek

TwinCAT ab v3.1.4020.14

Tc2_DALI ab v3.4.3.0