FB_IotMqtt5Message

Wenn der TwintCAT MQTT v5 Client (FB_IotMqtt5Client) in Kombination mit einer Message Queue (FB_IotMqtt5MessageQueue) verwendet wird, wird eine MQTT-Nachricht vom Baustein FB_IotMqtt5Message repräsentiert. Ankommende Nachrichten werden von der Message Queue gesammelt und dem Anwender in Form einer solchen Bausteininstanz zur Verfügung gestellt.

Die Topic- und die Payload-Größe sowie der Parameter „Quality of Service“ der MQTT-Nachricht sind sofort am Bausteinausgang als Properties verfügbar. Das Topic selbst sowie auch das Payload kann mittels der bereitgestellten Methoden CompareTopic(), GetTopic() und GetPayload() einfach ausgewertet oder kopiert werden.

FB_IotMqtt5Message 1:

Message-Payload-Formatierung

Beachten Sie, dass der Datentyp und die Formatierung des Inhalts der Sender- und Empfängerseite bekannt sein müssen, insbesondere beim Versand von Binärinformationen (Alignment) oder Strings (mit/ohne Nullterminierung).

FB_IotMqtt5Message 2:

Größe einer MQTT-Nachricht

Die maximale Größe einer in der SPS zu empfangenden MQTT-Nachricht ist von der Hardware-Plattform abhängig und sollte selbst auf leistungsstärkeren/größeren Plattformen einige wenige MB nicht überschreiten.

Die maximal mögliche Größe einer Nachricht lässt sich über den Parameter cMaxSizeOfMqttMessage in der Parameterliste der Bibliothek Tc3_IotBase einstellen. Standardmäßig ist die Größe einer Nachricht auf 100 KB begrenzt.

Bei Verwendung der MQTT Message Queue allokiert diese für neue Nachrichten dynamisch neuen Speicher aus dem TwinCAT Router Speicher.

FB_IotMqtt5Message 3: Eigenschaften

Name

Typ

Zugriff

Beschreibung

bPayloadUtf8

BOOL

Get

Falls TRUE, so handelt es sich beim Payload um einen in UTF-8 formatierten Text.

bTopicAlias

BOOL

Get

Gibt an, ob es sich bei dem Empfangs-Topic um einen Alias handelt.

eQoS

TcIotMqttQos

Get

„Quality of Service“ der MQTT-Nachricht

nCorrelationDataSize

UINT

Get

Größe der Correlation Data in Bytes

nMsgExpiryInterval

UDINT

Get

Gibt das Ablaufinterval der Nachricht in Sekunden an.

nPayloadSize

UDINT

Get

Größe vom Payload in Bytes

nSubIdCnt

UINT

Get

Gibt an wie viele Subscription Identifier empfangen wurden.

nUserPropertyCnt

UINT

Get

Anzahl von vorhandenen User Properties. Diese können mittels GetUserPropertyByIdx() ausgelesen werden.

nUserPropertyCntLost

UINT

Get

Anzahl von beim Empfang verworfenen User Properties.

Ursache kann ein Überschreiten der festgelegten Maximalanzahl (siehe Bibliotheksparameter ParameterList.cMaxMqtt5UserProps) oder eine zu große empfangene MQTT-Nachricht (siehe Bibliotheksparameter ParameterList.cMaxSizeOfMqttMessage) sein.

nTopicSize

UINT

Get

Größe vom Topic in Bytes

sContentType

STRING

Get

Content Type der MQTT-Nachricht

Sollte der Originaltext zu groß sein für dieses Property, so kann die Methode GetContentType() verwendet werden, um dennoch den vollständigen Text abzufragen.

FB_IotMqtt5Message 4: Methoden

Name

Beschreibung

CompareTopic()

Überprüft ein angegebenes Topic mit dem Topic in der MQTT-Nachricht.

GetContentType()

Liefert den Content Type der MQTT-Nachricht.

GetCorrelationData()

Liefert die Correlation Data der MQTT-Nachricht.

GetResponseTopic()

Liefert das Response Topic.

GetPayload()

Liefert den Inhalt einer MQTT-Nachricht.

GetSubIds()

Liefert die zur MQTT-Nachricht empfangenen Subscription Identifier.

GetTopic()

Liefert das Topic einer MQTT-Nachricht.

GetUserPropertyByIdx()

Gibt den Namen und Wert eines UserProperty zurück, welches durch dessen Position (Index) in der Liste angegeben wird.

GetUserPropertyValueByName()

Gibt den Wert eines UserProperty zurück, welches durch dessen Namen angegeben wird.

FB_IotMqtt5Message 5:

Strings im UTF-8-Format

Die hier verwendeten Variablen vom Typ STRING nutzen das UTF-8-Format. Diese STRING-Formatierung ist üblich bei IoT/MQTT-Kommunikation sowie JSON-Dokumenten.

Um Sonderzeichen und Texte verschiedenster Sprachen empfangen zu können, wird der Zeichensatz in den Bibliotheken Tc3_IotBase und Tc3_JsonXml nicht auf den typischen Zeichensatz vom Datentyp STRING beschränkt. Stattdessen wird der Unicode-Zeichensatz als UTF-8-Format in Verbindung mit dem Datentyp STRING verwendet.

Bei Verwendung des ASCII-Zeichensatzes besteht kein Unterschied zwischen der typischen Formatierung in einem STRING und der UTF-8-Formatierung eines STRING.

Weitere Informationen zum UTF-8-STRING-Format sowie vorhandenen Anzeige- und Konvertierungsmöglichkeiten finden Sie in der Dokumentation der SPS-Bibliothek Tc2_Utilities.

Voraussetzungen

Entwicklungsumgebung

Zielplattform

Einzubindende SPS-Bibliotheken

TwinCAT v3.1.4026.0

IPC oder CX (x86, x64, ARM)

Tc3_IotBase (>= v3.4.2.0)