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

Clique aqui para baixar a tabela de variáveis

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;