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]
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.
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.
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).
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
O 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.
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.
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
- 1 x Arduino Micro ou Arduino Uno
- 1 x Protoboard
- 1 x Resistor 330 Ω
- 1 x Led verde difuso
Montando o projeto
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.
– 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
– 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).
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
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.
– 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).
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).
– 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.
– 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.
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.
– 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.
– 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.
– 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.
Após realizarmos o procedimento citado anteriormente, o nosso Data point aparecerá criado no lado direito da interface apresentada em nossa watchlist.
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).
Veja o resultado do acionamento do led no ScadaBR.
.
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.
Excelente. Tenho um problema, instalei o scadabr em um raspberry com SD de 16 GB e IOs full, esse está rodando normal, mas como o SD é pequeno, quero trocar o SD para 32 GB, eu fiz o clone do 16 para 32, mas não deu boot, acusou problema de firmware, então eu instalei do zero no cartão SD de 32 GB, seguindo às mesmas instruções de instalação do Java, tomcat, scadabr e mariaDB, importei a base de dados do cartão antigo para o novo, porém o scadabr não consegue abrir a porta de comunicação ttyUSB0. O meu DataSource está configurado em modo Modbus Serial e onde devemos indicar a porta de comunicação não mostra nenhuma opção.
Desta forma o scadabr teria um datalogger de quando foi ligado e quando foi desligado ?
teria como fazer esta conexao com esp01 por favor gostaria de apenas fazer a leitura de um botao com o scadabr e esp 01
Como faço para baixar a biblioteca que vc usou, qual seria o nome do arquivo
Excelente material. Tanto pela qualidade da escrita, quanto pelo detalhamento e, principalmente, a apresentação de uma biblioteca que, diferente das que eu encontrei antes, realmente deixa o código mais legível.
Muito obrigado pelo tempo disponibilizado em trazer esse conteúdo para o mundo! o/