FB_IotMqttMessageQueue

Dieser Funktionsbaustein bietet eine Message Queue für MQTT-Nachrichten, welche mit dem Baustein FB_IotMqttClient verwendet werden kann. Hierzu wird eine Instanz deklariert und dem Eingang von FB_IotMqttClient übergeben. 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.

FB_IotMqttMessageQueue 1:

Größe der MQTT Message Queue

Die Menge der maximal möglichen Nachrichten in der Queue lässt sich über den Paramater cMaxEntriesInMqttMessageQueue in der Parameterliste der Bibliothek Tc3_IotBase einstellen. Standardmäßig sind dies 1000 Nachrichten. Weil eine zeitnahe Verarbeitung der Nachrichten in den allermeisten Fällen verlangt wird, ist eine Anpassung meist nicht notwendig.

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.

FB_IotMqttMessageQueue 2: 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), geht die neueste Nachricht verloren.

Eine volle Warteschlange ist ein unwahrscheinlicher Fall, wenn der Anwender für ein zügiges Auslesen der Queue mittels Dequeue() Methode sorgt.

nQueuedMessages

UDINT

Get

Gibt die Anzahl der aktuell in der Queue gesammelten MQTT-Nachrichten aus.

FB_IotMqttMessageQueue 3: Methoden

Name

Beschreibung

Dequeue()

Entnimmt der Warteschlange eine MQTT-Nachricht.

ResetQueue()

Löscht alle Nachrichten aus der Warteschlange.

Voraussetzungen

Entwicklungsumgebung

Zielplattform

Einzubindende SPS-Bibliotheken

TwinCAT v3.1.4022.0

IPC oder CX (x86, x64, ARM)

Tc3_IotBase