Controlando relés com um Arduino e o ScadaBR

Nos tutoriais anteriores nós demonstramos os procedimentos necessários para realizar a comunicação entre uma placa Arduino e o ScadaBR através do protocolo Modbus nas versões Serial e TCP/IP. Neste tutorial, vamos dar sequência ao desenvolvimento de projetos de automação, no entanto, ao contrário dos conteúdos anteriores, nós iremos ensinar como realizar o acionamento de múltiplas saídas digitais do Arduino por meio do ScadaBR.

[toc]

kit robotica educacional com Arduino ESP ou Microbit

Série Arduino com ScadaBR

Este tutorial faz parte de uma série de tutoriais voltados para o ensino da utilização das placas Arduino em conjunto com o ScadaBR para o desenvolvimento de aplicações de automação. Atualmente, esta série conta com os seguintes tutoriais:


Mãos à obra – Controlando relés com o ScadaBR

Componentes necessários

Montando o projeto

Shield Ethernet W5100 - Sistema de acionamento remoto de relés com HTML
Figura 1 – Hardware utilizado

Programando

#include <SPI.h>
#include <Ethernet.h>
#include <Modbus.h>
#include <ModbusIP.h>

const int RELE1_COIL = 0;
const int RELE2_COIL = 1;
const int RELE3_COIL = 2;
const int RELE4_COIL = 3;

ModbusIP mb;

void setup() 
{
   byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }
   byte ip[] = { 192, 168, 25, 16 }; 
   mb.config(mac,ip);  
   pinMode(2, OUTPUT);
   pinMode(3, OUTPUT);
   pinMode(4, OUTPUT);
   pinMode(5, OUTPUT);
   
   mb.addCoil(RELE1_COIL); 
   mb.addCoil(RELE2_COIL); 
   mb.addCoil(RELE3_COIL); 
   mb.addCoil(RELE4_COIL); 
}
 
void loop() 
{
   mb.task();
   digitalWrite(2, mb.Coil(RELE1_COIL));
   digitalWrite(3, mb.Coil(RELE2_COIL));
   digitalWrite(4, mb.Coil(RELE3_COIL));
   digitalWrite(5, mb.Coil(RELE4_COIL));
}

Configurando o Scadabr

Neste momento, vamos apresentar os procedimentos iniciais que devem ser feitos no ScadaBR para que seja possível realizar a interação entre mesmo e a nossa placa Arduino. Primeiramente, para cumprirmos o objetivo apresentado, devemos fazer com que o ScadaBR identifique o elemento com o qual irá se comunicar. Isto deve ser feito através da criação de um elemento chamado Data source, que por sua vez, será a ponte entre a placa Arduino que estamos utilizando e o ScadaBR.

Data source é a estrutura que permite a comunicação entre o Arduino e o ScadaBR

Figura 2 – Acessando o painel de criação dos Data sources.

 

Em seguida, na criação do Data source, devemos dizer qual tipo de comunicação existirá entre os 2 elementos. Neste tutorial, vamos utilizar o protocolo Modbus IP, portanto basta encontrarmos a opção Modbus IP na lista de Data Sources e clicar no ícone à direita da lista em questão.

Figura 3 – Criando o Data Source do tipo Modbus IP.

 

Em seguida, o ScadaBR irá nos direcionará para uma página, na qual, devemos definir os parâmetros do Data source em questão (lembre-se de que ele é a ponte entre o Arduino UNO e o ScadaBR). Em um primeiro momento, devemos apenas nomear o nosso Data source e também definir o tempo em que os dados serão atualizados (esta informação é muito importante, ou seja, 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).

 

Figura 4 – Definindo as configurações iniciais do Data Source.

 

Além destas configurações, devemos também especificar mais alguns parâmetros relativos à comunicação que será estabelecida, como por exemplo: o endeceço IP previamente configurado no código do Arduino UNO e o tipo de transporte (sugerimos a opção “TCP com manter-vivo” em um primeiro momento. Não há necessidade de alterarmos o campo Porta.

Figura 5 – Configurando a porta para comunicação e o IP do Arduino.

Após a criação e configuração do Data source, devemos criar pequenas estruturas denominadas Data point. Os Data points são os elementos que irão conter os valores relacionados com as entradas e saídas da nossa placa Arduino. Para realizar este procedimento, vamos até a parte inferior da tela e em seguida clicamos no ícone localizado à direita da tabela referente aos Data points.

 

Figura 6 – Tabela dos Data points.

 

Após clicarmos no ícone citado, o ScadaBR nos dará uma janela com algumas opções para serem definidas. Primeiramente, devemos nomear o Data point (neste tutorial, chamamos o mesmo de RELÉ 1). Em seguida, devemos garantir que campo Faixa do registro esteja com a opção Status do Coil selecionada.  Para salvar as configurações feitas, basta clicar no ícone existente na extremidade superior direita da janela.

Figura 7 – Criando um novo Data point.

Em seguida, devemos fazer os mesmos procedimentos para o relé 2, de modo que, desta vez, devemos associar o Offset do Data Point em questão com o valor atribuído no código do Arduino (neste caso, o número 1).

Figura 8 – Criando o segundo Data point.

Em relação aos outros dois relés devemos fazer a mesma coisa, porém, para o relé 3, o campo offset será preenchido com 2 e no caso do relé 4, o campo offset deverá ser preenchido com 3.

A figura a seguir mostra como a tabela onde estão organizados os Data points ficará após a criação realizada anteriormente. Para habilitar o data point desejado basta clicar no círculo vermelho presente no campo Status do Data point criado.

 

Figura 9 – Data points criados.

 

Por fim, devemos ir ao topo da página, salvar as configurações realizadas (procedimento idêntico ao realizado no passo anterior) e habilitar o Data source, clicando novamente no círculo vermelho existente ao lado do ícone de utilizado para salvar.

 

Figura 10 – Salvando as configurações do Data source.

 

Neste momento o leitor deve retornar a watch list (primeiro ícone da esquerda na barra de ferramentas) e no lado esquerdo da interface apresentada, clicar na seta para visualizar o estado do data point criado.

Figura 11 – Lista dos Data points criados.

Após realizarmos o procedimento citado anteriormente, os nossos Data points aparecerão criados no lado direito da interface apresentada em nossa watch list.

Figura 12 – Valor inicial dos Data points.

 

Para acionarmos o relé, basta posicionarmos o mouse sobre o ícone localizado à esquerda do nome do Data point e alterar o valor do mesmo (repare que quando o valor do mesmo for 0 (zero), o relé estará apagado, ao passo que, quando alterarmos para 1(um) o relé será acionado).

Figura 13 – Manipulando um dos Data points.

Veja o resultado do acionamento do relé no ScadaBR.

Figura 14 – Valor final do Data point.

.


Entendendo a fundo

Software

Neste ponto, serão demonstrados todos os passos para o desenvolvimento do código que deve ser inserido no Arduino UNO para que seja possível a realização da comunicação entre o mesmo e o ScadaBR.

– Incluindo as bibliotecas que serão utilizadas

O primeiro passo para o estabelecimento da comunicação entre os dois elementos consiste na inclusão das bibliotecas adequadas para a utilização do protocolo Modbus TCP/IP (desenvolvidas pelo  André Sarmento e estão disponíveis aqui). Além disso, devemos declarar também as bibliotecas responsáveis pelo funcionamento do protocolo de comunicação SPI e pela conectividade da nossa placa Arduino com a rede local.

#include <SPI.h>
#include <Ethernet.h>
#include <Modbus.h>
#include <ModbusIP.h>

– Definindo as estruturas do protocolo Modbus

Posteriormente, devemos determinar as estruturas que serão responsáveis pelo acionamento dos relés. Assim como nos tutoriais anteriores, nós iremos abordar apenas uma entre as demais estruturas existente no protocolo Modbus: os Coils. Estes elementos atuam no armazenamento de valores que podem ser utilizados no acionamento on/off de dispositivos.

Para definirmos os Coils que serão utilizados no acionamento dos relés basta declararmos quatro variáveis do tipo const int e em seguida atribuir um número à cada uma delas de acordo com a quantidade de Coils em uso no projeto (sempre começando com 0).

const int RELE1_COIL = 0;
const int RELE2_COIL = 1;
const int RELE3_COIL = 2; 
const int RELE4_COIL = 3;

– Criando o objeto mb

Antes de prosseguir para a função setup(), deve-se criar um objeto chamado mb para que possamos fazer o controla das estruturas existentes no protocolo Modbus.

ModbusIP mb;

– Definindo as configurações iniciais

Na função Setup() existem algumas linhas de código referentes às definições iniciais do programa. Primeiramente, devemos definir alguns parâmetros relacionados ao protocolo de comunicação utilizado, de modo que, este procedimento é realizado através da definição dos endereços MAC e IP da nossa placa Arduino UNO (na prática, o endereço MAC pode ser qualquer um, desde que seja único na rede, enquanto o endereço IP deve ser um endereço válido em sua rede local). Em seguida, para configurarmos o nosso protocolo Modbus, utilizamos a função config() em conjunto com os valores determinados anteriormente.

Em seguida, utilizamos a função pinMode() para definir os modos de operação dos pinos digitais 2,3,4,5 como saídas digitais e por fim, adicionamos os Coils que serão responsáveis por conter os valores utilizados no acionamento dos relés, através da função addCoil() .

void setup() {
  
 byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED } 
 byte ip[] = { 192, 168, 25, 16 }; 
 mb.config(mac,ip); 
 pinMode(2, OUTPUT);
 pinMode(3, OUTPUT); 
 pinMode(4, OUTPUT); 
 pinMode(5, OUTPUT);
 
 mb.addCoil(RELE1_COIL); 
 mb.addCoil(RELE2_COIL); 
 mb.addCoil(RELE3_COIL); 
 mb.addCoil(RELE4_COIL); 

}

– Realizando o acionamento do led

Dentro da função loop(), utilizamos a função task() para gerenciar a comunicação e a troca de dados entre os dispositivos que estão conectados através do protocolo Modbus. Além da função citada, temos também as funções necessárias para realizar a escrita dos dados referentes ao acionamento dos relés em suas respectivas instâncias Coil.

void loop() 
{
  mb.task();
  
  digitalWrite(2, mb.Coil(RELE1_COIL));
  digitalWrite(3, mb.Coil(RELE2_COIL)); 
  digitalWrite(4, mb.Coil(RELE3_COIL)); 
  digitalWrite(5, mb.Coil(RELE4_COIL));

}

Considerações finais

Neste tutorial, demonstramos como você fazer para acionar um conjunto de relés com Arduino e o ScadaBR, esperamos que você continue nos acompanhando e sinta-se à vontade para nos dar sugestões. Além disso, lembre-se de deixar suas dúvidas nos comentários abaixo.

 

Privacy Preference Center