MQTT_RNB_U3G

Este bloco tem a funcionalidade se conectar a um broker MQTT através do modem celular 3G/NB-IoT.

Este bloco é parte da biblioteca de comunicação do protocolo MQTT V1.3.1.

Para mais informações sobre o protocolo e os blocos disponíveis no HIstudio consulte o protocolo MQTT.

Após o bloco ser habilitado pela entrada EN, ficará aguardando uma transição de subida em START; quando esta ocorrer, o bloco irá configurar o modem e posteriormente abre conexão com o broker (utilizando o bloco MODEM_RNB_U3G). Quando esta conexão é estabelecida o equipamento se conecta ao broker e entra em sua rotina padrão de publishing e subscribing das variáveis catalogadas no canal de Mapeamento de dados do projeto.

Após a configuração do modem celular o valor da qualidade do sinal de rede é salva na variável de sistema 930 e pode ser acessada externamente pelo programa ou por dispositivos externos MODBUS.

O bloco chama também uma rotina que controla o led vermelho do equipamento na qual sinaliza os seguintes estados:

  • Led Vermelho ACESO: Equipamento configurando rede celular ou bloco desabilitado.

  • Led Vermelho PISCANDO: Equipamento em processo de abertura de conexão TCP.

  • Led Vermelho APAGADO: Equipamento operando, trocando dados com sucesso.

A entrada START deve permanecer em nível alto durante a execução do bloco. Os itens a seguir detalham o funcionamento do bloco.

OBS1: Na inicialização o bloco verifica o canal de comunicação do Modem ( se equipamento modelo Ethernet, modem se encontra na COM1, se o modelo for serial, modem se encontra na COM3), após identificação do canal serial de interface com modem, configura a base de setup deste para operar com protocolo MQTT (é necessário um reset no equipamento, que o próprio bloco executa).

OBS2: Este bloco é somente válido quando tem-se um Modem 3G/NB-IoT na ITF B do equipamento.

Dica

Assista ao vídeo tutorial utilizando o bloco de função para aplicações envolvendo o protocolo MQTT e modem celular 3G: Tutorial MQTT_RNB_U3G

Bloco

                  MQTT_RNB_U3G
           +------------------------+
  BOOL ----|START             STATUS|---- USINT
           |                        |
  BOOL ----|EN_SCAN           RESULT|---- INT
           |                        |
  BOOL ----|EN_SUBS        CONNECTED|---- BOOL
           |                        |
 USINT ----|DMAP_ID            SB_EV|---- BOOL
           |                        |
  UINT ----|FLAGS              SB_ID|---- INT
           |                        |
 USINT ----|DEC_SEP          SB_CODE|---- INT
           |                        |
  BOOL ----|HI_GATE            PB_EV|---- BOOL
           |                        |
  BOOL ----|MODEM_SIMSTK       PB_ID|---- INT
           |                        |
  UINT ----|KEEP_ALIVE       PB_CODE|---- INT
           |                        |
           |                   RT_EV|---- BOOL
           |                        |
           |                  RT_CHG|---- BOOL
           |                        |
           |                   RT_ID|---- INT
           |                        |
           |                 RT_CODE|---- INT
           |                        |
STRING ----|CLIENT_ID ------------- |----
           |                        |
STRING ----|W_TOPIC --------------- |----
           |                        |
STRING ----|W_MSG ----------------- |----
           |                        |
STRING ----|USER ------------------ |----
           |                        |
STRING ----|PASSW ----------------- |----
           |                        |
       ----|T_CACHE --------------- |----
           |                        |
STRING ----|BRQ_IP ---------------- |----
           |                        |
STRING ----|BRQ_PORT -------------- |----
           |                        |
STRING ----|MODEM_PIN ------------- |----
           |                        |
STRING ----|MODEM_APN ------------- |----
           |                        |
STRING ----|MODEM_USR ------------- |----
           |                        |
STRING ----|MODEM_PSW ------------- |----
           +------------------------+

Parâmetros

Nome

Classe

Tipo

Dim.

V. Ini.

Descrição

START

Entrada

BOOL

FALSE

Habilita operação do bloco

EN_SCAN

Entrada

BOOL

TRUE

Habilita o ciclo de notificacoes automaticas ao broker

EN_SUBS

Entrada

BOOL

TRUE

Ativa o processo de registro dos itens

DMAP_ID

Entrada

USINT

0

Id do mapeamento de dados associado ao bloco MQTT

FLAGS

Entrada

UINT

8

Flags de conexão com o broker (default: Clean session)

DEC_SEP

Entrada

USINT

46

Separador de casas decimais no processo de conversao dos valores reais para string (default = ponto)

HI_GATE

Entrada

BOOL

FALSE

Se TRUE e conectado ao Portal da HI Tecnologia, notifica que é um equipamento HI e sincroniza o relógio automaticamente.

MODEM_SIMSTK

Entrada

BOOL

FALSE

Chip Multioperadora: habilita SIM ToolKit (default: false)

KEEP_ALIVE

Entrada

UINT

0

Tempo em segundos para o broker validadar a conexão

CLIENT_ID

Entrada/Saída

STRING

:*

Nome do cliente na conexão como broker (opcional)

W_TOPIC

Entrada/Saída

STRING

:*

Nome do tópico associado a mensagem de desconexão

W_MSG

Entrada/Saída

STRING

:*

Mensagem de desconexão

USER

Entrada/Saída

STRING

:*

Nome do usuário/login de autenticação do broker mqtt (opcional)

PASSW

Entrada/Saída

STRING

:*

Senha de acesso do login de autenticação do broker mqtt (opcional)

T_CACHE

Entrada/Saída

ANY

Cache de tópicos a serem enviados ao broker (deve ser fornecido um vetor de tipos INT)

BRQ_IP

Entrada/Saída

STRING

:*

Endereço IP do broker a ser acessado

BRQ_PORT

Entrada/Saída

STRING

:*

Porta de escuta do broker

MODEM_PIN

Entrada/Saída

STRING

:*

PIN do SIM CARD

MODEM_APN

Entrada/Saída

STRING

:*

APN da operadora do chip de rede celular

MODEM_USR

Entrada/Saída

STRING

:*

Usuário da operadora de rede celular

MODEM_PSW

Entrada/Saída

STRING

:*

Senha da operadora de rede celular

STATUS

Saída

USINT

0

Status de processo do bloco

RESULT

Saída

INT

0

Resultado da operação do bloco

CONNECTED

Saída

BOOL

FALSE

Indica que o equipamento esta conectado com o broker

SB_EV

Saída

BOOL

FALSE

Indica fim do processo de subscribe de um topico (mqtt)

SB_ID

Saída

INT

0

Id do item da última aquisição do equipamento remoto (MQTT)

SB_CODE

Saída

INT

0

Código de retorno da ultima recepção remota (MQTT)

PB_EV

Saída

BOOL

FALSE

Indica fim do processo de escrita de um item no equipamento remoto (MQTT)

PB_ID

Saída

INT

0

Id do item da última escrita no equipamento remoto (MQTT)

PB_CODE

Saída

INT

0

Código de retorno da ultima escrita no equipamento remoto (MQTT)

RT_EV

Saída

BOOL

FALSE

Indica fim do processo de recepção de um tópico do broker (MQTT)

RT_CHG

Saída

BOOL

FALSE

Indica que o tópico recebido é diferente do valor anterior presente na base global (MQTT)

RT_ID

Saída

INT

0

Id do item da última recepção de tópico do broker (MQTT)

RT_CODE

Saída

INT

0

Código de retorno da ultima recepção de tópico do broker (MQTT)

PIN

Parâmetro de entrada associado ao bloco de função MODEM_RNB_U3G:PIN.

APN

Parâmetro de entrada associado ao bloco de função MODEM_RNB_U3G:APN.

USER

Parâmetro de entrada associado ao bloco de função MODEM_RNB_U3G:USER.

PASSW

Parâmetro de entrada associado ao bloco de função MODEM_RNB_U3G:USER.

BRQ_IP, BRQ_PORT

  • BRQ_IP: String com o número do IP do Broker, ou host name destino. Ex: ‘54.227.237.88’.

  • BRQ_PORT: String com a PORTA do Broker. Ex: ‘1883’, por padrão.

Parâmetros do Bloco MQTT

Para as variáveis MQTT_DMAP_ID, DEC_SEP, HI_GATE, KEEP_ALIVE, MQTT_USR, MQTT_PSW, MQTT_CACHE, W_TOPIC, W_MSG ver documentação das mesmas no bloco :ref: MQTT_GATEWAY.

STATUS

A variável STATUS retorna o código de operação, listados a seguir.

STATUS

Valor

Descrição

0

Inativo

1, 2, 3

Aguardando configuração e conexão do modem celular

4

Aguardando conexão MQTT com o broker

5

Conexão com broker estabelecida, equipamento trocando dados

> 5

Estados de desconexão com broker MQTT

RESULT

Os erros gerados no processo de configuração e conexão do modem celular é acessado através da variável RESULT, a descrição dos códigos estão listados nos blocos MODEM_CONN, U3G_CFG, RNB_CFG .

Exemplo

Declaração de variáveis

Nome

Classe

Tipo

Valor Inicial

Descrição

START

Local

BOOL

FALSE

Habilita operação do bloco

CEL_PIN

Local

STRING

‘1010’

PIN do SIM CARD

CEL_APN

Local

STRING

‘tim.com.br’

APN da operadora do chip de rede celular

CEL_USER

Local

STRING

‘timtim’

Usuário da operadora de rede celular

CEL_PASSW

Local

STRING

‘timtim’

Senha da operadora de rede celular

IP_BRQ

Local

STRING

‘54.227.237.88’

Endereço IP do broker a ser acessado

PORT_BRQ

Local

STRING

‘1883’

Porta de escuta do broker

CEL_PASSW

Local

STRING

‘timtim’

Senha da operadora de rede celular

MQTT_CLI_ID

Local

STRING

‘DEV_ID’

Nome ckiente da conexão como broker (opcional)

MQTT_PASSW

Local

STRING

enha de acesso do login de autenticação do broker mqtt (opcional)

MQTT_W_TOPIC

Local

STRING

Nome do tópico associado a mensagem de desconexão (string:80)

MQTT_W_MSG

Local

STRING

Mensagem de desconexão (string:140)

MQTT_CACHE

Local

INT

0

Cache de tópicos a serem enviados ao broker (deve ser fornecido um vetor de tipos INT)

MQTT_DMAP_ID

Local

USINT

0

Id do mapeamento de dados associado ao bloco

MQTT_DEC_SEP

Local

USINT

46

Separador de casas decimais no processo de conversao dos valores reais para string (default = ponto)

MQTT_KEEP_ALIVE

Local

UINT

300

Tempo em segundos para o broker validadar a conexão

MQTT_CEL_RESULT

Local

INT

0

Resultado da operação do bloco de conexão MQTT via rede celular

MODEM_MQTT

Local

HILS.MQTT_RNB_U3G

Instância do bloco MQTT_RNB_U3G

Clique aqui para baixar a tabela de variáveis

Código ST

MODEM_MQTT(  // MQTT_RNB_U3G
  START        := START,      // [BOOL] Habilita operação do bloco
  DMAP_ID      := MQTT_DMAP_ID, // [USINT] Id do mapeamento de dados associado ao bloco MQTT
  MODEM_SIMSTK := FALSE,        // [BOOL] Chip Multioperadora: habilita SIM ToolKit
  CLIENT_ID    := MQTT_CLI_ID,  // [STRING] Nome do cliente na conexão como o broker  (opcional)
  USER         := MQTT_USER,    // [STRING] Nome do usuário/login de autenticação do broker mqtt  (opcional)
  PASSW        := MQTT_PASSW,   // [STRING] Senha de acesso do login de autenticação do broker mqtt  (opcional)
  T_CACHE      := MQTT_CACHE,   // [INT] Cache de tópicos a serem enviados ao broker (deve ser fornecido um vetor de tipos INT)
  DEC_SEP      := MQTT_DEC_SEP, // [USINT] Separador de casas decimais no processo de conversao dos valores reais para string (default = ponto)
  KEEP_ALIVE   := MQTT_KEEP_ALIVE, // [UINT] Tempo em segundos para o broker validadar a conexão
  BRQ_IP       := IP_BRQ,       // [STRING] Endereço IP do broker a ser acessado
  BRQ_PORT     := PORT_BRQ,     // [STRING] Porta de escuta do broker
  W_TOPIC      := MQTT_W_TOPIC, // [STRING] Nome do tópico associado a mensagem de desconexão (string:80)
  W_MSG        := MQTT_W_MSG,   // [STRING] Mensagem de desconexão (string:140)
  MODEM_PIN    := CEL_PIN,      // [STRING] PIN do SIM CARD
  MODEM_APN    := CEL_APN,      // [STRING] APN da operadora do chip de rede celular
  MODEM_USR    := CEL_USER,     // [STRING] Usuário da operadora de rede celular
  MODEM_PSW    := CEL_PASSW     // [STRING] Senha da operadora de rede celular
  );

MQTT_CEL_RESULT := MODEM_MQTT.RESULT;