MQTT_Receive-Baustein

Kurz-Information

Name

MQTT_Receive

→POE-Typ

→Funktion

Kategorie

Weitere Systembausteine, MQTT

Grafische Schnittstelle

images/download/thumbnails/414780471/MQTT_Receive-version-1-modificationdate-1534501379831-api-v2.png

Verfügbar ab

  • Version 1.28.0 (für logi.CAD 3) und Version 2.3.1301 des →Laufzeitsystems – Anfangsvariante

  • Version 1.108.0 (für logi.CAD 3) und Version 3.18.0 des →Laufzeitsystems – Eweiterung: Ergebniswert mit Datentyp STRING (statt des vorigen Eingang topic); Datentyp MQTT_RC für Ausgang rc (statt DINT)

images/s/b2ic8e/9012/1ca6q62/_/images/icons/emoticons/warning.svg Dieser Baustein wird für →Raspberry Pi unterstützt.


Funktionalität

Der Baustein holt eine Nachricht vom Empfangspuffer (einem Ringpuffer), der dem spezifizierten Verbindungshandler zugeordnet ist.

images/s/b2ic8e/9012/1ca6q62/_/images/icons/emoticons/information.svg Die Übertragung der Daten erfolgt mit Hilfe eines bereits vorhandenen MQTT-Brokers

(siehe "Datenübertragung via MQTT vorbereiten/durchführen")
.

Eingänge, Ausgänge, Ergebniswert


Bezeichner

→Datentyp

Beschreibung

Eingänge:

ch

DINT

Verbindungshandler, wie vom MQTT_Connect-Baustein erhalten

payload

REF_TO BYTE

Puffer, in dem die erhaltenen Nutzdaten gespeichert werden können

payload_len

DINT

Größe der Nutzdaten-Puffers in Bytes

Ausgänge:

len

DINT

Länge der erhaltenen Nutzdaten in Bytes

rc

MQTT_RC

Ergebniscode der beteiligten MQTT-Funktionen, wie im Datentyp MQTT_RC definiert

Ergebniswert:

STRING

liefert das Thema der erhaltenen Nachricht

Der Eingang EN und der Ausgang ENO sind für den →Aufruf des Bausteins verfügbar. Siehe "Ausführungssteuerung: EN, ENO" für Informationen zum Eingang EN und zum Ausgang ENO.

Beispiel für Verwendung im ST-Editor

Programm mit ausgewählten Aufrufen von MQTT-Bausteinen
PROGRAM Program2
VAR
ioImageRemote : ARRAY[0..1023] OF BYTE;
ioImageRemoteSize : DINT := 1024;
ioImageRemoteLen : DINT := -1;
topic : STRING[255];
ch : DINT := -1;
cnt : DINT := 0;
rc : MQTT_RC;
state : MQTT_SUBSCRIBER_STATE := MQTT_SUBSCRIBER_STATE#INVALID;
subscribed : BOOL := FALSE;
message_received : BOOL := FALSE;
END_VAR
state := MQTT_GetState(ch := ch, rc => rc, ENO => ENO);
IF state <> MQTT_SUBSCRIBER_STATE#CONNECTING AND state <> MQTT_SUBSCRIBER_STATE#CONNECTED THEN
ch := MQTT_Connect(address := '192.168.1.107', clientId := 'RTS2', rc => rc, ENO => ENO);
END_IF;
IF state = MQTT_SUBSCRIBER_STATE#CONNECTED THEN
/* connect to topic in case connection has been established */
IF NOT(subscribed) THEN
MQTT_Subscribe(ch := ch, topic := 'sample', rc => rc);
subscribed := rc = MQTT_RC#OK;
END_IF;
IF subscribed THEN
/* if subscribed, obtain only the latest message */
message_received := FALSE;
REPEAT
topic := MQTT_Receive(ch := ch,
payload := REF(ioImageRemote[0]),
payload_len := ioImageRemoteSize,
len => ioImageRemoteLen,
rc => rc);
IF rc <> MQTT_RC#OK THEN
EXIT;
END_IF;
message_received := TRUE;
UNTIL FALSE
END_REPEAT;
END_IF;
ELSE
/* if connection has been lost, subscription has been canceled as well*/
subscribed := FALSE;
END_IF;
END_PROGRAM

Bei der Erstellung Ihrer Anwendung im ST-Editor erstellen Sie den Aufruf eines Bausteins, indem Sie den laut Syntax erforderlichen Text eintippen oder die Inhaltshilfe verwenden.