FB_Sequencer
Funktionsblock Realisierung von Lichtsequenzen mit bis zu 50 Stützpunkten.
Kernstück dieses Funktionsblockes 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:
Sequenz 1 beispielsweise sieht im zeitlichen Verlauf folgendermaßen aus (nStartIndex=1, nOptions.bit0=TRUE, Erläuterung siehe unten):
Darüber hinaus läßt sich der Baustein "normal" ein- und ausschalten (Ein: nLightLevel = 32767, Aus: nLightLevel = 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.
VAR_INPUT
bEnable : BOOL;
bOn : BOOL;
bOff : BOOL;
bToggle : BOOL;
bStart : BOOL;
nStartIndex : USINT;
arrSequenceTable : ARRAY[1..50] OF ST_SequenceTable;
nOptions : DWORD;
bEnable: 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: Eine steigende Flanke schaltet nLightLevel direkt auf den den Maximalwert (32767).
bOff: Eine steigende Flanke schaltet nLightLevel unmittelbar auf "0".
bToggle: Schaltet den Lichtzustand zwischen An (32767) und Aus (0) jeweils hin und her.
bStart: Eine positive Flanke startet eine Lichtsequenz ab dem unter nStartIndex definierten Anfang.
nStartIndex: Siehe bStart.
arrSequenceTable: Lichtwert-Tabelle mit den dazugehörigen Rampen- und Verweilzeiten.
TYPE ST_SequenceTable : STRUCT nTargetValue : UINT; tRampTime : TIME; tProlongTime : TIME; END_STRUCT END_TYPE nTargetValue: Zielwert. tRampTime: Zeit zum Erreichen des Zielwertes. tProlongTime: Verweilzeit auf dem Zielwert. |
nOptions: Parametriereingang. Die Setzen (bzw. Nicht-Setzen) der einzelnen Bits dieser Variablen vom Typ DWORD hat folgende Wirkung:
Konstante | Beschreibung |
---|---|
OPTION_INFINITE_LOOP | Nach Ablauf einer Sequenz läuft der Baustein automatisch an der an nStartIndex definierten Stelle weiter. Ist diese Option nicht gesetzt, so stoppt die Sequenz nach dem Ablauf. Eine erneute positive Flanke an bStart wäre für einen Sequenz-Neustart nötig. |
VAR_OUTPUT
nActualIndex : USINT;
bLight : BOOL;
bSequenceActive : BOOL;
bBusy : BOOL;
bError : BOOL;
nErrorId : UDINT;
nActualIndex: Verweis auf dem aktuellen Element in der Sequenz-Tabelle. Ist eine Sequenz beendet (bSequenceActive = FALSE , s.u.) wird dieser Ausgang zu "0".
bLight: Dieser Ausgang ist so lange gesetzt, wie nLightLevel größer als "0" ist.
bSequenceActive: Bei Abarbeitung einer Sequenz wird dieser Ausgang auf TRUE gesetzt.
bBusy: Dieser Ausgang ist immer dann aktiv, solange eine Befehlsabarbeitung (bOn, bOff, bToggle oder Rampenfahrt) 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.