FB_MqttClient

Panoramica

Tipo:

Blocco funzione

Disponibile a partire da:

V1.0.0.0

Descrizione funzionale

Il blocco funzione FB_MqttClient permette di stabilire una connessione con il Server MQTT specificato. La connessione viene avviata su un fronte di salita dell'ingresso i_xEnable. L'uscita q_xActive indica che il blocco funzione è in corso di esecuzione e deve essere richiamato ciclicamente. Lo stato della connessione è indicato dall'uscita q_xReady. Se quest'uscita è TRUE, il client è connesso.

Se l'ingresso i_xEnable viene impostato a FALSE durante il tentativo di stabilire una connessione, il processo viene interrotto.

Se l'ingresso i_xEnable è impostato a FALSE ed esiste una connessione, la connessione viene chiusa come sessione con il flag CleanSession impostato a True. Questo significa che le sottoscrizioni attive appartenenti a questo ID client vengono azzerate sul Server MQTT.

Una volta stabilita la connessione, il blocco funzione gestisce i messaggi ricevuti dal server in background. Pertanto, anche il blocco funzione deve essere richiamato ciclicamente dopo che è stata stabilita la connessione.

Configurazione proxy

Il blocco funzione FB_MqttClient supporta la creazione di una connessione al Server MQTT tramite un server proxy.

Se un server proxy impedisce una connessione diretta tra il client e il Server MQTT ma supporta la creazione di un tunnel al server remoto, è possibile implementare la connessione al server remoto con l'ausilio dell'interfaccia IF_ProxyHandler e dell'implementazione corrispondente.

Il blocco funzione FB_MqttClient fornisce la proprietà ProxyHandler che consente di assegnare un'interfaccia di tipo IF_ProxyHandler. Dopo aver assegnato una valida interfaccia alla proprietà, i metodi di interfaccia vengono richiamati dal blocco funzione mentre si stabilisce una connessione con Server MQTT.

La sequenza di chiamata è la seguente:

  1. Quando il blocco funzione è attivato, viene chiamato il metodo di interfaccia ConnectToProxy.

    Se per la connessione a Server MQTT è selezionata la crittografia TLS, il tipo di socket StartTls è impostato a TRUE. Il metodo viene chiamato ciclicamente finché una delle uscite q_xDone (connessione stabilita) o q_xError (connessione non riuscita) non indica TRUE.

  2. Dopo aver stabilito la connessione al server proxy, viene chiamato il metodo di interfaccia ConnectToRemoteServer.

    Se per la connessione a Server MQTT è selezionata la crittografia TLS, l'opzione UpgradeToTls è impostata a TRUE. Il metodo viene chiamato ciclicamente finché una delle uscite q_xDone (connessione stabilita) o q_xError (connessione non riuscita) non indica TRUE.

  3. Dopo aver completato correttamente il metodo ConnectToRemoteServer, il passo successivo consiste nello stabilire la connessione MQTT a livello di protocollo MQTT. L'interfaccia IF_ProxyHandler non è richiesta fino alla successiva attivazione del blocco funzione.

Se viene rilevato un errore quando si stabilisce la connessione tramite l'interfaccia IF_ProxyHandler, il metodo di interfaccia Abort viene chiamato una volta.

Per disattivare l'utilizzo dell'interfaccia IF_ProxyHandler, passare un'interfaccia non assegnata o un puntatore nullo alla proprietà ProxyHandler. Ad esempio: fbMqttClient.ProxyHandler := 0;

Per ulteriori informazioni sull'implementazione dei metodi di interfaccia o sulle implementazioni già fornite, vedere la ProxyCommunicationSupport - Guida della libreria.

Indirizzo server MQTT

L'indirizzo Server MQTT è specificato dall'indirizzo IPv4. Se la connessione viene stabilita tramite un server proxy (vedere Configurazione proxy), è anche possibile specificare l'indirizzo con il nome host del server. In questo caso, può essere utilizzato solo un parametro, l'indirizzo IP o il nome host.

Interfaccia

Ingresso

Tipo di dati

Descrizione

i_xEnable

BOOL

Il blocco funzione stabilisce una connessione con Server MQTT su un fronte di salita di questo ingresso.

Se l'ingresso è impostato a FALSE, il blocco funzione viene reimpostato e una connessione esistente viene chiusa oppure il tentativo di stabilire una connessione viene interrotto.

Vedere Comportamento dei blocchi funzione con l'ingresso i_xEnable.

i_stConnectionSettings

ST_ConnectionSettings

Struttura per il trasferimento del parametro di connessione.

i_timTimeout

TIME

Intervallo di tempo entro il quale è prevista una connessione corretta. Se il valore è T#0 s, viene applicato il valore predefinito T#10 s.

Uscita

Tipo di dati

Descrizione

q_xActive

BOOL

Indica che è attiva l'esecuzione del blocco funzione. Finché questa uscita è TRUE, il blocco funzione deve essere eseguito ciclicamente.

q_xReady

BOOL

Indica che è stata stabilita la connessione. Il Client MQTT è pronto per lo scambio dei messaggi dell'applicazione con il Server MQTT.

q_xError

BOOL

Se questa uscita è impostata su TRUE, è stato rilevato un errore. Per informazioni, consultare q_etResult e q_etResultMsg.

q_xTlsUsed

BOOL

Indica se la connessione a Server MQTT è protetta tramite TLS (Transport Layer Security).

q_etResult

ET_Result

Fornisce informazioni su stato e diagnostica come valore numerico.

q_sResultMsg

STRING [80]

Fornisce ulteriori informazioni su stato e diagnostica come messaggio di testo.

Proprietà

La tabella descrive la proprietà ProxyHandler fornita dal blocco funzione FB_MqttClient.

Nome

Tipo di dati

Accesso

Descrizione

ProxyHandler

PXCS.IF_ProxyHandler

Get/Set

Blocco funzione che implementa l'interfaccia IF_ProxyHandler.

Se viene assegnata un'interfaccia valida, la connessione al Server MQTT viene stabilita utilizzando i metodi di interfaccia.