FB_DALIV2Sequencer

FB_DALIV2Sequencer 1:

Der Funktionsbaustein FB_DALIV2Sequencer dient zur Realisierung von Lichtsequenzen mit bis zu 50 Stützpunkten.

Kernstück dieses Funktionsbausteins ist ein Rampenbaustein, der einzelne, in einer Tabelle definierte Helligkeitswerte in einer einstellbaren Zeit anfährt und auf diesem Helligkeitswert dann eine ebenfalls definierbare Zeit verweilt. Nach dem Verweilen wird dann der nächste Wert angefahren. Die Tabelle arrSequenceTable besteht, wie bereits erwähnt, aus 50 Einträgen mit den Werten für nTargetValue (Zielwert), tRampTime (Zeit zum Erreichen des Zielwertes) und tProlongTime (Verweilzeit auf dem Zielwert). Es ist nicht zwingend notwendig, alle 50 Werte zu nutzen. Ein 0-Eintrag aller 3 Werte markiert das Ende einer Sequenz. Darüber hinaus ist es mit dem Eingang nStartIndex möglich, eine Lichtsequenz an jeder beliebigen Stelle der Tabelle beginnen zu lassen. Dadurch lassen sich auch innerhalb der 50 Einträge mehrere verschiedene Lichtsequenzen programmieren, die untereinander jeweils durch 0-Eintrags-Elemente getrennt sind:

FB_DALIV2Sequencer 2:

Sequenz 1 beispielsweise sieht im zeitlichen Verlauf folgendermaßen aus (nStartIndex=1, nOptions.bit0=TRUE, Erläuterung siehe unten):

FB_DALIV2Sequencer 3:

Darüber hinaus lässt sich der Baustein "normal" ein- und ausschalten (Ein: Maximalwert der Lampen, Aus: 0) sowie über den Eingang bToggle zwischen „Ein“ und „Aus“ hin und herschalten. Alle Befehlseingänge sind jedoch nur dann aktiv, wenn der Eingang bEnable auf TRUE steht. Wird er zurück auf FALSE gesetzt, so werden keine Befehle mehr angenommen und der Lichtwert behält seinen aktuellen Zustand - auch aus einer Rampenfahrt heraus.

FB_DALIV2Sequencer 4:

Dieser Baustein basiert, wie eingangs erwähnt, auf dem FB_DALIV2Ramp. Der Rampenbaustein versucht, die eingestellte Rampenzeit so genau wie möglich abzubilden. Dennoch ist es notwendig, einmalig wie zyklisch, Daten aus den DALI-Vorschaltgeräten abzufragen, was je nach eingestellter PLC-Zykluszeit unterschiedlich lange dauert. Daher sind Ungenauigkeiten in der Rampenzeit nicht ausgeschlossen.

FB_DALIV2Sequencer 5: Eingänge

VAR_INPUT
  bEnable                    : BOOL := TRUE;
  bOn                        : BOOL;
  bOff                       : BOOL;
  bToggle                    : BOOL;
  bStart                     : BOOL;
  nStartIndex                : USINT := 0;
  arrSequenceTable           : ARRAY [1..nMaxSequenceValues] OF ST_DALIV2SequenceTable;
  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 zurück.

bOn

BOOL

Eine steigende Flanke schaltet nActualLevelMasterDevice direkt auf den Maximalwert.

bOff

BOOL

Eine steigende Flanke schaltet nActualLevelMasterDevice unmittelbar auf „0“.

bToggle

BOOL

Schaltet den Lichtzustand zwischen An (Maximalwert) und Aus (0) jeweils hin und her.

bStart

BOOL

Eine positive Flanke startet eine Lichtsequenz ab dem unter nStartIndex definierten Anfang.

nStartIndex

USINT

siehe bStart.

arrSequenceTable

 

Lichtwert-Tabelle mit den dazugehörigen Rampen- und Verweilzeiten (siehe ST_DALIV2SequenceTable)

nOptions

DWORD

Parametriereingang. Das Setzen (bzw. Nicht-Setzen) der einzelnen Bits dieser Variablen vom Typ DWORD hat folgende Wirkung:

Bit

Beschreibung

0

nicht gesetzt: Der Baustein stoppt nach Ablauf einer Sequenz seine Aktivität. Eine erneute positive Flanke an bStart wäre für einen Sequenz-Neustart nötig.
gesetzt: Nach Ablauf einer Sequenz läuft der Baustein automatisch an der an nStartIndex definierten Stelle weiter.

1..31

-- reserviert für zukünftige Optionen --

Name

Typ

Beschreibung

nAddr

BYTE

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

eAddrType

E_DALIV2AddrType

Kurzadresse, Gruppenadresse oder Sammelruf (Broadcast)

nMasterDevAddr

BYTE

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

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_DALIV2Sequencer 6: 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_DALIV2Sequencer 7: Ausgänge

VAR_OUTPUT
  nActualLevelMasterDev : BYTE;
  nActualIndex          : USINT;
  bLight                : BOOL;
  bSequenceActive       : BOOL;
  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)

nActualIndex

USINT

Verweis auf das aktuelle Element in der Sequenz-Tabelle. Ist eine Sequenz beendet (bSequenceActive = FALSE, s. u.) wird dieser Ausgang zu „0“.

bLight

BOOL

Dieser Ausgang ist so lange gesetzt, wie nActualLevelMasterDev größer als „0“ ist.

bSequenceActive

BOOL

Bei Abarbeitung einer Sequenz wird dieser Ausgang auf TRUE gesetzt.

bBusy

BOOL

Dieser Ausgang ist immer dann aktiv, solange eine Befehlsabarbeitung (bOn, bOff, bToggle oder Rampenfahrt) aktiv ist.

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