MQTT_Publish-Baustein

Kurz-Information

NameMQTT_Publish
→POE-Typ→Funktion
KategorieWeitere Systembausteine, MQTT
Grafische Schnittstelle

Verfügbar ab
  • Version 1.28.0 (für logi.CAD 3) und Version 2.3.1301 von logi.RTS – Anfangsvariante
  • Version 1.108.0 (für logi.CAD 3) und Version 3.18.0 von logi.RTS – Eweiterung: Datentyp STRING für bestehenden Eingang topic (statt STRING[255]); Datentyp MQTT_RC für Ausgang rc (statt DINT)

(warning) Dieser Baustein wird für →Raspberry Pi unterstützt. 

Funktionalität

Der Baustein publiziert eine Nachricht zu einem bestimmten Thema über die Verbindung, die durch den Verbindungshandler spezifiziert ist. Die Nachrichten werden asynchron versendet.

(info)  Die Übertragung der Daten erfolgt mit Hilfe eines bereits vorhandenen MQTT-Brokers (siehe "Datenübertragung via MQTT vorbereiten/durchführen").

Eingänge, Ausgänge


Bezeichner→DatentypBeschreibung
Eingänge: chDINTVerbindungshandler, wie vom MQTT_Connect-Baustein erhalten
topicSTRINGThema für die Nachricht
payloadREF_TO BYTENutzdaten der Nachricht
lenDINTLänge der zu publizierenden Nutzdaten
Ausgänge:rcMQTT_RC

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

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 Program1
    VAR
        ioImageLocal : ARRAY[0..1023] OF BYTE;
        ioImageLocalLen : DINT := 2;
        ch : DINT := -1;
        cnt : DINT := 0;
        rc : MQTT_RC;
        state : MQTT_SUBSCRIBER_STATE := MQTT_SUBSCRIBER_STATE#INVALID;
    END_VAR
    
    state := MQTT_GetState(ch := ch, rc => rc, ENO => ENO);
    
    /* make sure MQTT connection is established and messages are received */
    IF state <> MQTT_SUBSCRIBER_STATE#CONNECTING AND state <> MQTT_SUBSCRIBER_STATE#CONNECTED THEN
        ch := MQTT_Connect(address := '192.168.1.107', clientId := 'RTS1', rc => rc, ENO => ENO);
    END_IF;
    IF ENO AND state = MQTT_SUBSCRIBER_STATE#CONNECTED THEN        
        /* prepare data to be transferred over MQTT */
        ioImageLocal[0] := 16#CA;
        ioImageLocal[1] := 16#FE;
        /* send updated io image to remote */
        MQTT_Publish(ch := ch, topic := 'sample_topic',
                        payload := REF(ioImageLocal[0]),
                        len := ioImageLocalLen,
                        rc => rc);
    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.