MQTT_Receive-Baustein

Kurz-Information

NameMQTT_Receive
→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: Ergebniswert mit Datentyp STRING (statt des vorigen Eingang topic); Datentyp MQTT_RC für Ausgang rc (statt DINT)

(warning) 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.

(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, Ergebniswert


Bezeichner→DatentypBeschreibung
Eingänge: chDINTVerbindungshandler, wie vom MQTT_Connect-Baustein erhalten
payloadREF_TO BYTEPuffer, in dem die erhaltenen Nutzdaten gespeichert werden können
payload_lenDINTGröße der Nutzdaten-Puffers in Bytes 
Ausgänge:lenDINTLänge der erhaltenen Nutzdaten in Bytes
rcMQTT_RC

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

Ergebniswert:STRINGliefert 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.