MQTT_Unsubscribe-Baustein

Kurz-Information

NameMQTT_Unsubscribe
→POE-Typ→Funktion
KategorieWeitere Systembausteine, MQTT,, Baustein mit interner Fehlerdiagnose
Grafische Schnittstelle

Verfügbar ab

Version 2.0.17 (für Bibliothek System) und Version 4.5.0 von logi.RTS

(warning) Dieser Baustein wird für die integrierte SPS und →Raspberry Pi unterstützt. 

Funktionalität

Der Baustein meldet eine bestehende Verbindung von einem bestimmten Thema ab. Diese Verbindung wird durch einen Verbindungshandler definiert.

(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 das abgemeldet wird
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.

Interne Fehlerdiagnose für Baustein

Der Baustein prüft folgende Fehlerfälle und setzt – bei Auftreten dieser Fehlerfälle – den Ausgang ENO des Bausteins auf den Wert FALSE (oder eine Entsprechung):

  • Während des Sendens einer Benachrichtigung an logi.RTS ist ein interner Fehler aufgetreten.
  • Die Funktionalität des Bausteins konnte nicht ausgeführt werden.

Beispiel für Verwendung im ST-Editor

PROGRAM MQTTSubscribeUnsubscribeExample
	VAR
		connection_handler : DINT := -1;
		return_code : MQTT_RC;
		subscriber_state : MQTT_SUBSCRIBER_STATE := MQTT_SUBSCRIBER_STATE#INVALID;
		subscribed_to_topic : BOOL := FALSE;
		subscribe_flag : BOOL := FALSE;
	END_VAR
	
	subscriber_state := MQTT_GetState(ch := connection_handler, rc => return_code, ENO => ENO);
	
	/* Establish a MQTT connection to a broker */
    IF subscriber_state <> MQTT_SUBSCRIBER_STATE#CONNECTING AND subscriber_state <> MQTT_SUBSCRIBER_STATE#CONNECTED THEN
        connection_handler := MQTT_Connect(address := 'tcp://192.168.1.100:1883', clientId := 'RTS1', rc => return_code, ENO => ENO);
    END_IF;
    
    /* Check if the client is connected to the broker */
    IF subscriber_state = MQTT_SUBSCRIBER_STATE#CONNECTED THEN
    	/* If the subscribe flag is set... */
    	IF subscribe_flag THEN
	    	/* ...make sure the client is subscribed to a specific topic... */
	    	IF NOT(subscribed_to_topic) THEN
	            MQTT_Subscribe(ch := connection_handler, topic := 'example-topic', rc => return_code, ENO => ENO);
	            subscribed_to_topic := return_code = MQTT_RC#OK;
	        ELSE
			    /* ...and publish or receive messages over MQTT inside this block */
	        END_IF;
	    /* If the subscribe flag is NOT set... */
	    ELSE
	    	/* ...and the client is subscribed to a specific topic... */
	    	IF subscribed_to_topic THEN
	    		/* ...unsubscribe the client from this topic */
	    		MQTT_Unsubscribe(ch := connection_handler, topic := 'example-topic', rc => return_code, ENO => ENO);
	    		subscribed_to_topic := NOT(return_code = MQTT_RC#OK);
	        END_IF;
	    END_IF;
    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.