FB_KL6821Communication

Die Bausteine für die DALI-Befehle greifen nicht direkt auf das Prozessabbild der KL6821 zu, sondern legen die einzelnen DALI-Befehle in einem Befehlspuffer ab. Der Baustein FB_KL6821Communication liest sequenziell die DALI-Befehle aus diesem Befehlspuffer aus und gibt die DALI-Befehle zu der KL6821 weiter. Hierdurch wird sichergestellt, dass nicht mehrere Bausteine gleichzeitig auf das Prozessabbild der KL6821 zugreifen.
Der Baustein liest ebenfalls die Ereignisse der DALI-Steuergeräte aus der KL6821 aus und legt diese in einer speziellen Tabelle ab. Mit den Bausteinen FB_DALIGetInputNotification und FB_DALIGetPowerCycleNotification werden aus dieser Tabelle die gewünschten Ereignisse ausgefiltert.
Pro KL6821 muss eine Instanz vom Baustein FB_KL6821Communication angelegt werden. Diese Instanz muss in einer separaten, schnelleren Task aufgerufen werden. Diese schnellere Kommunikationstask muss auch eine höhere Priorität haben als die Task in der die Bausteine für die einzelnen DALI-Befehle aufgerufen werden.
Über die Ausgänge des Bausteins kann die Auslastung des Befehlspuffers ermittelt werden. Sollten Sie feststellen, dass der Befehlspuffer regelmäßig überläuft, so sollten Sie folgende Maßnahmen in Betracht ziehen:
- Wie stark sind die einzelnen SPS-Tasks ausgelastet? TwinCAT bietet zur Analyse entsprechende Hilfsmittel an.
- Versuchen Sie die Zykluszeit der Task, in der der Baustein FB_KL6821Communication aufgerufen wird zu verringern. Der Wert sollte nicht größer als 6 ms sein, optimal sind 2 ms oder kleiner.
- 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 DALI-Geräte gleichmäßig auf mehrere DALI-Linien. Da pro SPS-Zyklus mehrere DALI-Linien gleichzeitig bearbeitet werden, erhöht sich hierdurch der Datendurchsatz.
Weitere Informationen finden Sie im Kapitel Bus-Timing.
Eingänge
VAR_INPUT
bResetMaximumDemandCounter : BOOL;
bResetOverflowCounter : BOOL;
nOptions : DWORD := 0;
bResetInactiveProcessImage : BOOL;
bInitialise : BOOL := FALSE;
eCommandKBusWatchdog : E_DALIConfigurationCommand := E_DALIConfigurationCommand.DoNothing;
eCommandDI1RisingEdge : E_DALIConfigurationCommand := E_DALIConfigurationCommand.Off;
eCommandDI1FallingEdge : E_DALIConfigurationCommand := E_DALIConfigurationCommand.DoNothing;
eCommandDI2RisingEdge : E_DALIConfigurationCommand := E_DALIConfigurationCommand.RecallMaxLevel;
eCommandDI2FallingEdge : E_DALIConfigurationCommand := E_DALIConfigurationCommand.DoNothing;
bDoNotLockProcessImage : BOOL := FALSE;
bDisableInternalPowerSupply: BOOL := FALSE;
END_VAR
Name | Typ | Beschreibung |
---|---|---|
bResetMaximumDemandCounter | BOOL | Eine positive Flanke setzt den gespeicherten Wert für die maximale Auslastung des Befehlspuffers, nBufferMaximumDemandMeter (0…100 %), zurück. |
bResetOverflowCounter | BOOL | Eine positive Flanke setzt den gespeicherten Wert für die Anzahl der Überläufe des Befehlspuffers, nBufferOverflowCounter, zurück. |
nOptions | DWORD | Reserviert für zukünftige Erweiterungen. |
bResetInactiveProcessImage | BOOL | Eine positive Flanke hebt die Sperrung des Prozessabbildes der Klemme wieder auf. Der Ausgang bProcessImageInactive wird wieder auf FALSE gesetzt. Die Sperrung wird aktiviert, sobald einer der beiden digitalen Eingänge an der Klemme betätigt wurde und der Eingangsparameter bDoNotLockProcessImage FALSE ist. |
bInitialise | BOOL | Durch eine positive Flanke an diesem Eingang wird das Konfigurieren der Busklemme gestartet. Das Initialisieren wird auch beim Starten der Steuerung automatisch ausgeführt. Während dieser Zeit werden keine DALI-Befehle bearbeitet. |
eCommandKBusWatchdog | E_DALIConfigurationCommand | Definiert den DALI-Befehl, der versendet wird, sobald die Busklemme über den K-Bus nicht mehr angesprochen wird. Der Wert wird durch eine positive Flanke am Eingang bInitialise in die Klemme geschrieben und dort persistent abgespeichert. |
eCommandDI1RisingEdge, eCommandDI2RisingEdge | E_DALIConfigurationCommand | Definiert den DALI-Befehl, der versendet wird, sobald am jeweiligen Eingang der Busklemme eine steigende Flanke erkannt wird. Der Wert wird durch eine positive Flanke am Eingang bInitialise in die Klemme geschrieben und dort persistent abgespeichert. |
eCommandDI1FallingEdge, eCommandDI2FallingEdge | E_DALIConfigurationCommand | Definiert den DALI-Befehl, der versendet wird, sobald am jeweiligen Eingang der Busklemme eine fallende Flanke erkannt wird. Der Wert wird durch eine positive Flanke am Eingang bInitialise in die Klemme geschrieben und dort persistent abgespeichert. |
bDoNotLockProcessImage | BOOL | Definiert, ob durch das Betätigen der digitalen Eingänge das Prozessabbild für die SPS nicht gesperrt wird (siehe auch bInactiveProcessImage). Der Wert wird durch eine positive Flanke am Eingang bInitialise in die Klemme geschrieben und dort persistent abgespeichert. |
bDisableInternalPowerSupply | BOOL | Definiert die Betriebsart des internen DALI-Netzteils. Der Wert wird durch eine positive Flanke am Eingang bInitialise in die Klemme geschrieben und dort persistent abgespeichert. |
Ein-/Ausgänge
VAR_IN_OUT
stInData : ST_KL6821InData;
stOutData : ST_KL6821OutData;
END_VAR
Name | Typ | Beschreibung |
---|---|---|
stInData | Struktur im Eingangsprozessabbild der KL6821. Sie dient zur Kommunikation von der KL6821 zur SPS. | |
stOutData | Struktur im Ausgangsprozessabbild der KL6821. Sie dient zur Kommunikation von der SPS zur KL6821. |
Ausgänge
VAR_OUTPUT
bError : BOOL;
ipResultMessage : I_TcMessage;
bBusy : BOOL;
nBufferDemandMeter : BYTE;
nBufferMaximumDemandMeter : BYTE;
nBufferOverflowCounter : UINT;
bDigitalInputnActive : BOOL;
bProcessImageInactive : BOOL;
bCollisionError : BOOL;
bPowerSupplyError : BOOL;
bShortCircuit : BOOL;
bInitialising : BOOL;
nTerminalDescription : WORD;
nFirmwareVersion : WORD;
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. |
nBufferDemandMeter | BYTE | Auslastung des Befehlspuffers (0…100 %). |
nBufferMaximumDemandMeter | BYTE | Bisher maximal erreichte Auslastung des Befehlspuffers (0…100 %). Über den Eingang bResetMaximumDemandCounter kann der Zähler wieder zurückgesetzt werden. |
nBufferOverflowCounter | UINT | Bisherige Anzahl der Überläufe des Befehlspuffers. Über den Eingang bResetOverflowCounter kann der Zähler wieder zurückgesetzt werden. |
bDigitalInput1Active, bDigitalInput2Active | BOOL | Einer der digitalen Eingänge an der Klemme wurde betätigt oder ist betätigt (siehe auch Klemmendokumentation). Wenn der Eingang bDoNotLockProcessImage nicht gesetzt ist, so wird der Ausgang bProcessImageInactive gesetzt und es können keine weiteren DALI-Befehle über die Busklemme versendet werden. |
bProcessImageInactive | BOOL | Einer der beiden digitalen Eingänge wurde an der Busklemme betätigt und bDoNotLockProcessImage ist mit FALSE initialisiert. Es können keine weiteren DALI-Befehle aus der SPS über die Busklemme versendet werden. Über den Eingang bResetInactiveProcessImage kann die Sperrung wieder freigeschaltet werden. |
bCollisionError | BOOL | Es wurde eine Datenkollision auf dem DALI-Bus erkannt, während ein DALI-Befehl versendet wurde. |
bPowerSupplyError | BOOL | Bei Nutzung des internen DALI-Netzteils: Fehler Netzteil erkannt. |
bShortCircuit | BOOL | Es fehlt die 24 V DC Versorgungsspannung an den Anschlüssen 1 und 5 der KL6821, oder es wurde ein Kurzschluss auf dem DALI-Bus erkannt. |
bInitialising | BOOL | Während der Initialisierung der Busklemme wird der Ausgang gesetzt und bleibt so lange aktiv, bis die Initialisierung abgeschlossen wurde. Das Initialisieren wird auch beim Starten der Steuerung automatisch ausgeführt. Während dieser Zeit werden keine DALI-Befehle bearbeitet. |
nTerminalDescription | WORD | Enthält die Klemmenbezeichnung (z. B. 6821). Diese Information ist in Register 8 der Busklemme enthalten. |
nFirmwareVersion | WORD | Enthält die Version der Firmware. Diese Information ist in Register 9 der Busklemme enthalten. |
Eigenschaften
Name | Typ | Zugriff | Initialwert | Beschreibung |
---|---|---|---|---|
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.12 | Tc3_DALI ab v3.5.0.0 |