MQTT_QC1
Este bloco tem a funcionalidade se conectar a um broker MQTT através do modem celular 4G (CAT-M).
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_QC1). 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 4G na ITF B do equipamento.
Bloco
MQTT_QC1
+----------------------+
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
| |
UINT ----|KEEP_ALIVE PB_ID|---- INT
| |
BOOL ----|SYNC_RTC 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 --------------- |----
| |
INT ----|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. |
|
KEEP_ALIVE |
Entrada |
UINT |
300 |
Tempo em segundos para o broker validadar a conexão |
|
SYNC_RTC |
Entrada |
BOOL |
FALSE |
Flag para sincronizar o relógio calendário do controlador (pela rede celular) |
|
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 |
INT |
[*] |
0 |
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) |
SYNC_RTC
Parâmetro de entrada associado ao bloco de função MODEM_QC1:SYNC_RTC.
PIN
Parâmetro de entrada associado ao bloco de função MODEM_QC1:PIN.
APN
Parâmetro de entrada associado ao bloco de função MODEM_QC1:APN.
USER
Parâmetro de entrada associado ao bloco de função MODEM_QC1:USER.
PASSW
Parâmetro de entrada associado ao bloco de função MODEM_QC1: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 no bloco MODEM_QC1.
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 cliente da conexão como broker (opcional) |
MQTT_PASSW |
Local |
STRING |
Senha 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_QC1 |
Instância do bloco MQTT_QC1 |
Código ST
MODEM_MQTT( // MQTT_4G
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;