Scadabr com Arduino via Modbus Serial

Neste tutorial aprenderemos a importância dos sistemas supervisórios e vamos dar início ao desenvolvimento de projetos de automação utilizando as placas Arduino em conjunto com o ScadaBR. Aqui, iremos apresentar alguns conceitos introdutórios para que você entenda todo conteúdo de maneira bastante simples e rápida. Além disso, o foco deste conteúdo será a demonstração dos procedimentos necessários para que seja possível realizar a comunicação entre os dois elementos citados.

[toc]

kit robotica educacional com Arduino ESP ou Microbit

A importância dos sistemas supervisórios

Ao lidar com sistemas automáticos é comum que tenhamos alguma interface para o acompanhamento das variáveis do processo. Seja a temperatura de um cômodo sob o efeito do funcionamento de um ar condicionado ou até mesmo a velocidade de um avião. Com certeza você deve ter em mente vários outros exemplos de sistemas automáticos que precisam de supervisionamento, ou seja, de que alguém acompanhe as variáveis do processo.

 

Exemplo de um sistema supervisório - SCADA
Figura 1 – Exemplo de um sistema supervisório.

Esse supervisionamento pode ter várias motivações, alguns exemplos:

  • Verificar se o sistema está respondendo da forma correta
  • Verificar possíveis desequilíbrios inesperados seja por falha do sistema automático ou por algum problema físico com o equipamento
  • Prevenir acidentes
  • Coleta de informações de produtividade

Para isso, precisamos dos sistemas supervisórios que disponibilizam as informações do processo para que o usuário possa monitorá-las e rastreá-las. Estes sistemas também são chamados de SCADA (Supervisory Control and Data Aquisition).

Sistemas SCADA

Inicialmente, podemos dizer que os sistemas SCADA (Supervisory Control And Data Aquisition) consistem em softwares que são utilizados para supervisionar e controlar atividades ou processos que detenham algum nível de automação. Tais sistemas são encontrados de maneira ampla em aplicações industriais, porém, também estão presentes em outros setores, como por exemplo, geração, transmissão e distribuição de energia elétrica, atividades acadêmicas e até mesmo em projetos automação residencial.

Sala de controle.
Figura 2 – Sala de controle.

A função de supervisão realizada por um sistema SCADA em cima de um determinado processo ocorre por meio da aquisição dos dados referentes ao comportamento das variáveis de controle existentes no mesmo através de sensores. Em contrapartida, a função de controle desempenhada pelo sistema em questão está relacionada ao envio de comandos para os equipamentos e dispositivos presentes no processo citado.

Desta maneira, podemos notar que, para atingir o objetivo de monitorar e controlar sistemas ou processos com eficiência, o software SCADA deve ter a capacidade de comunicar-se com o um grande número de dispositivos, inclusive, produzidos por diversos fabricantes (motivo pelo qual os sistemas SCADA normalmente oferecem uma vasta gama de drivers de comunicação, envolvendo os mais diversos protocolos utilizados, para que a troca de informações possa ocorrer com o mínimo de incompatibilidade possível).

CLP em funcionamento.
Figura 3 – CLP em funcionamento.

Antigamente, os sistemas SCADA eram mais utilizados em conjunto com equipamentos como CLPs e SDCDs, no entanto, com a popularização de sistemas embarcados mais acessíveis e dotados de uma boa capacidade de processamento (como por exemplo, as placas Arduino), os sistemas SCADA estão sendo cada vez mais encontrados em aplicações de automação, das mais variadas vertentes, utilizando os elementos citados.

ScadaBR

ScadaBR é um sistema SCADA cuja função consiste em possibilitar a realização de procedimentos de aquisição de dados e além disso, é composto por ferramentas que auxiliam no desenvolvimento de sistemas supervisórios para monitoramento de processos. É importante ressaltar que o ScadaBR é um recurso disponibilizado em licença Open Source e o mesmo também possui suporte para uma vasta gama de protocolos de comunicação, sendo portanto, compatível com um grande número de hardwares dos mais diversos fabricantes, característica essencial para ser utilizado, por exemplo, em ambientes industriais.

 

Logo do ScadaBR.
Figura 4 – Logo do ScadaBR.

 

Assim como a maioria dos sistemas SCADA, o ScadaBR possui basicamente duas frentes, sendo que uma delas é voltada para o desenvolvimento, onde pode-se produzir interfaces gráficas para que o operador do processo em questão possa interagir de maneira mais eficiente com o mesmo, seja monitorando as variáveis do processo ou até mesmo manipulando-as, enquanto a outra é responsável pela execução da aplicação.

Interface do ScadaBR
Figura 5 – Interface do ScadaBR

Além das tarefas usuais de controle e supervisão, o ScadaBR também disponibiliza várias ferramentas auxiliares como por exemplo:

  • Banco de dados para armazenamento das informações pertinentes.
  • Gerenciador de alarmes e eventos para indicação de falhas ou situações excepcionais.
  • Ferramentas de representação gráfica para apresentação das informações ao longo do tempo, permitindo a realização de análises do comportamento de uma ou mais variáveis.
  • Ambiente de elaboração de Scripts para desenvolvimento de lógicas de automação.
  • Gerador de relatórios para formalizar as informações existentes no projeto

Estas e outras informações, assim como o manual de usuário do ScadaBR podem ser encontradas aqui.

 


Mãos à obra – Estabelecendo a comunicação entre uma placa Arduino e o ScadaBR

Componentes necessários

 

Montando o projeto

Figura 6 – Hardware utilizado.

Programando o Arduino

#include <Modbus.h>;
#include <ModbusSerial.h>;

const int LED_COIL = 0;

ModbusSerial mb;

void setup() 
{
   mb.config(&Serial, 38400, SERIAL_8N1);  
   mb.setSlaveId(10);
   pinMode(5, OUTPUT);
   mb.addCoil(LED_COIL); 

}
 
void loop() 
{
   mb.task();
   digitalWrite(5, mb.Coil(LED_COIL));

}

 

Instalando o ScadaBR

– Realizando o download do ScadaBR

Neste momento serão demonstrados os passos necessários para que o ScadaBR possa ser utilizado. Primeiramente, deve-se efetuar o download do ScadaBR propriamente dito, de modo que, para realizar este procedimento basta clicar na aba downloads presente no site do ScadaBR e em seguida no botão apresentado na figura abaixo, ou caso prefira, basta clicar aqui.

Botão de download do ScadaBR.
Figura 7 – Botão de download do ScadaBR.

 

– Realizando o download do JRE6

Em seguida, deve-se efetuar o download do Java Runtime Environment 6 (lembre-se de escolher a versão compatível com o sistema operacional que está sendo utilizado). Este pode ser encontrado aqui

 

Figura  8 – Download do JRE 6

– Acessando o ScadaBR

Após a realização dos dois itens descritos, pode-se proceder com a instalação de ambos (para evitar erros, recomenda-se que o JRE 6 seja instalado antes do ScadaBR). Por fim, para acessar o ScadaBR basta clicar no ícone do mesmo (ou inicia-lo diretamente ao final da instalação) e inserir “admin” em ambos os campos (User id e Password, note que posteriormente será possível modificar estes parâmetros).

 

Figura 9 – Acessando o ScadaBR.

 

Configurando o Scadabr

– Criando o Data source

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 10 – 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.

Como dito anteriormente utilizaremos o protocolo Modbus através da comunicação serial, portanto basta na lista de seleção encontrar a opção Modbus Serial e clicar no ícone à direita da lista em questão.

Figura 11 – Criando um Data source utilizando o protocolo Modbus Serial.

– Determinando as configurações iniciais do Data source

Em seguida, o ScadaBR irá nos direcionara 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 Micro 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 12 – 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 estabelecida, como por exemplo: a porta COM utilizada (neste artigo utilizamos a porta COM4), e a taxa de transmissão utilizada (38400 bps).

Figura 13 – Configurando a porta e a taxa de transmissão definida no Arduino.

– Localizando o Arduino

Posteriormente,  clicamos no botão pesquisar por nós (existente no quadro Pesquisa de nós modbus) para conferirmos se na porta COM4 existe algum dispositivo utilizando o protocolo Modbus. Como nós definimos no código do Arduino que o endereço do mesmo será o número 10, o ScadaBR encontrará justamente este endereço na lista apresentada na figura abaixo.

Figura 14 – Verificando a presença do Arduino.

– Criando o Data point

Após a criação e configuração do Data source, devemos criar uma pequena estrutura denominada 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 15 – 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 LED). Em devemos definir 2 campos fundamentais: o primeiro é o ID do escravo (aqui devemos colocar o endereço determinado no código do Arduino) e o segundo é a Faixa do registro (neste campo devemos selecionar a opção Status do Coil).  Para salvar as configurações feitas, basta clicar no ícone existente na extremidade superior direita da janela.

Como este é um tutorial introdutório, nós não iremos abordar o funcionamento dos outros campos.

Figura 16 – Criando um novo Data point.

– Habilitando o Data point

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 17 – Data point criado.

– Salvando o Data source

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 18 – Salvando as configurações do Data source.

 

– Ativando o Data point criado

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 19 – Lista de Data points criados.

Após realizarmos o procedimento citado anteriormente, o nosso Data point aparecerá criado no lado direito da interface apresentada em nossa watchlist.

Figura 20 – Valor inicial do Data point.

 

Para acionarmos o led 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 led estará apagado, ao passo que, quando alterarmos para 1(um) o led será acionado).

Figura 21 – Manipulando o Data point.

 

Veja o resultado do acionamento do led no ScadaBR.

Figura 22 – 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 Micro 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 Serial no código do Arduino Micro. As bibliotecas utilizadas neste artigo foram desenvolvidas pelo André Sarmento e estão disponíveis aqui.

#include <Modbus.h>;
#include <ModbusSerial.h>;

– Definindo as estruturas do protocolo Modbus

Posteriormente, devemos determinar a estrutura que será responsável pelo acionamento do led.

Neste tutorial, 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 o Coil que será utilizado no acionamento do led basta declararmos uma variável do tipo const int e em seguida atribuir um número à mesma de acordo com a quantidade de Coils em uso no projeto (como nesta aplicação estamos utilizando somente um Coil, atribuímos o numero 0 (zero) à variável declarada).

const int LED_COIL = 0;

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

ModbusSerial 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 configurar os parâmetros relacionados ao protocolo de comunicação utilizado, de modo que, este procedimento é realizado através da função config(), na qual, o único parâmetro que precisamos alterar é o segundo (que diz respeito à taxa de transmissão utilizada).

Em seguida, utilizamos a função setSlaveId() para definirmos o endereço que será atribuído ao Arduino Micro, neste caso, utilizaremos o endereço 10.

Em seguida, utilizamos a função pinMode() para definir o modo de operação do pino digital 5 como uma saída digital e por fim, adicionamos o Coil que será responsável por conter os valores utilizados no acionamento do led.

void setup() {
  
mb.config(&Serial, 38400, SERIAL_8N1);
mb.setSlaveId(10);
pinMode(5, OUTPUT);
mb.addCoil(LED_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 a função necessária para realizar a escrita do dado referente ao acionamento do led na instância Coil.

void loop() {
 
mb.task();
  
digitalWrite(5, mb.Coil(RELE_COIL));

}

 


Considerações finais

Neste tutorial, demonstramos como você fazer para estabelecer uma comunicação entre a sua placa Arduino e o ScadaBR, esperamos que você continue nos acompanhando e sinta-se à vontade para nos dar sugestões, críticas ou elogios. Lembre-se de deixar suas dúvidas nos comentários abaixo.

Privacy Preference Center