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