Der Funktionsbaustein FB_MqttClient ermöglicht den Aufbau einer Verbindung zum angegebenen MQTT-Server. Die Verbindung wird bei steigender Flanke am Eingang i_xEnable hergestellt. Der Ausgang q_xActive gibt an, dass der Funktionsbaustein aktiv ist und zyklisch aufgerufen werden muss. Der jeweilige Status der Verbindung wird vom Ausgang ausgewiesen q_xReady. Wenn dieser Ausgang den Wert TRUE aufweist, dann ist der Client verbunden.
Wenn der Eingang i_xEnable auf FALSE gesetzt wird, während eine Verbindung aufgebaut wird, wird der Vorgang abgebrochen.
Wenn der Eingang i_xEnable auf FALSE gesetzt und eine Verbindung besteht, wird die Verbindung mit dem Flag CleanSession beendet. Das bedeutet, dass die aktiven Abonnements, die dieser Clientkennung zugeordnet sind, auf dem MQTT-Server gelöscht werden.
Nach der erfolgreichen Herstellung einer Verbindung verwaltet der Funktionsbaustein die vom Server im Hintergrund empfangenen Nachrichten. Aus diesem Grund muss der Funktionsbaustein auch nach dem Aufbau der Verbindung zyklisch aufgerufen werden.
Der Funktionsbaustein FB_MqttClient unterstützt den Aufbau einer Verbindung zum MQTT-Server über einen Proxyserver.
Wenn ein Proxyserver eine direkte Verbindung zwischen dem Client und dem MQTT-Server verhindert, aber den Aufbau eines Tunnels zum dezentralen Server unterstützt, können Sie die Verbindung zum dezentralen Server mithilfe der Schnittstelle IF_ProxyHandler und der entsprechenden Implementierung bereitstellen.
Der Funktionsbaustein FB_MqttClient stellt die Eigenschaft ProxyHandler bereit, die Ihnen die Zuweisung einer Schnittstelle des Typs IF_ProxyHandler ermöglicht. Sobald der Eigenschaft eine gültige Schnittstelle zugewiesen wurde, werden die Schnittstellenmethoden vom Funktionsbaustein aufgerufen, während eine Verbindung zum hergestellt wird MQTT-Server.
Die Aufrufsequenz lautet wie folgt:
Wenn der Funktionsbaustein aktiviert ist, wird die Schnittstellenmethode ConnectToProxy aufgerufen.
Wenn für die Verbindung zum MQTT-Server die TLS-Verschlüsselung ausgewählt ist, wird der Sockettyp StartTls auf TRUE gesetzt. Die Methode wird zyklisch aufgerufen, bis einer der Ausgänge q_xDone (Verbindung hergestellt) oder q_xError (Verbindung nicht erfolgreich) TRUE angibt.
Nachdem die Verbindung zum Proxyserver hergestellt wurde, wird die Schnittstellenmethode ConnectToRemoteServer aufgerufen.
Wenn für die Verbindung zum MQTT-Server die TLS-Verschlüsselung ausgewählt ist, wird die Option UpgradeToTls auf TRUE gesetzt. Die Methode wird zyklisch aufgerufen, bis einer der Ausgänge q_xDone (Verbindung hergestellt) oder q_xError (Verbindung nicht erfolgreich) TRUE angibt.
Nachdem die Methode ConnectToRemoteServer erfolgreich abgeschlossen wurde, wird im nächsten Schritt die MQTT-Verbindung auf der MQTT-Protokollebene hergestellt. Die Schnittstelle IF_ProxyHandler ist bis zur nächsten Aktivierung des Funktionsbausteins nicht erforderlich.
Wenn beim Herstellen einer Verbindung über die Schnittstelle IF_ProxyHandler ein Fehler erkannt wird, wird die Schnittstellenmethode Abort einmal aufgerufen.
Um die Verwendung der Schnittstelle IF_ProxyHandler zu deaktivieren, übergeben Sie eine nicht zugewiesene Schnittstelle oder einen Null-Zeiger an die Eigenschaft ProxyHandler. Beispiel: fbMqttClient.ProxyHandler := 0;
Weitere Informationen zur Implementierung der Schnittstellenmethoden oder zu bereits bereitgestellten Implementierungen finden Sie im ProxyCommunicationSupport-Bibliothekshandbuch.
Die MQTT-Server-Adresse wird über die IPv4-Adresse angegeben. Wenn die Verbindung über einen Proxyserver hergestellt wird (siehe Proxykonfiguration), wird auch die Angabe der Adresse durch den Hostnamen des Servers unterstützt. In diesem Fall kann nur ein Parameter verwendet werden, entweder die IP-Adresse oder der Hostname.
Eingang |
Datentyp |
Beschreibung |
---|---|---|
i_xEnable |
BOOL |
Bei steigender Flanke an diesem Eingang stellt der Funktionsbaustein eine Verbindung zum MQTT-Server her. Wenn der Eingang auf FALSE gesetzt wird, wird der Funktionsbaustein zurückgesetzt und eine vorhandene Verbindung wird getrennt bzw. ein laufender Verbindungsaufbau wird abgebrochen. Siehe Verhalten der Funktionsbausteine mit Eingang i_xEnable. |
i_stConnectionSettings |
ST_ConnectionSettings |
Struktur für die Übertragung der Verbindungsparameter. |
i_timTimeout |
TIME |
Zeitraum, in dem ein erfolgreicher Verbindungsaufbau erwartet wird. Wenn der Wert T#0 s ist, dann wird der Standardwert T#10 s angewendet. |
Ausgang |
Datentyp |
Beschreibung |
---|---|---|
q_xActive |
BOOL |
Gibt an, dass die Ausführung des Funktionsbausteins aktiv ist. Solange dieser Ausgang den Wert TRUE aufweist, muss der Funktionsbaustein zyklisch ausgeführt werden. |
q_xReady |
BOOL |
Gibt an, dass eine Verbindung hergestellt wurde. Der MQTT-Client ist bereit zum Austausch von Anwendungsnachrichten mit dem MQTT-Server. |
q_xError |
BOOL |
Wenn dieser Ausgang auf TRUE gesetzt wird, wurde ein Fehler identifiziert. Für weitere Informationen, siehe q_etResult und q_etResultMsg, |
q_xTlsUsed |
BOOL |
Gibt an, dass die Verbindung mit dem MQTT-Server über TLS (Transport Layer Security) gesichert ist. |
q_etResult |
ET_Result |
Stellt Diagnose- und Statusinformationen in Form numerischer Werte bereit. |
q_sResultMsg |
STRING [80] |
Stellt zusätzliche Diagnose- und Statusinformationen in Form von Textmeldungen bereit. |
In der Tabelle wird die Eigenschaft ProxyHandler beschrieben, die vom Funktionsbaustein FB_MqttClient bereitgestellt wird.
Name |
Datentyp |
Zugriff |
Beschreibung |
---|---|---|---|
ProxyHandler |
PXCS.IF_ProxyHandler |
Get/Set |
Funktionsbaustein, der die Schnittstelle IF_ProxyHandler implementiert. Wenn eine gültige Schnittstelle zugewiesen ist, wird die Verbindung zum MQTT-Server mithilfe der Schnittstellenmethoden hergestellt . |