FB_KL6821Communication

Die Funktionsbausteine für die DALI-Befehle greifen nicht direkt auf das Prozessabbild der DALI-Busklemme zu, sondern legen die einzelnen DALI-Befehle in drei verschiedene Puffer ab. Der Funktionsbaustein FB_KL6821Communication liest sequentiell die DALI-Befehle aus diesen drei Puffern aus und gibt die DALI-Befehle zur KL6821 weiter. Hierdurch wird sichergestellt, dass nicht mehrere Funktionsbausteine gleichzeitig auf das Prozessabbild der Busklemme zugreifen. Jeder dieser drei Puffer wird mit einer anderen Priorität (hoch, mittel oder niedrig) abgearbeitet. Der Anwender der SPS-Bibliothek kann durch den Parameter eCommandPriority, den es bei den meisten Funktionsbausteinen gibt, beeinflussen mit welcher Priorität der jeweilige DALI-Befehl von dem Funktionsbaustein FB_KL6821Communication bearbeitet werden soll.
Die Puffer, in denen die DALI-Befehle abgelegt werden, sind alle in einer Variablen vom Typ ST_DALIV2CommandBuffer enthalten. Pro KL6821 gibt es eine Instanz vom Funktionsbaustein FB_KL6821Communication und eine Variable vom Typ ST_DALIV2CommandBuffer. Der Funktionsbaustein FB_KL6821Communication sollte, wenn möglich, in einer separaten, schnelleren Task aufgerufen werden.
Über die Ausgänge des Funktionsbausteins kann ermittelt werden, wie stark die Puffer ausgelastet sind. Hierzu werden drei Arrays ausgegeben, bei dem jedes Element (0, 1 oder 2) für einen der drei Buffer (hoch, mittel oder niedrig) steht. Wenn Sie feststellen, dass einer der drei Puffer regelmäßig überläuft, sollten Sie folgende Maßnahmen in Betracht ziehen:
Wie stark sind die einzelnen SPS-Task ausgelastet? Der TwinCAT System Manager bietet zur Analyse entsprechende Hilfsmittel an.
- Versuchen Sie die Zykluszeit der Task, in der der Funktionsbaustein FB_KL6821Communication aufgerufen wird, zu verringern. Der Wert sollte nicht größer als 6 ms sein, optimal sind 2 ms.
- Überprüfen Sie die Zykluszeit der SPS-Task, in der die Funktionsbausteine für die einzelnen DALI-Befehle aufgerufen werden. Dieser Wert sollte zwischen 10 ms und 60 ms liegen.
- Vermeiden Sie möglichst das Pollen (regelmäßiges Auslesen) von Werten. Lesen Sie nur dann Werte aus, wenn diese auch benötigt werden.
- Verteilen Sie die einzelnen Vorschaltgeräte gleichmäßig auf mehrere DALI-Linien. Da pro SPS-Zyklus mehrere DALI-Linien gleichzeitig bearbeitet werden, erhöht sich hierdurch der Datendurchsatz insgesamt.
Eingänge
VAR_INPUT
bResetMaximumDemandCounter : BOOL;
bResetOverflowCounter : BOOL;
bResetInactiveProcessImage : BOOL;
nOptions : DWORD := 0;
END_VAR
Name | Typ | Beschreibung |
---|---|---|
bResetMaximumDemandCounter | BOOL | Eine positive Flanke setzt den gespeicherten Wert der maximalen Befehlspuffer-Auslastung, arrBufferMaximumDemandMeter (0 – 100 %, siehe VAR_OUTPUT), zurück. |
bResetOverflowCounter | BOOL | Eine positive Flanke setzt den gespeicherten Wert der Anzahl der Befehlspuffer-Überläufe, arrBufferOverflowCounter (siehe VAR_OUTPUT), zurück. |
bResetInactiveProcessImage | BOOL | Eine positive Flanke hebt die Sperrung des Prozessabbildes der Klemme wieder auf. Die Ausgänge bProcessImageInactive, bDigitalInput1Active und bDigitalInput2Active werden wieder auf FALSE gesetzt. Die Sperrung wird aktiviert, sobald einer der beiden digitalen Eingänge an der Klemme betätigt wurde. |
nOptions | DWORD | Reserviert für zukünftige Entwicklungen. |
Ein-/Ausgänge
VAR_IN_OUT
stInData : ST_KL6821InData;
stOutData : ST_KL6821OutData;
stCommandBuffer : ST_DALIV2CommandBuffer;
END_VAR
Name | Typ | Beschreibung |
---|---|---|
stInData | ST_KL6821InData | Struktur im Eingangsprozessabbild der KL6821. Sie dient zur Kommunikation von der KL6821 zur SPS. Bei Verwendung des FB_KL6821Config ist diese Struktur mit dem Parameter stInData verbunden. |
stOutData | ST_KL6821OutData | Struktur im Ausgangsprozessabbild der KL6821. Sie dient zur Kommunikation von der SPS zur KL6821. Bei Verwendung des FB_KL6821Config ist diese Struktur mit dem Parameter stOutData verbunden. |
stCommandBuffer | ST_DALIV2CommandBuffer | Verweis auf die interne Struktur zur Kommunikation mit den DALI-Funktionsbausteinen. |
Ausgänge
VAR_OUTPUT
bBusy : BOOL;
bError : BOOL;
nErrorId : UDINT;
arrBufferDemandMeter : ARRAY [0..2] OF BYTE;
arrBufferMaximumDemandMeter : ARRAY [0..2] OF BYTE;
arrBufferOverflowCounter : ARRAY [0..2] OF UINT;
bLineIsBusy : BOOL;
bLineIsInitialized : BOOL;
bDigitalInput1Active : BOOL;
bDigitalInput2Active : BOOL;
bProcessImageInactive : BOOL;
bCollisionError : BOOL;
bPowerSupplyError : BOOL;
bShortCircuit : BOOL;
END_VAR
Name | Typ | Beschreibung |
---|---|---|
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). |
arrBufferDemandMeter | ARRAY OF BYTE | Belegung des jeweiligen Puffers (0 – 100 %) |
arrBufferMaximumDemandMeter | ARRAY OF BYTE | Bisherige maximale Auslastung des jeweiligen Puffers (0 – 100 %) |
arrBufferOverflowCounter | ARRAY OF BYTE | Bisherige Anzahl der Pufferüberläufe |
bLineIsBusy | BOOL | Solange der Funktionsbaustein FB_KL6821Communication aktiv ist, ist dieser Ausgang gesetzt. |
bLineIsInitialized | BOOL | Wird der Funktionsbaustein das erste Mal aufgerufen (z. B. beim Starten der Steuerung), so wird eine Initialisierung durchgeführt. Während dieser Zeit können keine DALI-Befehle bearbeitet werden. |
bDigitalInput1Active | BOOL | Der digitale Eingang 1 an der Klemme wurde betätigt oder ist betätigt (siehe auch Klemmendokumentation). Der Ausgang bProcessImageInactive wird gesetzt und es können keine weiteren DALI-Befehle über die Steuerung bearbeitet werden. |
bDigitalInput2Active | BOOL | Der digitale Eingang 2 an der Klemme wurde betätigt oder ist betätigt (siehe auch Klemmendokumentation). Der Ausgang bProcessImageInactive wird gesetzt und es können keine weiteren DALI-Befehle über die Steuerung bearbeitet werden. |
bProcessImageInactive | BOOL | Einer der beiden digitalen Eingänge wurde an der Klemme betätigt. Es können keine weiteren DALI-Befehle über die Steuerung bearbeitet werden. Über den Eingang bResetInactiveProcessImage muss die Sperrung wieder freigeschaltet werden. |
bCollisionError | BOOL | Es wurde eine Datenkollision auf dem DALI-Bus erkannt, während ein Befehl versendet wurde. |
bPowerSupplyError | BOOL | Die KL6821 hat einen Fehler am internen DALI-Netzteil erkannt. |
bShortCircuit | BOOL | Kurzschluss auf dem DALI-Bus |
Voraussetzungen
Entwicklungsumgebung | Einzubindende SPS-Bibliothek |
---|---|
TwinCAT ab v3.1.4022.4 | Tc2_DALI ab v3.6.2.0 |