MQTT_MDB_4G_BRIDGE
Este bloco tem a função de executar uma bridge MODBUS-MQTT, sendo que a interface MQTT utiliza o módulo de modem de rede celular (3G ou 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 abrirá 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 MQTT do projeto.
Analogamente habilita o bloco de MDB_GATEWAY para leitura e escrita dos dados refenciados no Mapeamento de dados MODBUS
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 pelo programa de aplicação ou por dispositivos externos via MODBUS.
Por fim, o bloco chama uma rotina que controla o led vermelho do equipamento na qual sinaliza os seguintes estados:
Led Vermelho ACESO: Equipamento configurando rede celular e em processo de abertura de conexão TCP com broker ou bloco desabilitado.
Led Vermelho PISCANDO: Equipamento conectado MQTT com broker e/ou aguardando cenexão com broker
Led Vermelho APAGADO: Equipamento operando, trocando dados com sucesso.
OBS: Este bloco é somente válido quando tem-se um Modem 3g/NB-IoT na ITF B do equipamento.
A entrada START deve permanecer em nível alto durante a execução do bloco. Os itens a seguir detalham o funcionamento do bloco.
Bloco
MQTT_MDB_4G_BRIDGE
+---------------------------------+
BOOL ----|START MDB_BRT_EV|---- BOOL
| |
USINT ----|MQTT_DMAP_ID MDB_END_CYC|---- BOOL
| |
USINT ----|MQTT_DEC_SEP MDB_RD_EV|---- BOOL
| |
BOOL ----|MQTT_HI_GATE MDB_RD_CHG|---- BOOL
| |
UINT ----|MQTT_FLAGS MDB_RD_ID|---- INT
| |
UINT ----|MQTT_KEEP_ALIVE MDB_RD_CID|---- INT
| |
BOOL ----|MDB_EN_SCAN MDB_RD_CODE|---- INT
| |
BOOL ----|MDB_SKIP_RD MDB_WR_EV|---- BOOL
| |
USINT ----|MDB_COMM_SRC MDB_WR_ID|---- INT
| |
USINT ----|MDB_DMAP_ID MDB_WR_CID|---- INT
| |
TIME ----|MDB_POLL_TME MDB_WR_CODE|---- INT
| |
TIME ----|MDB_PACK_TME MQTT_CEL_RESULT|---- INT
| |
BOOL ----|CEL_SYNC_RTC MQTT_CONNECTED|---- BOOL
| |
| MQTT_SB_EV|---- BOOL
| |
| MQTT_SB_ID|---- INT
| |
| MQTT_SB_CODE|---- INT
| |
| MQTT_PB_EV|---- BOOL
| |
| MQTT_PB_ID|---- INT
| |
| MQTT_PB_CODE|---- INT
| |
| MQTT_RT_EV|---- BOOL
| |
| MQTT_RT_CHG|---- INT
| |
| MQTT_RT_ID|---- INT
| |
| MQTT_RT_CODE|---- INT
| |
STRING ----|CEL_PIN ------------------------ |----
| |
STRING ----|CEL_APN ------------------------ |----
| |
STRING ----|CEL_USER ----------------------- |----
| |
STRING ----|CEL_PASSW ---------------------- |----
| |
STRING ----|CEL_IP ------------------------- |----
| |
STRING ----|CEL_PORT ----------------------- |----
| |
STRING ----|MQTT_CLIENT_ID ----------------- |----
| |
STRING ----|MQTT_W_TOPIC ------------------- |----
| |
STRING ----|MQTT_W_MSG --------------------- |----
| |
STRING ----|MQTT_USER ---------------------- |----
| |
STRING ----|MQTT_PASSW --------------------- |----
| |
INT ----|MQTT_CACHE --------------------- |----
| |
INT ----|MDB_CACHE ---------------------- |----
+---------------------------------+
Para utilização deste bloco, o usuário deverá inicialmente, utilizando o recurso de Mapeamento de dados criar um canal de mapeamento e associá-lo ao protocolo MODBUS. Em seguida, no canal de mapeamento criado, definir os itens a serem obtidos remotamente e os itens a serem enviados. Note que todos os itens criados devem estar associados a variáveis globais exportadas.
Na lista das variáveis a serem lidas, agrupe as variáveis por endereço de comunicação. Desta forma, quando o correr um erro de comunicação na leitura de uma determinada variável, as variáveis subsequentes que possuírem o mesmo endereço de comunicação serão descartadas no ciclo de aquisição corrente, evitando uma demora no processo gerada pelo timeout de falha em cada processo de leitura.
Importante
Para a utilização desse bloco, os canais de comunicação utilizados para acesso aos equipamentos devem possuir as seguintes configurações:
O protocolo de aplicação deve estar configurado como MODBUS-TCP ou MODBUS-RTU em função do equipamento remoto a ser acessado.
Se o canal for ethernet o socket associado deve estar configurado como cliente TCP/IP e com auto conexão desativada.
Se o canal for serial os parâmetros de baudrate, data bits, stop bits e paridade devem ser compatíveis com as configurações dos equipamentos a serem acessados.
Caso possua dúvidas sobre como configurar o socket assista ao tutorial: Configurando recursos de conectividade do equipamento
Parâmetros
Nome |
Classe |
Tipo |
Dim. |
V. Ini. |
Descrição |
START |
Entrada |
BOOL |
FALSE |
Habilita operação do bloco |
|
MQTT_DMAP_ID |
Entrada |
USINT |
0 |
Id do mapeamento de dados associado ao bloco |
|
MQTT_DEC_SEP |
Entrada |
USINT |
46 |
Separador de casas decimais no processo de conversao dos valores reais para string (default = ponto) |
|
MQTT_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. |
|
MQTT_FLAGS |
Entrada |
UINT |
8 |
Flags de conexão com o broker |
|
MQTT_KEEP_ALIVE |
Entrada |
UINT |
300 |
Tempo em segundos para o broker validadar a conexão |
|
MDB_EN_SCAN |
Entrada |
BOOL |
TRUE |
Habilita o polling de dados do equipamento remoto |
|
MDB_SKIP_RD |
Entrada |
BOOL |
FALSE |
Quando habilitada imediatamente após um evento BRT_EV cancela a transação de leitura corrente |
|
MDB_COMM_SRC |
Entrada |
USINT |
0 |
Canal de comunicação utilizado para acesso equipamento Modbus (ex: COM1_PORT_ID) |
|
MDB_DMAP_ID |
Entrada |
USINT |
0 |
Id do mapeamento de dados associado ao bloco MQTT |
|
MDB_POLL_TME |
Entrada |
TIME |
T#40ms |
Tempo entre um ciclo de comunicação |
|
MDB_PACK_TME |
Entrada |
TIME |
T#20ms |
Tempo entre pacotes de comunicação |
|
CEL_SYNC_RTC |
Entrada |
BOOL |
FALSE |
Flag para sincronizar o relógio calendário do controlador (pela rede celular) |
|
CEL_PIN |
Entrada/Saída |
STRING |
:* |
PIN do SIM CARD |
|
CEL_APN |
Entrada/Saída |
STRING |
:* |
APN da operadora do chip de rede celular |
|
CEL_USER |
Entrada/Saída |
STRING |
:* |
Usuário da operadora de rede celular |
|
CEL_PASSW |
Entrada/Saída |
STRING |
:* |
Senha da operadora de rede celular |
|
CEL_IP |
Entrada/Saída |
STRING |
:* |
Endereço IP do broker a ser acessado |
|
CEL_PORT |
Entrada/Saída |
STRING |
:* |
Porta de escuta do broker |
|
MQTT_CLIENT_ID |
Entrada/Saída |
STRING |
:* |
||
MQTT_W_TOPIC |
Entrada/Saída |
STRING |
:* |
Nome do tópico associado a mensagem de desconexão (string:80) |
|
MQTT_W_MSG |
Entrada/Saída |
STRING |
:* |
Mensagem de desconexão (string:140) |
|
MQTT_USER |
Entrada/Saída |
STRING |
:* |
Nome do usuário/login de autenticação do broker mqtt (string:36) (opcional) |
|
MQTT_PASSW |
Entrada/Saída |
STRING |
:* |
Senha de acesso do login de autenticação do broker mqtt (string:36) (opcional) |
|
MQTT_CACHE |
Entrada/Saída |
INT |
[*] |
0 |
Cache de tópicos a serem enviados ao broker (deve ser fornecido um vetor de tipos INT) |
MDB_CACHE |
Entrada/Saída |
INT |
[*] |
0 |
Cache de items a serem enviados ao equipamento remoto (deve ser fornecido um vetor de tipos INT[50]) |
MDB_BRT_EV |
Saída |
BOOL |
FALSE |
Quando ativo, indica que uma nova transação de leitura será iniciada. Através da entrada SKIP_RD o usuário pode bloquear esta t |
|
MDB_END_CYC |
Saída |
BOOL |
FALSE |
Quando ativo, indica que terminou um ciclo de aquisição de items nos equipamentos remotos |
|
MDB_RD_EV |
Saída |
BOOL |
FALSE |
Indica fim do processo de aquisição de um item no equipamento remoto (MODBUS) |
|
MDB_RD_CHG |
Saída |
BOOL |
FALSE |
Indica que a variavel adquirida é diferente do valor anterior presente na base global (MODBUS) |
|
MDB_RD_ID |
Saída |
INT |
-1 |
Id do item da última aquisição do equipamento remoto (MODBUS) |
|
MDB_RD_CID |
Saída |
INT |
-1 |
Id de comunicação da última leitura no equipamento remoto |
|
MDB_RD_CODE |
Saída |
INT |
0 |
Código de retorno da ultima recepção remota (MODBUS) |
|
MDB_WR_EV |
Saída |
BOOL |
FALSE |
Indica fim do processo de escrita de um item no equipamento remoto (MODBUS) |
|
MDB_WR_ID |
Saída |
INT |
-1 |
Id do item da última escrita no equipamento remoto (MODBUS) |
|
MDB_WR_CID |
Saída |
INT |
-1 |
Id de comunicação da última escrita no equipamento remoto |
|
MDB_WR_CODE |
Saída |
INT |
0 |
Código de retorno da ultima escrita no equipamento remoto (MODBUS) |
|
MQTT_CEL_RESULT |
Saída |
INT |
0 |
Resultado do processo de conexão MQTT via rede celular |
|
MQTT_CONNECTED |
Saída |
BOOL |
FALSE |
Indica que o equipamento esta conectado com o broker |
|
MQTT_SB_EV |
Saída |
BOOL |
FALSE |
Indica fim do processo de subscribe de um topico (MQTT) |
|
MQTT_SB_ID |
Saída |
INT |
0 |
Id do item da última aquisição do equipamento remoto (MQTT) |
|
MQTT_SB_CODE |
Saída |
INT |
0 |
Código de retorno da ultima recepção remota (MQTT) |
|
MQTT_PB_EV |
Saída |
BOOL |
FALSE |
Indica fim do processo de escrita de um item no equipamento remoto (MQTT) |
|
MQTT_PB_ID |
Saída |
INT |
0 |
Id do item da última escrita no equipamento remoto (MQTT) |
|
MQTT_PB_CODE |
Saída |
INT |
0 |
Código de retorno da ultima escrita no equipamento remoto (MQTT) |
|
MQTT_RT_EV |
Saída |
BOOL |
FALSE |
Indica fim do processo de recepção de um tópico do broker (MQTT) |
|
MQTT_RT_CHG |
Saída |
INT |
0 |
Indica que o tópico recebido é diferente do valor anterior presente na base global (MQTT) |
|
MQTT_RT_ID |
Saída |
INT |
0 |
Id do item da última recepção de tópico do broker (MQTT) |
|
MQTT_RT_CODE |
Saída |
INT |
0 |
Código de retorno da ultima recepção de tópico do broker (MQTT) |
Entradas
CEL_PIN
Parâmetro de entrada associado ao bloco de função MODEM_QC1:PIN.
CEL_PIN
Parâmetro de entrada associado ao bloco de função MODEM_QC1:PIN.
CEL_SYNC_RTC
Parâmetro de entrada associado ao bloco de função MODEM_QC1:SYNC_RTC.
CEL_USER
Parâmetro de entrada associado ao bloco de função MODEM_QC1:USER.
CEL_PASSW
Parâmetro de entrada associado ao bloco de função MODEM_QC1:PASSW.
CEL_IP
String com o número do IP do Broker, ou host name destino. Ex: ‘54.227.237.88’. Parâmetro de entrada associado ao bloco de função MODEM_QC1:IP.
CEL_PORT
String com a PORTA do Broker. Ex: ‘1883’, por padrão. Parâmetro de entrada associado ao bloco de função MODEM_QC1:PORT.
MQTT_MAP_ID
Parâmetro de entrada associado ao bloco de função MQTT_GATEWAY:DMAP_ID.
MQTT_SEP
Parâmetro de entrada associado ao bloco de função MQTT_GATEWAY:DEC_SEP.
MQTT_HI_GATE
Parâmetro de entrada associado ao bloco de função MQTT_GATEWAY:HI_GATE.
MQTT_KEEP_ALIVE
Parâmetro de entrada associado ao bloco de função MQTT_GATEWAY:KEEP_ALIVE.
MQTT_MQTT_FLAGS
Parâmetro de entrada associado ao bloco de função MQTT_GATEWAY:MQTT_FLAGS.
MQTT_BROKER_PORT
Parâmetro de entrada associado ao bloco de função MQTT_GATEWAY:BROKER_PORT.
MQTT_BROKER_IP
Parâmetro de entrada associado ao bloco de função MQTT_GATEWAY:BROKER_IP.
MQTT_W_TOPIC
Parâmetro de entrada associado ao bloco de função MQTT_GATEWAY:W_TOPIC.
MQTT_W_MSG
Parâmetro de entrada associado ao bloco de função MQTT_GATEWAY:W_MSG.
MQTT_USER
Parâmetro de entrada associado ao bloco de função MQTT_GATEWAY:USER.
MQTT_PASSW
Parâmetro de entrada associado ao bloco de função MQTT_GATEWAY:PASSW.
MQTT_MQTT_CACHE
Parâmetro de entrada associado ao bloco de função MQTT_GATEWAY:MQTT_CACHE.
MDB_EN_SCAN
Parâmetro de entrada associado ao bloco de função MDB_GATEWAY:EN_SCAN.
MDB_SKIP_RD
Parâmetro de entrada associado ao bloco de função MDB_GATEWAY:SKIP_RD.
MDB_DMAP_ID
Parâmetro de entrada associado ao bloco de função MDB_GATEWAYD:MAP_ID.
MDB_COMM_SRC
Parâmetro de entrada associado ao bloco de função MDB_GATEWAY:COMM_SRC.
MDB_POLL_TME
Parâmetro de entrada associado ao bloco de função MDB_GATEWAY:IPOLL_TME.
MDB_PACK_TME
Parâmetro de entrada associado ao bloco de função MDB_GATEWAY:IPACK_TME.
MDB_CACHE
Parâmetro de entrada/saída associado ou bloco de função MDB_GATEWAY:W_CACHE.
Saídas
MDB_BRT_EV
Parâmetro de saída associado ao bloco de função MDB_GATEWAY:BRT_EV.
MDB_END_CYC
Parâmetro de saída associado ao bloco de função MDB_GATEWAY:END_CYC.
MDB_RD_EV
Parâmetro de saída associado ao bloco de função MDB_GATEWAY:RD_EV.
MDB_RD_CHG
Parâmetro de saída associado ao bloco de função MDB_GATEWAY:RD_CHG.
MDB_RD_ID
Parâmetro de saída associado ao bloco de função MDB_GATEWAY:RD_ID.
MDB_RD_CID
Parâmetro de saída associado ao bloco de função MDB_GATEWAY:RD_ID.
MDB_RD_CODE
Parâmetro de saída associado ao bloco de função MDB_GATEWAY:RD_CODE.
MDB_WR_EV
Parâmetro de saída associado ao bloco de função MDB_GATEWAY:WR_EV.
MDB_WR_ID
Parâmetro de saída associado ao bloco de função MDB_GATEWAY:WR_ID.
MDB_WR_CID
Parâmetro de saída associado ao bloco de função MDB_GATEWAY:WR_ID.
MDB_WR_CODE
Parâmetro de saída associado ao bloco de função MDB_GATEWAY:WR_CODE.
MQTT_SB_EV
Parâmetro de saída associado ao bloco de função MQTT_GATEWAY:SB_EV.
MQTT_SB_ID
Parâmetro de saída associado ao bloco de função MQTT_GATEWAY:SB_ID.
MQTT_SB_CODE
Parâmetro de saída associado ao bloco de função MQTT_GATEWAY:SB_CODE.
MQTT_PB_EV
Parâmetro de saída associado ao bloco de função MQTT_GATEWAY:PB_EV.
MQTT_PB_ID
Parâmetro de saída associado ao bloco de função MQTT_GATEWAY:PB_ID.
MQTT_PB_CODE
Parâmetro de saída associado ao bloco de função MQTT_GATEWAY:PB_CODE.
MQTT_RT_EV
Parâmetro de saída associado ao bloco de função MQTT_GATEWAY:RT_EV.
MQTT_RT_CHG
Parâmetro de saída associado ao bloco de função MQTT_GATEWAY:RT_CHG.
MQTT_RT_ID
Parâmetro de saída associado ao bloco de função MQTT_GATEWAY:RT_ID.
MQTT_RT_CODE
Parâmetro de saída associado ao bloco de função MQTT_GATEWAY:RT_CODE.
MQTT_CEL_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 blocos MODEM_CONN, U3G_CFG, RNB_CFG .
Exemplo
Base de variáveis globais da aplicação
Nome |
Tipo |
Endereço |
V. Ini. |
Descrição |
BIT_MDB |
BOOL |
%MX0 |
FALSE |
Variavel BOOL para escrita no device MODBUS |
BIT_MQTT |
BOOL |
%MX1 |
FALSE |
Variavel BOOL para escrita no broker MQTT |
HUMID_RD |
INT |
%MW0 |
0 |
Variavel INT para leitura MQTT e escrita MDB: UMIDADE = 0 A 100 % |
HUMID_WR |
INT |
%MW1 |
0 |
Variavel INT para escrita MQTT e leitura MDB: UMIDADE = 0 A 100 % |
TEMP_RD |
REAL |
%MD2 |
0.0 |
Variavel REAL para leitura MQTT e escrita MDB: TEMPERATURA = -20,00 A 80,00 oC |
TEMP_WR |
REAL |
%MD4 |
0.0 |
Variavel REAL para escrita MQTT e leitura MDB: TEMPERATURA = -20,00 A 80,00 oC |
Declaração de variáveis
Nome |
Classe |
Tipo |
Dimensão |
Valor Inicial |
Descrição |
|---|---|---|---|---|---|
START |
Local |
BOOL |
FALSE |
Inicia operação do bloco principal |
|
PUB_BIT_NOW |
Local |
BOOL |
FALSE |
Forca publicação do BIT_WR instantaneamente |
|
MQTT_CONNECTED |
Local |
BOOL |
FALSE |
Sinaliza que equipamento conectado ao broker |
|
BIT_MDB |
Externa |
BOOL |
FALSE |
Variavel BOOL para escrita no device MODBUS |
|
BIT_MQTT |
Externa |
BOOL |
FALSE |
Variavel BOOL para escrita no broker MQTT |
|
BRIDGE_RESULT |
Local |
UINT |
0 |
Resultado da conexão com broker MQTT |
|
SIG_QLTY |
Local |
USINT |
0 |
Qualidade do sinal da rede 3G |
|
MDB_COUNT |
Local |
INT |
0 |
Contador de ciclos de escrita no device modbus |
|
RD_ID |
Local |
INT |
-1 |
Ultimo codigo associado ao ultimo ciclo de leitura |
|
MQTT_COUNT |
Local |
INT |
0 |
Contador de ciclos de escrita no broker MQTT |
|
WR_ID |
Local |
INT |
-1 |
Ultimo codigo associado ao ultimo ciclo de escrita |
|
CEL_PIN |
Local |
STRING |
:4 |
‘’ |
PIN do SIM Card da rede celular |
CEL_APN |
Local |
STRING |
:31 |
‘java.claro.com.br’ |
APN da rede celular |
CEL_USER |
Local |
STRING |
:15 |
‘claro’ |
Usuario da rede celular |
CEL_PASS |
Local |
STRING |
:10 |
‘claro’ |
Senha da rede celular |
MQTT_MSG |
Local |
STRING |
:140 |
Mensagem de desconexão (WILL Message) |
|
MQTT_TOPIC |
Local |
STRING |
:80 |
Nome do tópico associado a mensagem de desconexão (WILL Message) |
|
MQTT_USER |
Local |
STRING |
:20 |
‘ze’ |
Nome do usuário para login no Broker MQTT |
MQTT_PASS |
Local |
STRING |
:16 |
‘oi’ |
Senha de acesso para login no Broker MQTT |
BRK_IP |
Local |
STRING |
:40 |
‘50.16.187.132’ |
Endereço IP do Broker |
BRK_PORT |
Local |
STRING |
:6 |
‘1883’ |
Porta de escuta do broker |
MDB_CACHE |
Local |
INT |
[0..49] |
0 |
Cache para escrita de variaveis modbus |
MQTT_CACHE |
Local |
INT |
[0..49] |
0 |
Cache de tópicos a serem enviados ao broker |
BRIDGE |
Local |
HILS.MQTT_MDB_CEL_BRIDGE |
Instancia do bloco BRIDGE MQTT-MDB |
Código ST
//------------------------------------------------------------------------------
// Instancia do bloco MQTT_MDB_CEL_BRIDGE
//
// Uma vez carregada a aplicação, ative a variavel START para habilitar a
// operação da bridge MQTT-MDB-CEL.
//------------------------------------------------------------------------------
BRIDGE( // MQTT_MDB_CEL_BRIDGE
START := START, // [BOOL] Habilita operação do bloco
MQTT_DMAP_ID := 1, // [USINT] Id do mapeamento de dados associado ao bloco
//MQTT_DEC_SEP := , // [USINT] Separador de casas decimais no processo de conversao dos valores reais para string (default = ponto)
//MQTT_FLAGS := , // [USINT] Flags de conexão com o broker
MQTT_KEEP_ALIVE := 300, // [UINT] Tempo em segundos para o broker validadar a conexão
//MDB_EN_SCAN :=, // [BOOL] Habilita o polling de dados do equipamento remoto
//MDB_SKIP_RD :=, // [BOOL] Quando habilitada imediatamente após um evento BRT_EV cancela a transação de leitura corrente
MDB_COMM_SRC := HILS.COM2_PORT_ID, // [USINT] Canal de comunicação utilizado para acesso equipamento Modbus (ex: COM1_PORT_ID)
MDB_DMAP_ID := 2, // [USINT] Id do mapeamento de dados associado ao bloco MQTT
MDB_POLL_TME := T#2s, // [TIME] Tempo entre um ciclo de comunicação
MDB_PACK_TME := T#500ms, // [TIME] Tempo entre pacotes de comunicação
MDB_CACHE := MDB_CACHE, // [INT] Cache de items a serem enviados ao equipamento remoto (deve ser fornecido um vetor de tipos INT[50])
MQTT_CACHE := MQTT_CACHE, // [INT] Cache de tópicos a serem enviados ao broker (deve ser fornecido um vetor de tipos INT)
CEL_PIN := CEL_PIN, // [STRING] PIN do SIM CARD
CEL_APN := CEL_APN, // [STRING] APN da operadora do chip de rede celular
CEL_USER := CEL_USER, // [STRING] Usuário da operadora de rede celular
CEL_PASSW := CEL_PASS, // [STRING] Senha da operadora de rede celular
//CEL_SIMSTK := , // [BOOL] Chip Multioperadora: habilita SIM ToolKit (default: false)
CEL_IP := BRK_IP, // [STRING] Endereço IP do broker a ser acessado
CEL_PORT := BRK_PORT, // [STRING] Porta de escuta do broker
MQTT_USER := MQTT_USER, // [STRING] Nome do usuário/login de autenticação do broker mqtt (opcional)
MQTT_PASSW := MQTT_PASS, // [STRING] enha de acesso do login de autenticação do broker mqtt (opcional)
MQTT_W_TOPIC := MQTT_TOPIC, // [STRING] Nome do tópico associado a mensagem de desconexão (string:80)
MQTT_W_MSG := MQTT_MSG // [STRING] Mensagem de desconexão (string:140)
);
// Lê a qualidade do sinal da Rede Celular 3G (0..100%)
SIG_QLTY := HILS.GET_SYSVAR(930);
// Status de conexão do equipamento ao broker
BRIDGE_RESULT := BRIDGE.MQTT_CEL_RESULT;
IF ((BRIDGE_RESULT = 0) AND (START = TRUE)) THEN
MQTT_CONNECTED := TRUE;
ELSE
MQTT_CONNECTED := FALSE;
END_IF;
// Contabiliza ciclos de escritas no device modbus
IF BRIDGE.MDB_WR_EV THEN
IF (BRIDGE.MDB_WR_CODE = 0) THEN
MDB_COUNT := MDB_COUNT + 1; // contador
END_IF;
END_IF;
// Contabiliza ciclos de dados piblicados no broker MQTT
IF BRIDGE.MQTT_PB_EV THEN
IF (BRIDGE.MQTT_PB_CODE = 0) THEN
MQTT_COUNT := MQTT_COUNT + 1; // contador
END_IF;
END_IF;
// Força a publicação do BIT_MQTT e BIT_MDB quando PUB_BIT_NOW = TRUE
IF (PUB_BIT_NOW) THEN
// publica topico 1 (bit) no broker mqtt
HILS.COMM_NOTIFY_ITEM(
1, // ID [INT] = ID do ITEM associado ao canal de mapeameto 1
MQTT_CACHE // CACHE [] = Cache do canal de mapeamento 1
);
// escreve variavel modbus 1 (coil 5) no device modbus
HILS.COMM_NOTIFY_ITEM(
1, // ID [INT] = ID do ITEM associado ao canal de mapeameto 1
MDB_CACHE // CACHE [] = Cache do canal de mapeamento 1
);
PUB_BIT_NOW := FALSE;
BIT_MDB := NOT BIT_MDB; // toggle bit
BIT_MQTT := NOT BIT_MQTT; // toggle bit
END_IF;