MQTT_RNB_U3G
Conecta o equipamento a um broker MQTT através de um modem celular 3G/NB-IoT instalado na ITF B, publicando e assinando as variáveis catalogadas no canal de Mapeamento de dados do projeto. É um bloco de função (mantém estado entre scans; requer instância).
Biblioteca: HI_STD · Namespace: HILS · Tipo: bloco de função
Este bloco faz parte da biblioteca de comunicação do protocolo MQTT V1.3.1. Para mais informações sobre o protocolo e os blocos disponíveis, consulte o protocolo MQTT.
Bloco de função
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 ------------- |----
+------------------------+
Após ser habilitado pela entrada START, o bloco aguarda uma transição de subida em
START para configurar o modem e, em seguida, abrir a conexão com o broker (usando o
bloco MODEM_RNB_U3G). Estabelecida a conexão, o equipamento entra na rotina padrão
de publishing e subscribing das variáveis do canal de Mapeamento de dados. A
entrada START deve permanecer em nível alto durante toda a execução do bloco.
Após a configuração do modem, o valor da qualidade do sinal de rede é salvo na variável de sistema 930, acessível pelo programa ou por dispositivos externos MODBUS.
O bloco também controla o led vermelho do equipamento para sinalizar o estado:
Led vermelho ACESO: configurando a rede celular ou bloco desabilitado.
Led vermelho PISCANDO: em processo de abertura de conexão TCP.
Led vermelho APAGADO: operando, trocando dados com sucesso.
Nota
Na inicialização o bloco identifica o canal serial de interface com o modem (COM1 nos modelos Ethernet, COM3 nos modelos serial) e configura a base de setup do modem para operar com o protocolo MQTT. Essa configuração exige um reset do equipamento, que o próprio bloco executa.
Importante
Este bloco só é válido quando há um modem 3G/NB-IoT instalado na ITF B do equipamento.
Dica
Assista ao vídeo tutorial do uso do bloco em aplicações com o protocolo MQTT e modem celular 3G: Tutorial MQTT_RNB_U3G
Parâmetros
Nome |
Direção |
Tipo |
Dimensão |
Padrão |
Faixa / Unidade |
Descrição |
|---|---|---|---|---|---|---|
START |
IN |
BOOL |
— |
FALSE |
— |
Habilita a operação do bloco (deve permanecer alto durante a execução). |
EN_SCAN |
IN |
BOOL |
— |
TRUE |
— |
Habilita o ciclo de notificações automáticas ao broker. |
EN_SUBS |
IN |
BOOL |
— |
TRUE |
— |
Ativa o processo de registro (subscribe) dos itens. |
DMAP_ID |
IN |
USINT |
— |
0 |
— |
Id do mapeamento de dados associado ao bloco MQTT. |
FLAGS |
IN |
UINT |
— |
8 |
— |
Flags de conexão com o broker (padrão 8 = clean session). |
DEC_SEP |
IN |
USINT |
— |
46 |
— |
Separador decimal na conversão de valores reais para string (46 = ponto). |
HI_GATE |
IN |
BOOL |
— |
FALSE |
— |
Se TRUE e conectado ao Portal da HI Tecnologia, notifica que é um equipamento HI e sincroniza o relógio automaticamente. |
MODEM_SIMSTK |
IN |
BOOL |
— |
FALSE |
— |
Chip multioperadora: habilita o SIM ToolKit. |
KEEP_ALIVE |
IN |
UINT |
— |
0 |
s |
Tempo, em segundos, para o broker validar a conexão. |
CLIENT_ID |
IN_OUT |
STRING |
:* |
— |
— |
Nome do cliente na conexão com o broker (opcional). |
W_TOPIC |
IN_OUT |
STRING |
:* |
— |
— |
Nome do tópico associado à mensagem de desconexão. |
W_MSG |
IN_OUT |
STRING |
:* |
— |
— |
Mensagem de desconexão. |
USER |
IN_OUT |
STRING |
:* |
— |
— |
Nome do usuário/login de autenticação do broker MQTT (opcional). |
PASSW |
IN_OUT |
STRING |
:* |
— |
— |
Senha de acesso do login de autenticação do broker MQTT (opcional). |
T_CACHE |
IN_OUT |
ANY |
[*] |
— |
— |
Cache de tópicos a serem enviados ao broker (fornecer um vetor de INT). |
BRQ_IP |
IN_OUT |
STRING |
:* |
— |
— |
Endereço IP ou host name do broker (ex.: ‘54.227.237.88’). |
BRQ_PORT |
IN_OUT |
STRING |
:* |
— |
— |
Porta de escuta do broker (ex.: ‘1883’). |
MODEM_PIN |
IN_OUT |
STRING |
:* |
— |
— |
PIN do SIM CARD. |
MODEM_APN |
IN_OUT |
STRING |
:* |
— |
— |
APN da operadora do chip de rede celular. |
MODEM_USR |
IN_OUT |
STRING |
:* |
— |
— |
Usuário da operadora de rede celular. |
MODEM_PSW |
IN_OUT |
STRING |
:* |
— |
— |
Senha da operadora de rede celular. |
STATUS |
OUT |
USINT |
— |
0 |
— |
Status do processo do bloco (ver Observações). |
RESULT |
OUT |
INT |
— |
0 |
— |
Código de erro da configuração/conexão do modem (ver Códigos de retorno). |
CONNECTED |
OUT |
BOOL |
— |
FALSE |
— |
Indica que o equipamento está conectado ao broker. |
SB_EV |
OUT |
BOOL |
— |
FALSE |
— |
Indica o fim do processo de subscribe de um tópico. |
SB_ID |
OUT |
INT |
— |
0 |
— |
Id do item da última aquisição do equipamento remoto. |
SB_CODE |
OUT |
INT |
— |
0 |
— |
Código de retorno da última recepção remota. |
PB_EV |
OUT |
BOOL |
— |
FALSE |
— |
Indica o fim do processo de escrita de um item no equipamento remoto. |
PB_ID |
OUT |
INT |
— |
0 |
— |
Id do item da última escrita no equipamento remoto. |
PB_CODE |
OUT |
INT |
— |
0 |
— |
Código de retorno da última escrita no equipamento remoto. |
RT_EV |
OUT |
BOOL |
— |
FALSE |
— |
Indica o fim do processo de recepção de um tópico do broker. |
RT_CHG |
OUT |
BOOL |
— |
FALSE |
— |
Indica que o tópico recebido difere do valor anterior na base global. |
RT_ID |
OUT |
INT |
— |
0 |
— |
Id do item da última recepção de tópico do broker. |
RT_CODE |
OUT |
INT |
— |
0 |
— |
Código de retorno da última recepção de tópico do broker. |
Códigos de retorno
RESULT reporta os erros de configuração e conexão do modem celular. Os identificadores
usam o namespace HILS (ex.: HILS.CN_NO_NET). Códigos mais comuns deste bloco:
Código |
Identificador |
Significado |
|---|---|---|
0 |
SUCCESS |
Processo executado com sucesso. |
63 |
CO_CONEX_FAIL |
Falha no processo de conexão. |
80 |
CO_EQP_TMO |
Timeout na resposta do equipamento externo (modem). |
180 |
CN_PIN_ERR |
PIN inválido ou bloqueado. |
181 |
CN_SIM_CARD_ERR |
SIM CARD inválido ou não encontrado. |
182 |
CN_NO_NET |
Não detectou rede celular. |
183 |
CN_REGISTER_DENIED |
Registro na rede celular negado. |
184 |
CN_INV_AUTH_DATA |
Dados de autenticação da rede celular inválidos (APN, USER ou PASSW). |
185 |
CN_AUTH_DENIED |
Autenticação na rede celular negada. |
Os códigos de configuração e conexão do modem também são detalhados em MODEM_CONN, U3G_CFG e RNB_CFG. Lista completa: RET_CODE - Códigos de retorno do firmware G5.
Pré-condições
Modem 3G/NB-IoT instalado na ITF B do equipamento.
T_CACHEdeve receber um vetor de tipos INT.Os parâmetros do modem (
MODEM_PIN,MODEM_APN,MODEM_USR,MODEM_PSW) e do broker (BRQ_IP,BRQ_PORT) devem estar preenchidos antes da transição de subida deSTART.
Observações
Os parâmetros
MODEM_PIN,MODEM_APN,USERePASSWcorrespondem, respectivamente, às entradasPIN,APN,USEReUSERdo bloco MODEM_RNB_U3G.BRQ_IPé uma string com o IP ou host name do broker (ex.: ‘54.227.237.88’);BRQ_PORTé uma string com a porta do broker (‘1883’, por padrão).Para os demais parâmetros do MQTT (
DMAP_ID,DEC_SEP,HI_GATE,KEEP_ALIVE,USER,PASSW,T_CACHE,W_TOPIC,W_MSG) consulte a documentação do bloco MQTT_GATEWAY.A saída
STATUSretorna o código de operação do bloco: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 o broker estabelecida; equipamento trocando dados.
> 5
Estados de desconexão com o broker MQTT.
Ver também
MODEM_RNB_U3G, MQTT_QC1, MQTT_GATEWAY, MODEM_CONN, U3G_CFG, RNB_CFG, protocolo MQTT
Exemplo
Clique aqui para baixar a tabela de variáveis
Código ST
VAR
START : BOOL := FALSE; (* Habilita operação do bloco *)
CEL_PIN : STRING := '1010'; (* PIN do SIM CARD *)
CEL_APN : STRING := 'tim.com.br'; (* APN da operadora do chip de rede celular *)
CEL_USER : STRING := 'timtim'; (* Usuário da operadora de rede celular *)
CEL_PASSW : STRING := 'timtim'; (* Senha da operadora de rede celular *)
IP_BRQ : STRING := '54.227.237.88'; (* Endereço IP do broker a ser acessado *)
PORT_BRQ : STRING := '1883'; (* Porta de escuta do broker *)
MQTT_CLI_ID : STRING := 'DEV_ID'; (* Nome do cliente da conexão com o broker (opcional) *)
MQTT_USER : STRING; (* Nome do usuário/login de autenticação do broker mqtt (opcional) *)
MQTT_PASSW : STRING; (* Senha de acesso do login de autenticação do broker mqtt (opcional) *)
MQTT_W_TOPIC : STRING; (* Nome do tópico associado a mensagem de desconexão (string:80) *)
MQTT_W_MSG : STRING; (* Mensagem de desconexão (string:140) *)
MQTT_CACHE : INT := 0; (* Cache de tópicos a serem enviados ao broker (deve ser fornecido um vetor de tipos INT) *)
MQTT_DMAP_ID : USINT := 0; (* Id do mapeamento de dados associado ao bloco *)
MQTT_DEC_SEP : USINT := 46; (* Separador de casas decimais na conversao dos valores reais para string (default = ponto) *)
MQTT_KEEP_ALIVE : UINT := 300; (* Tempo em segundos para o broker validar a conexão *)
MQTT_CEL_RESULT : INT := 0; (* Resultado da operação do bloco de conexão MQTT via rede celular *)
MODEM_MQTT : HILS.MQTT_RNB_U3G; (* Instância do bloco MQTT_RNB_U3G *)
END_VAR
MODEM_MQTT(
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 com 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 (vetor de tipos INT) *)
DEC_SEP := MQTT_DEC_SEP, (* [USINT] Separador de casas decimais na conversao dos valores reais para string *)
KEEP_ALIVE := MQTT_KEEP_ALIVE, (* [UINT] Tempo em segundos para o broker validar 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 *)
W_MSG := MQTT_W_MSG, (* [STRING] Mensagem de desconexão *)
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;