Comunicando Arduino com ScadaBR

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.

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:

• 1 Arduino UNO + Cabo USB AB;
• 1 Led verde 5mm difuso;
• 1 Resistor 330 Ω 1/4 W
• 1 Protoboard

 

MONTAGEM FÍSICA (HARDWARE):

 

 

 

 

 

 

 

 

 

 

 

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.

enum

{
ESTADO_LED,
HOLDING_REGS_SIZE
};

unsigned int holdingRegs[HOLDING_REGS_SIZE];

 

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().

void setup()

{

modbus_configure(&amp;Serial, 9600, SERIAL_8N1, 1, 2, HOLDING_REGS_SIZE, holdingRegs);

modbus_update_comms(9600, SERIAL_8N1, 1);

pinMode(LED, OUTPUT);

}

 

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).

void loop()

{

modbus_update();

digitalWrite(LED, holdingRegs[ESTADO_LED]);

}

 

 

DESENVOLVIMENTO DA ESTRUTURA DE CONTROLE NO SCADABR:

Neste momento iremos abordar a criação da estrutura no ScadaBR para que a interação do mesmo com o Arduino 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.

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.

 

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.

 

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.

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.

 

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).

 

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.

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

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

 

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.

 

Autor: Daniel Madeira

Engenheiro Eletricista – UFES (Universidade Federal do Espírito Santo)
Técnico em eletrotécnica – IFES (Instituto Federal do Espírito Santo)

Categorias
Novidades
Sem Comentários

Enviar Resposta

*

*

Responda o cálculo abaixo: *

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