FB_IotMqtt5MessageQueue
Dieser Funktionsbaustein bietet eine Message Queue für MQTT-Nachrichten, welche mit dem Baustein FB_IotMqtt5Client empfangen werden. Hierzu wird eine Instanz bereits am Ausgang von FB_IotMqtt5Client
bereitgestellt. Der Funktionsbaustein arbeitet nach dem First-in-First-out-Prinzip (FiFo). Es ist möglich, dass mehrere MQTT-Nachrichten innerhalb eines SPS Zyklus empfangen und an der Message Queue bereit gestellt werden.
Im Programmablauf kann mit dem Property nQueuedMessages
geprüft werden, ob und wie viele Nachrichten in der Message Queue eingesammelt wurden. Diese Nachrichten werden mit der Methode Dequeue()
aus dem FiFo entnommen. Hierbei wird demnach die älteste Nachricht zuerst ausgegeben.
![]() | Größe der MQTT Message Queue Die Menge der maximal möglichen Nachrichten in der Queue lässt sich über den Paramater Die MQTT Message Queue allokiert für neue Nachrichten entsprechend der Topic- und Payload-Größe neuen Speicher. Standardmäßig ist die maximale Größe einer Nachricht auf 100 KB und die Größe einer MQTT Message Queue auf 1000 KB begrenzt. Dies kann für Sonderfälle ebenso in der Parameterliste angepasst werden. |
Eigenschaften
Name | Typ | Zugriff | Beschreibung |
---|---|---|---|
bOverwriteOldestEntry | BOOL | Get, Set | Hier kann parametriert werden, ob, wenn die Warteschlange voll ist, eine neu empfangene Nachricht die älteste Nachricht überschreiben soll. Wenn ja (TRUE), geht die älteste Nachricht verloren. Wenn nein (FALSE), wird mit dem Empfang der neuen Nachricht gewartet, bis die Warteschlange Platz bietet. Eine volle Warteschlange ist ein unwahrscheinlicher Fall, wenn der Anwender für ein zügiges Auslesen der Queue mittels |
nLostMessages | UDINT | Get | Gibt die Anzahl der MQTT-Nachrichten aus, welche vollständig verworfen werden mussten. Verworfene MQTT-Nachrichten können als Ursache eine volle Queue haben oder auch eine zu große Gesamtgröße einer neu empfangenen Nachricht. |
nMaxSizeOfMessage | UDINT | Get | Maximale Größe in Bytes aller empfangenen MQTT-Nachrichten, welche vom FB_IotMqtt5Client empfangen und in die FB_IotMqtt5MessageQueue abgelegt werden sollten. Wird die mit dem Bibliotheksparameter |
nQueuedMessages | UDINT | Get | Gibt die Anzahl der aktuell in der Queue gesammelten MQTT-Nachrichten aus. Die maximal mögliche Anzahl ist mit dem Bibliotheksparameter |
Methoden
Name | Beschreibung |
---|---|
Entnimmt der Warteschlange eine MQTT-Nachricht. | |
Löscht alle Nachrichten aus der Warteschlange. |
Voraussetzungen
Entwicklungsumgebung | Zielplattform | Einzubindende SPS-Bibliotheken |
---|---|---|
TwinCAT v3.1.4026.0 | IPC oder CX (x86, x64, ARM) | Tc3_IotBase (>= v3.4.2.0) |