Comunicação ScadaBR Arduino

No artigo anterior, foi possível apresentar para o leitor uma ferramenta chamada ScadaBR. Esta consiste em um sistema de supervisão e controle open-source que pode ser utilizado na realização de uma infinidade de projetos de automação, desde aplicações didáticas e simples, até as mais complexas, existentes, por exemplo, em nível industrial. Agora no post “Comunicação ScadaBR Arduino” vamos aprender um pouco mais.

Desta maneira, trazemos para vocês um conteúdo voltado para a utilização do ScadaBR juntamente com Arduino UNO, onde será possível apresentar o princípio de funcionamento deste sistema SCADA e também desenvolver algumas aplicações bem interessantes de automação.

O objetivo deste artigo consiste em demonstrar os procedimentos necessários para estabelecer a comunicação entre o Arduino UNO e o ScadaBR através do protocolo Modbus RTU Serial.

 

Produtos Utilizados no Projeto

 

Montagem Física (Hardware):

Esquemático Comunicação ScadaBR Arduino

 

Desenvolvimento do Código para o Arduino

 Neste momento serão demonstrados todos os passos para o desenvolvimento do código que deve ser inserido no Arduino UNO para que a conexão entre o mesmo e o ScadaBR possa ser estabelecida. O código pronto para utilização pode ser adquirido aqui .

O primeiro passo para o estabelecimento da comunicação entre os dois elementos consiste em incluir a biblioteca adequada para a utilização do protocolo Modbus RTU Serial no código do Arduino UNO. Esta pode ser encontrada neste link aqui (baixar o arquivo SimpleModbusSlaveV10.zip).

https://drive.google.com/drive/folders/0B0B286tJkafVYnBhNGo4N3poQ2c?tid=0B0B286tJkafVSENVcU1RQVBfSzg

OBS: Caso o leitor não tenha proximidade com a biblioteca citada, pode-se produzir o código que será inserido no Arduino UNO a partir do código-exemplo disponibilizado pelo desenvolvedor, no entanto, deve-se alterar o mesmo (estas alterações serão explicadas no decorrer deste artigo) para definir alguns parâmetros da estrutura do protocolo utilizado, modos de operação dos pinos digitais e os registradores responsáveis por conter as informações do processo.

 

O desenvolvimento do código começa através da inclusão da biblioteca citada anteriormente, por meio da sentença #include.

#include <SimpleModbusSlave.h>

Em seguida utiliza-se o uso da diretiva #define para associarmos a palavra LED ao pino 9 do Arduino UNO.

#define  LED 9

 

Posteriormente, pode-se notar que no código-exemplo existe um bloco chamado enum, que por sua vez, consiste no espaço onde serão declarados os registradores que conterão os dados utilizados na leitura ou no acionamento de dispositivos. Estes registradores são conhecidos como Registradores Holding e são os elementos de maior relevância no protocolo Modbus RTU Serial.

Portanto, neste ponto, modifica-se o código original para que seja criado apenas um Registrador Holding, chamado ESTADO_LED (que será utilizado para manipular o led utilizado). Deve-se ressaltar que as sentenças que contém a declaração HOLDING_REGS_SIZE (informação utilizada pela biblioteca para identificar a quantidade de Registradores Holding que estão sendo utilizados) devem permanecer no código, como apresentado a seguir.

 

Na sequência, deve-se manipular a função setup() para definir as configurações iniciais do código a ser inserido no Arduino UNO. Note que no código original existem duas funções responsáveis por determinar os parâmetros necessários para o estabelecimento da conexão via comunicação serial entre o Arduino UNO e o ScadaBR utilizando o protocolo Modbus RTU Serial, estas são: modbus_configure() e modbus_update_comms().

 

Os parâmetros mais importantes da função modbus_configure() são: o segundo, o terceiro e o quarto que dizem respeito à taxa de transmissão de dados (9600), o formato do pacote (SERIAL_8N1 – 8 bits de dados + 1 bit de parada)  utilizado no protocolo Modbus e a identificação do elemento (como aqui está sendo utilizado um único elemento, no caso o Arduino UNO, este valor deve ser 1), respectivamente. Estes parâmetros citados são exatamente os três parâmetros existentes na função modbus_update_comms().

Mais adiante será possível notar que estes parâmetros devem estar em conformidade com as configurações do ScadaBR.

Finalmente, deve-se declarar o modo de operação do pino do Arduino UNO que será utilizado, portanto, determina-se o pino 9 (identificado por meio da palavra LED) como sendo uma saída digital através da função pinMode().

 

O conteúdo da função loop() começa com a função modbus_update(), utilizada para a atualização dos valores dos registradores citados anteriormente.

Por último, temos a função digitalWrite(), responsável por acionar o led  (observe que o valor utilizado para definir o estado do led está contido no Registrador Holding ESTADO_LED, que por sua vez será preenchido dentro do ScadaBR).

 

Desenvolvimento da Estrutura de Controle no ScadaBR

Neste momento iremos abordar a criação da estrutura no ScadaBR Arduino para que a interação do mesmo com o UNO possa ser realizada.

O primeiro passo neste ponto consiste fazer com que o ScadaBR identifique o elemento com o qual irá ser conectado, sendo assim, deve-se criar uma instância chamada Data source, cuja função é definir onde está o dispositivo externo e os parâmetros do tipo de comunicação utilizada.

Para criar um Data source deve-se clicar no ícone correspondente, localizado na barra de ferramentas do ScadaBR.

Barra de ferramentas do ScadaBR

 

Na tela de criação dos Data sources, deve-se estabelecer qual tipo de comunicação será realizada entre os dois elementos, portanto, como deseja-se utilizar o protocolo Modbus através da comunicação serial, basta selecionar a opção Modbus Serial.

 

Seleção da Comunicação do ScadaBR

 

Posteriormente, deve-se fornecer algumas informações para o ScadaBR visando a identificação do dispositivo e a definição do tempo em que os dados serão atualizados no ScadaBR (esta informação é muito importante, sendo assim, torna-se fundamental que o leitor tenha conhecimento da aplicação que está desenvolvendo para que a escolha deste parâmetro resulte em um funcionamento eficaz do projeto).

Além destas configurações, deve-se especificar também os parâmetros relativos à comunicação, como por exemplo: a porta COM utilizada (aquela em que está conectado o Arduino UNO), a taxa de transmissão utilizada (9600 bps) e a quantidade de bits de dados e de parada. Note que esta configuração é exatamente a que foi comentada no código do Arduino UNO.

Área de Configuração ScadaBR

 

Para conferir se o Arduino UNO foi encontrado, basta pesquisar a existência de um nó conforme a figura abaixo. Após este procedimento, deve-se salvar o Data source criado.

Pesquisa por Nó ScadaBR

O próximo passo é inserir os Registradores Holding que foram declarados no código inserido no Arduino UNO anteriormente, no ScadaBR. Este procedimento pode ser feito através da criação dos chamados Data points e para isso é necessário clicar no ícone apresentado na figura abaixo.

Data points ScadaBR

 

Primeiramente, é necessário nomear o Data point recém criado e em seguida definir três campos fundamentais: o primeiro é o Faixa do registro, onde a opção a ser selecionada deve ser Registrador Holding, em seguida, o campo Tipo de dados modbus deve ser determinado como Binário e por último, o campo Offset (este campo informa ao ScadaBR qual dos Registradores Holding será escrito ou lido, de modo que, o número a ser utilizado vai de acordo com a ordem de escrita dos Registradores Holding no código do Arduino UNO, note que, neste caso, existe apenas um elemento, logo, como a ordem começa a ser contada a partir do 0 (zero), este é o número a ser inserido).

Configuração Data points ScadaBR

 

A figura a seguir mostra como os Data points estão organizados os após a criação realizada anteriormente. Neste momento, deve-se habilitar o Data point clicando no ícone adequado, conforme apresentado na figura abaixo.

Ativação Data Point ScadaBR

 

Neste momento o leitor deve acessar a Watch list para conferir se o Data Point em questão foi, de fato, criado.

ScadaBR Watch List

 

Em seguida deve-se clicar na seta para visualizar o estado do Data point criado.

Seleção Data Point ScadaBr Arduino

 

Observe, que ao clicar no ícone localizado à esquerda do Data Point é possível alterar o estado do mesmo, isto é, neste caso, pode-se colocar a saída digital em nível alto ou nível baixo.

Este foi mais um conteúdo que preparamos com bastante cuidado para você. Esperamos que tenha gostado deste artigo e lembre-se de deixar suas dúvidas, críticas e sugestões nos comentários abaixo.

Categorias
ScadaBR

Engenheiro eletricista graduado com ênfase em Controle e Automação pela Universidade Federal do Espírito Santo - UFES e Técnico em Eletrotécnica pelo Instituto Federal do Espírito Santo - IFES. Parceiro do site UsinaInfo.
3 Número de Comentários
  • Róbson Brum Martins
    28 março 2018 at 19:54
    Deixe seu Comentário

    Boa tarde, achei o procedimento exelente.

  • Gabriel araujo
    20 maio 2018 at 19:15
    Deixe seu Comentário

    Daniel, tive um problema na linha 05:

    05 – “modbus_configure(&Serial, 9600, SERIAL_8N1, 1, 2, HOLDING_REGS_SIZE, holdingRegs);”

    Falando que o “amp” não tinha sido declarado, pesquisei e o que achei foi que o modbus_configure() não tinha o “amp;”, era dessa forma:

    – “modbus_configure(&Serial, 9600, SERIAL_8N1, 1, 2, HOLDING_REGS_SIZE, holdingRegs);”, testei e copilou normal.

    Isso é algum erro de sintaxe, e quando tirei deu certo por acaso, ou esse “amp” não existe mesmo?

    • Equipe Usinainfo
      30 maio 2018 at 13:02
      Deixe seu Comentário

      Olá Gabriel!
      Pedimos desculpas pelo ocorrido e notificamos que já alteramos o código, obrigado.
      Acreditamos que tenha sido algum problema ocorrido durante a transferência do código para site.

    Deixe seu Comentário

    *

    *

    Sobre nós

    Hoje a Usinainfo é um dos maiores ecommerces de Ferramentas, Peças para Eletrônica, Componentes Eletrônicos, Sensores e Arduino do Brasil, contando com uma grande diversidade de produtos na linha de eletrônica.

    Sugestões

    Artigos Relacionados