LR_MDB_BDG_RAK3172
Este bloco implementa uma bridge de comunicação entre os procotolos MODBUS e LORA.
permitindo subscrever e publicar menagens em uma conexão LORA. Tópicos podem ser automaticamente enviados baseado em critérios de tempo ou de alteração de valores.
Bloco
LR_MDB_BDG_RAK3172
+-----------------------------+
BOOL ----|START MDB_ITEM_ID|---- INT
| |
BOOL ----|MDB_EN_SCAN LORA_TOPIC_ID|---- INT
| |
BOOL ----|MDB_SKIP_RD MDB_BRT_EV|---- BOOL
| |
USINT ----|MDB_MAP_ID MDB_END_CYC|---- BOOL
| |
USINT ----|MDB_COMM_SRC MDB_CHG_EV|---- BOOL
| |
TIME ----|MDB_IPOLL_TME MDB_RD_EV|---- BOOL
| |
TIME ----|MDB_IPACK_TME MDB_RD_CHG|---- BOOL
| |
USINT ----|LORA_MODE MDB_RD_ID|---- INT
| |
USINT ----|LORA_MAP_ID MDB_RD_CID|---- INT
| |
USINT ----|LORA_COMM_SRC MDB_RD_CODE|---- INT
| |
USINT ----|LORA_DEC_SEP MDB_WR_EV|---- BOOL
| |
| MDB_WR_ID|---- INT
| |
| MDB_WR_CID|---- INT
| |
| MDB_WR_CODE|---- INT
| |
| LORA_CONN|---- BOOL
| |
| LORA_CHG_EV|---- BOOL
| |
| LORA_RT_EV|---- BOOL
| |
| LORA_RT_CHG|---- BOOL
| |
| LORA_RT_ID|---- INT
| |
| LORA_RT_CODE|---- INT
| |
| LORA_PB_EV|---- BOOL
| |
| LORA_PB_ID|---- INT
| |
| LORA_PB_CODE|---- INT
| |
STRING ----|LORA_DEV_EUI --------------- |----
| |
STRING ----|LORA_APP_EUI --------------- |----
| |
STRING ----|LORA_APP_KEY --------------- |----
| |
INT ----|MDB_CACHE ------------------ |----
| |
INT ----|LORA_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 LORA. Em seguida, no canal de mapeamento criado, definir os dados a serem obtidos do canal LORA e os dados a serem enviados. Note que todos os dados criados devem estar associados a variáveis globais exportadas.
Parâmetros
Nome |
Classe |
Tipo |
Dim. |
V. Ini. |
Descrição |
START |
Entrada |
BOOL |
FALSE |
Inicia operação do gateway |
|
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_MAP_ID |
Entrada |
USINT |
0 |
Id do mapeamento de dados associado ao protocolo MODBUS |
|
MDB_COMM_SRC |
Entrada |
USINT |
0 |
Canal de comunicação utilizado para acesso equipamento Modbus (ex: COM1_PORT_ID) |
|
MDB_IPOLL_TME |
Entrada |
TIME |
T#20ms |
Tempo entre um ciclo de comunicação do device MODBUS |
|
MDB_IPACK_TME |
Entrada |
TIME |
T#10ms |
Tempo entre pacotes de comunicação do device MODBUS |
|
LORA_MODE |
Entrada |
USINT |
0 |
Modo de operação do Lora: OTAA[1] ou ABP[2] |
|
LORA_MAP_ID |
Entrada |
USINT |
0 |
Id do mapeamento de dados associado ao protocolo Lora |
|
LORA_COMM_SRC |
Entrada |
USINT |
0 |
Canal de comunicação utilizado paraa interface LORA |
|
LORA_DEC_SEP |
Entrada |
USINT |
46 |
Separador de casas decimais no processo de conversao dos valores reais para string (default = ponto) |
|
LORA_DEV_EUI |
Entrada/Saída |
STRING |
:* |
Device EUI do módulo LORA |
|
LORA_APP_EUI |
Entrada/Saída |
STRING |
:* |
Application EUI da aplicação associada ao canal LORA |
|
LORA_APP_KEY |
Entrada/Saída |
STRING |
:* |
Chave da aplicação associada ao canal LORA |
|
MDB_CACHE |
Entrada/Saída |
INT |
[*] |
0 |
Cache de tópicos a serem enviados para o equipamento MODBUS |
LORA_CACHE |
Entrada/Saída |
INT |
[*] |
0 |
Cache de tópicos a serem enviados para o broker |
MDB_ITEM_ID |
Saída |
INT |
-1 |
Id do item enviado para o equipamento remoto por alteração |
|
LORA_TOPIC_ID |
Saída |
INT |
-1 |
Id do topico publicado no Lora por alteração |
|
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_CHG_EV |
Saída |
BOOL |
FALSE |
Indica que o Topico com ID igual a TOPIC_ID foi enviado enviado para o canal MODBUS por alteracao de valor |
|
MDB_RD_EV |
Saída |
BOOL |
FALSE |
Indica fim do processo de aquisição de um item no equipamento remoto |
|
MDB_RD_CHG |
Saída |
BOOL |
FALSE |
Indica que a variavel adquirida é diferente do valor anterior presente na base global |
|
MDB_RD_ID |
Saída |
INT |
-1 |
Id do item da última aquisição do equipamento remoto |
|
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 |
|
MDB_WR_EV |
Saída |
BOOL |
FALSE |
Indica fim do processo de escrita de um item no equipamento remoto |
|
MDB_WR_ID |
Saída |
INT |
-1 |
Id do item da última escrita no equipamento remoto |
|
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 |
|
LORA_CONN |
Saída |
BOOL |
FALSE |
Indica que o equipamento esta conectado a rede LORA |
|
LORA_CHG_EV |
Saída |
BOOL |
FALSE |
Indica que o item com ID igual a ITEM_ID foi publicado no LORA por alteracao de valor |
|
LORA_RT_EV |
Saída |
BOOL |
FALSE |
Indica fim do processo de recepção de um tópico do |
|
LORA_RT_CHG |
Saída |
BOOL |
FALSE |
Indica que o tópico recebido é diferente do valor anterior presente na base global |
|
LORA_RT_ID |
Saída |
INT |
0 |
Porta associada ao pacote recebido pelo LORA |
|
LORA_RT_CODE |
Saída |
INT |
0 |
Código de retorno da ultima recepção de tópico do LORA |
|
LORA_PB_EV |
Saída |
BOOL |
FALSE |
Indica fim do processo de escrita de um item no LORA |
|
LORA_PB_ID |
Saída |
INT |
0 |
ID do item que foi transmitido |
|
LORA_PB_CODE |
Saída |
INT |
0 |
Código de retorno da ultima escrita no LORA |
START
Entrada de controle do bloco. Quando inativa o bloco se mantenhem desconectado do broker. Neste cenário os tópicos não serão publicados e nem mantidos em cache. Quando ativada esta entrada, o bloco estabelece conexão com o broker especificado, estando apto e subscrever os tópicos a serem recebidos do broker e aguardando um tópico do broker ou um critério para publicar um tópico para o broker.
MDB_MAP_ID
Esta entrada define qual o canal de remapeamento esta associado ao gateway MODBUS. Note que este canal deve ser configurado com o protocolo MODBUS ou o bloco irá gerar um código de erro indicando que o recurso não foi encontrado.
MDB_COMM_SRC
Identificador do canal de comunicação a ser utilizado para acesso aos equipamentos remotos MODBUS. Este canal de comunicação utilizado é especificado por um identificador (valor númerico) conforme indicado na tabela a seguir:
Nome |
Ident. |
Descrição |
HILS.COM1_PORT_ID |
0 |
Canal serial COM1 |
HILS.COM2_PORT_ID |
1 |
Canal serial COM2 |
HILS.COM3_PORT_ID |
2 |
Canal serial COM3 |
HILS.COM4_PORT_ID |
3 |
Canal serial COM4 |
HILS.COM5_PORT_ID |
4 |
Canal serial COM5 |
HILS.COM6_PORT_ID |
5 |
Canal serial COM6 |
HILS.COM7_PORT_ID |
6 |
Canal serial COM7 |
HILS.COM8_PORT_ID |
7 |
Canal serial COM8 |
HILS.SOCK0_PORT_ID |
8 |
Controlador Ethernet 1: Socket 0 |
HILS.SOCK1_PORT_ID |
9 |
Controlador Ethernet 1: Socket 1 |
HILS.SOCK2_PORT_ID |
10 |
Controlador Ethernet 1: Socket 2 |
HILS.SOCK3_PORT_ID |
11 |
Controlador Ethernet 1: Socket 3 |
HILS.SOCK4_PORT_ID |
12 |
Controlador Ethernet 1: Socket 4 |
HILS.SOCK5_PORT_ID |
13 |
Controlador Ethernet 1: Socket 5 |
HILS.SOCK6_PORT_ID |
14 |
Controlador Ethernet 1: Socket 6 |
HILS.SOCK7_PORT_ID |
15 |
Controlador Ethernet 1: Socket 7 |
HILS.ETH2_SOCK0_PORT_ID |
16 |
Controlador Ethernet 2: Socket 0 |
HILS.ETH2_SOCK1_PORT_ID |
17 |
Controlador Ethernet 2: Socket 1 |
HILS.ETH2_SOCK2_PORT_ID |
18 |
Controlador Ethernet 2: Socket 2 |
HILS.ETH2_SOCK3_PORT_ID |
19 |
Controlador Ethernet 2: Socket 3 |
HILS.ETH2_SOCK4_PORT_ID |
20 |
Controlador Ethernet 2: Socket 4 |
HILS.ETH2_SOCK5_PORT_ID |
21 |
Controlador Ethernet 2: Socket 5 |
HILS.ETH2_SOCK6_PORT_ID |
22 |
Controlador Ethernet 2: Socket 6 |
HILS.ETH2_SOCK7_PORT_ID |
23 |
Controlador Ethernet 2: Socket 7 |
Este texto pode ser utilizado como parâmetro pois esta definido no tipo COMM_CHAN_ID disponível na biblioteca HI_STD. |
|
Cada equipamento possui um sub-conjunto dos recursos de comunicação indicados na tabela acima. Para identificar quais recursos estão disponíveis em um dado equipamento, consulte o manual do mesmo. |
IPOLL_TME
Esta entrada define o tempo a ser aquardado sempre que for concluído um ciclo de comunicação modbus. Este ciclo compreende a leitura de todos os items configurados no canal de mapeamento de dados MODBUS associado. O valor default para esta entrada é de 20 ms (T#20ms).
IPACK_TME
Esta entrada define o tempo a ser aquardado sempre que for concluída uma transação de comunicação ou seja a leitura de um bloco modbus.O valor default para esta entrada é de 10 ms (T#10ms).
LORA_MAP_ID
Esta entrada define qual o canal de remapeamento esta associado ao gateway LORA. Note que este canal deve ser configurado com o protocolo LORA ou o bloco irá gerar um código de erro indicando que o recurso não foi encontrado.
LORA_COMM_SRC
Identificador do socket ethernet a ser utilizado para acesso ao broker. Este canal de comunicação utilizado é especificado por um identificador (valor númerico) conforme indicado na tabela a seguir:
Nome |
Ident. |
Descrição |
HILS.COM1_PORT_ID |
0 |
Canal serial COM1 |
HILS.COM2_PORT_ID |
1 |
Canal serial COM2 |
HILS.COM3_PORT_ID |
2 |
Canal serial COM3 |
HILS.COM4_PORT_ID |
3 |
Canal serial COM4 |
HILS.COM5_PORT_ID |
4 |
Canal serial COM5 |
HILS.COM6_PORT_ID |
5 |
Canal serial COM6 |
HILS.COM7_PORT_ID |
6 |
Canal serial COM7 |
HILS.COM8_PORT_ID |
7 |
Canal serial COM8 |
HILS.SOCK0_PORT_ID |
8 |
Controlador Ethernet 1: Socket 0 |
HILS.SOCK1_PORT_ID |
9 |
Controlador Ethernet 1: Socket 1 |
HILS.SOCK2_PORT_ID |
10 |
Controlador Ethernet 1: Socket 2 |
HILS.SOCK3_PORT_ID |
11 |
Controlador Ethernet 1: Socket 3 |
HILS.SOCK4_PORT_ID |
12 |
Controlador Ethernet 1: Socket 4 |
HILS.SOCK5_PORT_ID |
13 |
Controlador Ethernet 1: Socket 5 |
HILS.SOCK6_PORT_ID |
14 |
Controlador Ethernet 1: Socket 6 |
HILS.SOCK7_PORT_ID |
15 |
Controlador Ethernet 1: Socket 7 |
HILS.ETH2_SOCK0_PORT_ID |
16 |
Controlador Ethernet 2: Socket 0 |
HILS.ETH2_SOCK1_PORT_ID |
17 |
Controlador Ethernet 2: Socket 1 |
HILS.ETH2_SOCK2_PORT_ID |
18 |
Controlador Ethernet 2: Socket 2 |
HILS.ETH2_SOCK3_PORT_ID |
19 |
Controlador Ethernet 2: Socket 3 |
HILS.ETH2_SOCK4_PORT_ID |
20 |
Controlador Ethernet 2: Socket 4 |
HILS.ETH2_SOCK5_PORT_ID |
21 |
Controlador Ethernet 2: Socket 5 |
HILS.ETH2_SOCK6_PORT_ID |
22 |
Controlador Ethernet 2: Socket 6 |
HILS.ETH2_SOCK7_PORT_ID |
23 |
Controlador Ethernet 2: Socket 7 |
Este texto pode ser utilizado como parâmetro pois esta definido no tipo COMM_CHAN_ID disponível na biblioteca HI_STD. |
|
Cada equipamento possui um sub-conjunto dos recursos de comunicação indicados na tabela acima. Para identificar quais recursos estão disponíveis em um dado equipamento, consulte o manual do mesmo. |
Importante
Para a utilização desse bloco, o canal de comunicação associado ao LORA deve ser por o firmware automaticamente associa esta porta ao módulo LORA.
DEC_SEP
Esta entrada é utilizada caso seja necessário alterar o separador de casas decimais no processo de conversão de variáveis reais. O valor default utilizado na conversão é o ponto (ex: 2.45). Caso necessário modificar esta valor especifique nesta entrada o código ASCII do caracter a ser utilizado como separador de casas decimais.
Por exemplo, para gerar valores separados com vírgula (Ex: 2,45) especifique o valor 44 (código ASCII do caracter vírgula) nesta entrada.
DEV_EUI
Esta string especifica o Id do módulo LORA utilizado. O tamanho para esta string é de 16 caracteres.
APP_EUI
Esta string especifica o Id da aplicação associada ao canal LORA. O tamanho para esta string é de 16 caracteres.
APP_KEY
Esta string especifica a chave da aplicação associada ao canal LORA. O tamanho para esta string é de 32 caracteres.
LORA_CACHE
Este parâmetro fornece para o gateway LORA uma cache onde serão inseridos os ID’s dos itens a serem enviados ao servidor. Um ID representa o valor númerico associado a linha do canal de mapeamento. Cada ID consequentemente mapeia uma variável global da aplicação com um nome de tópico. Esta cache portanto deve ser um vetor de tipos INT com o tamanho definido pela aplicação. Os items a serem publicados para o servidor são inseridos nesta cache através da função COMM_NOTIFY_ITEM. Uma vez inserido um item, o bloco é responsavél por remover este item e publicá-lo no broker assim que possível.
MDB_CACHE
Este parâmetro fornece para o gateway MODBUS uma cache onde serão inseridos os ID’s dos itens a serem enviados para os equipamentos remotos. Um ID representa o valor númerico associado a linha do canal de mapeamento. Cada ID consequentemente mapeia uma variável global da aplicação com um endereço MODBUS remoto. Esta cache portanto deve ser um vetor de tipos INT com o tamanho definido pela aplicação. Os items a serem enviados para os equipamentos remotos são inseridos nesta cache através da função COMM_NOTIFY_ITEM. Uma vez inserido um item, o bloco é responsavél por remover este item e enviá-lo para o equipamento remoto associado.
LORA_CONN
Saída lógica que indica quando ativa que a conexão com o broker foi estabelecida.
MDB_CHG_EV
Saída lógica que gera um pulso (se mantém ativa por em um ciclo de scan da aplicação) para indicar que o processo de recepção de um valor modbus foi finalizado com sucesso, e modificou o valor anterior da variável global associada.
TOPIC_ID
Id do tópico recebido do broker e renviado pelo canal MODBUS por alteração.
LORA_CHG_EV
Saída lógica que gera um pulso (se mantém ativa por em um ciclo de scan da aplicação) para indicar que o processo de recepção de um valor pelo servidor LORA foi finalizado com sucesso, e modificou o valor anterior da variável global associada.
ITEM_ID
Id da variavel recebida do equipamento modbus e renviada pelo gateway LORA para o servidor.
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.
Ver também
Bloco de função COMM_NOTIFY_ITEM para inserir um tópico a ser enviado pelo gateway para o broker.
Bloco de função LR_GATEWAY_RAK3172 para disponibilizar um gateway de comunicação para o protocolo LORA.
Bloco de função MDB_GATEWAY para disponibilizar um gateway de comunicação para o protocolo MODBUS.
Exemplo
Declaração de Variáveis
Nome |
Classe |
Tipo |
Valor Inicial |
Descrição |
|---|---|---|---|---|
GV_ALARME |
Externa |
BOOL |
FALSE |
Alarme de temperatura alta |
GV_SETPOINT |
Externa |
REAL |
20.00 |
Setpoint para alarme |
GV_TEMP |
Externa |
REAL |
25.00 |
Temperatura do processo |
START |
Local |
BOOL |
FALSE |
Flag para habilitar a bridge |
DEV_EUI |
Local |
STRING |
‘0023003454665432’ |
Nome do tópico de WILL |
APP_EUI |
Local |
STRING |
‘34677893AB65EFD0’ |
Mensagem de WILL |
APP_KEY |
Local |
STRING |
‘3445667778899033A4B56657E8F9D0’ |
Usuário de autenticação no broker |
NEW_FROM_MDB |
Local |
INT |
0 |
Dado alterado pelo broker |
NEW_FROM_LORA |
Local |
INT |
0 |
Dado alterado pelo equipamento remoto |
CONNECTED |
Local |
BOOL |
FALSE |
Broker conectado |
MDB_CACHE |
Local |
INT |
0 |
Cache para escrita de variaveis modbus |
LORA_CACHE |
Local |
INT |
0 |
Cache para publicação de tópicos |
BRIDGE |
Local |
LORA_MDB_BRIDGE |
Bride LORA MODBUS |
Código ST
// Este código, após a ativação da entrada START, publica no servidor LORA ciclicamente os
// tópicos definidos no canal de mapeamento 2 e, le ciclicamente os endereços MODBUS
// definidos no canal de mapeamento 1.
// Publica no servidor LORA os tópicos definidos no canal de 2 e envia via para o canal MODBUS
// as variáveis definidas no canal de mapeamento 1.
// Bridge LORA MODBUS
BRIDGE( // LORA_MDB_BRIDGE
START := START, // [BOOL] Inicia operação do gateway
MDB_MAP_ID := 1, // [BOOL] Id do mapeamento de dados associado ao protocolo MODBUS
MDB_COMM_SRC := HILS.COM1_PORT_ID, // [USINT] Canal de comunicação utilizado para acesso equipamento Modbus (ex: COM1_PORT_ID)
//IPOLL_TME := , // [TIME] Tempo entre um ciclo de comunicação
//IPACK_TME := , // [TIME] Tempo entre pacotes de comunicação
LORA_MAP_ID := 2, // [USINT] Id do mapeamento de dados associado ao protocolo MQTT
LORA_COMM_SRC := HILS.COM3_PORT_ID, // [USINT] Canal de comunicação utilizado para acesso ou broker (ex: SOCK1_PORT_ID)
//DEC_SEP := , // [USINT] Separador de casas decimais no processo de conversao dos valores reais para string (default = ponto)
DEV_EUI := DEV_EUI, // [STRING]
APP_EUI := APP_EUI, // [STRING]
APP_KEY := APP_KEY, // [STRING]
MDB_CACHE := MDB_CACHE, // [] Cache de tópicos a serem enviados para o equipamento MODBUS
LORA_CACHE := LORA_CACHE // [] Cache de tópicos a serem enviados para o broker
);
CONNECTED := BRIDGE.LORA_CONN;
IF BRIDGE.MDB_CHG_EV THEN
NEW_FROM_MDB := NEW_FROM_MDB + 1;
END_IF;
IF BRIDGE.LORA_CHG_EV THEN
NEW_FROM_LORA := NEW_FROM_LORA + 1;
END_IF;