FB_DALIVirtualCommunication

Die einzelnen DALI-Befehle werden vor der Weiterverarbeitung in einem Befehlspuffer innerhalb der Tc3_DALI-Bibliothek zwischengespeichert. Der Baustein FB_DALIVirtualCommunication liest sequenziell die DALI-Befehle aus diesem Befehlspuffer aus und gibt die DALI-Befehle an die zugehörigen Instanzen von FB_DALIVirtualControlGear weiter.
Pro DALI-Linie, die simuliert werden soll, muss eine Instanz vom Baustein FB_DALIVirtualCommunication 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_DALIVirtualCommunication aufgerufen wird zu verringern. Der Wert sollte nicht größer als 6 ms sein, optimal sind 2 ms oder kleiner.
- Überprüfen Sie die Zykluszeit der SPS-Task, in der die Bausteine für die einzelnen DALI-Befehle aufgerufen werden. Dieser Werte sollte nicht größer als 10 ms, optimal sind 8 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 simulierten 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.
Eingänge
VAR_INPUT
bResetMaximumDemandCounter : BOOL;
bResetOverflowCounter : BOOL;
nOptions : DWORD := 0;
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. |
ResetOverflowCounter | 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. |
Ausgänge
VAR_OUTPUT
bError : BOOL;
ipResultMessage : I_TcMessage;
bBusy : BOOL;
nBufferDemandMeter : BYTE;
nBufferMaximumDemandMeter : BYTE;
nBufferOverflowCounter : UINT;
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. |
Voraussetzungen
Entwicklungsumgebung | Erforderliche SPS-Bibliothek |
---|---|
TwinCAT ab v3.1.4024.29 | Tc3_DALI ab v3.11.0.0 |