Para que o operador obtenha todas informações que compõem uma planta industrial e assim
poder acompanhar e controlar em tempo real de execução de uma tarefa, o sistema
supervisório dependem de componentes físicos como sensores e atuadores, rede de
comunicação, estações remotas e estação de monitoramento central.
SENSORES E ATUADORES
São dispositivos acoplados aos componentes que convertem parâmetros físicos (pressão,
velocidade, temperatura...) em sinais analógicos e digitais, e os atuadores são componentes
utilizados para acionar ou desacionar determinados equipamentos durante o processo
industrial.
REDE DE COMUNICAÇÃO
Plataforma de transmissão das informações, onde são considerados alguns requisitos do
sistema e distância de transmissão dos dados, sendo feito sob análise e escolhendo o melhor
meio de transmissão ethernet, fibras óticas, rádio...
ESTAÇÕES REMOTAS
onde inicia-se o processo de aquisição e controle dos dados, fazendo leitura dos valores do
dispositivo que podem ser digitais ou analógicos, de entrada ou de saída, controlando e
atualizando os dados.
REDE DE INFORMAÇÃO GERENCIAL
integra a rede de supervisão com a de controle, possibilitando ao supervisor da empresa a
análise do desempenho da produção.
REDE DE SUPERVISÃO E CONTROLE
reponde pelo funcionamento do sistema.
REDES DE CONTROLE DE CAMPO
responsável direta pelo processo de informações do controle em tempo real, podem ser
inseridas nesse grupo todas as redes industriais, seja fieldbus, modbus, profibus, devicenet..
www.meccomeletronica.com Página 1
SISTEMAS SUPERVISÓRIOS MECATRÔNICA
PROTOCOLO MODBUS
Desenvolvido pela Modicon na década de 70, trata-se de uma estrutura de mensagem aberta e
utilizada para comunicação entre dispositivos mestre-escravo/ cliente-servidor. Vastamente
utilizado como protocolo em equipamentos industriais, o protocolo ModBus está presente em:
instrumentos e equipamentos de laboratórios, automação residencial e automação naval.
Sua simplicidade e facilidade de implementação faz com que sua utilização na automação
industrial seja aplicada em diversos padrões de meios físicos como: RS-232, RS-485 e
Ethernet TCP/IP, limitando-se a velocidade de comunicação de cada um desses padrões bem
como comprimento e numero máximo de dispositivos conectados.
www.meccomeletronica.com Página 2
SISTEMAS SUPERVISÓRIOS MECATRÔNICA
EXEMPLO 01
www.meccomeletronica.com Página 3
SISTEMAS SUPERVISÓRIOS MECATRÔNICA
EXEMPLO 02
Ele se comunica com o arduíno via comunicação serial, utilizando o protocolo firmata, que é um
protocolo genérico para comunicação entre microcontroladores e um computador. Os meios de
comunicação são o caso usb (o mesmo usado para fazer a gravação do arduíno) um adaptador
bluetooth.
Feito isso, é só abrir o programa, e escolher a porta serial do Arduíno. Clique em um pino
qualquer, e aparecerá as opções. Os pinos podem ser configurados como saída,
entrada(analógica ou digital), PWM(pinos 3, 5, 6, 9, 10 e 11) ou servo.
www.meccomeletronica.com Página 4
SISTEMAS SUPERVISÓRIOS MECATRÔNICA
o ScadaBR consiste em um sistema supervisório completo que por sua vez é disponibilizado
em licença Open Source. Além disso, 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, no campo de
controle e automação industrial. O ScadaBR conta com uma história de mais de 70 mil
downloads. Amplamente utilizado para desenvolver aplicações automatizadas em qualquer tipo
de ambiente: Indústrias, Laboratórios, Automação Predial, Saneamento, Sistemas de Energia.
1. EXEMPLO DE UTILIZAÇÃO
O hardware que será utilizado será um Arduino UNO, um led (e o respectivo resistor para o
acionamento do mesmo, com um valor de resistência de 280Ω) e um potenciômetro de 4.7kΩ.
O objetivo do projeto desenvolvido consiste em produzir um sistema onde o usuário pode
definir o valor do PWM a ser utilizado no acionamento do led existente através do
potenciômetro, para por exemplo, controlar a intensidade luminosa do mesmo.
www.meccomeletronica.com Página 5
SISTEMAS SUPERVISÓRIOS MECATRÔNICA
CONSTRUÇÃO DO CÓDIGO
Inicialmente deve-se incluir as bibliotecas necessárias para que o código a ser inserido no
Arduino UNO funcione adequadamente. Utilizaremos somente a biblioteca desejada para
estabelecer a comunicação entre o Arduino UNO e o ScadaBR através do protocolo Modbus.
Os arquivos para montagem estão disponíveis em Modbus RTU libraries for Arduino.
O código a ser utilizado foi derivado diretamente do exemplo disponível que vem junto com a
biblioteca em questão. Portanto, caso o leitor queira, pode apenas modificar o exemplo citado.
#include <SimpleModbusSlave.h>
Em seguida realizou-se o uso da diretiva #define para associarmos a palavra LED ao pino 9
do Arduino UNO.
#define LED 9
enum
{
VALOR_POT,
VALOR_PWM,
HOLDING_REGS_SIZE
};
unsigned int holdingRegs[HOLDING_REGS_SIZE];
void setup()
{
modbus_configure(&Serial, 9600, SERIAL_8N1, 1, 2, HOLDING_REGS_SIZE,
holdingRegs);
modbus_update_comms(9600, SERIAL_8N1, 1);
pinMode(LED, OUTPUT);
}
www.meccomeletronica.com Página 6
SISTEMAS SUPERVISÓRIOS MECATRÔNICA
VALOR_POT. Por último, temos a função analogWrite(), responsável por acionar o led
utilizando PWM (observe que o valor utilizado na largura do pulso está contido no Registrador
Holding VALOR_PWM, que por sua vez será preenchido dentro do ScadaBR).
void loop()
{
modbus_update();
holdingRegs[VALOR_POT] = analogRead(A0);
analogWrite(LED, holdingRegs[VALOR_PWM]);
}
Em seguida deve-se estabelecer 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.
Posteriormente algumas informações devem ser fornecidas para o SCADABR tanto para
identificação do dispositivo escravo quanto para que a funcionalidade seja efetiva. Num
primeiro momento o programador deve nomear o dispositivo escravo, bem como definir o
tempo em que os dados serão atualizados (esta informação é muito importante, sendo
portanto, fundamental que o programador 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 básicas, deve-se especificar mais alguns parâmetros relativos à
comunicação estabelecida, como por exemplo: a porta COM utilizada, e a taxa de transmissão
utilizada (9600 bps). Neste momento, o programador deve recordar que ao escrever o código
para o Arduino UNO, existiam duas funções dentro da função setup() em que um dos
parâmetros era a sigla SERIAL_8N1. Esta significa que estão sendo utilizados 8 bits para
dados e um bit de parada na transmissão da informação entre os elementos, portanto, estas
informações devem estar identificadas nos campos data bits e stop bits.
www.meccomeletronica.com Página 7
SISTEMAS SUPERVISÓRIOS MECATRÔNICA
Para conferir se o Arduino UNO foi encontrado, basta pesquisar a existência de um nó.
Após esse teste é necessário inserir no SCADABR os registradores holding que foram
declarados no código do Arduino UNO. Para realizar este procedimento deve-se criar os
chamados data points, clicando no ícone encontrado na extremidade superior direita da figura
abaixo.
Após esse procedimento, uma nova janela é aberta para que seja possível determinar as
propriedades do data point criado. Primeiramente é necessário nomeá-lo (aqui foi utilizado o
nome POT) e em seguida definir 3 campos fundamentais: o primeiro é o Faixa do registro onde
a opção a ser selecionada deve ser registrador holding, em seguida Tipo de dados modbus
determinado como Inteiro de 2 bytes sem sinal e, por último, Offset (este campo, diz ao
SCADABR qual dos registradores holding será escrito ou lido, de maneira que o número a ser
utilizado vai de acordo com a sequência escrita no código do Arduino UNO, ou seja, como será
lido o registrador VALOR_POT e este foi o primeiro a ser escrito na tabela, usa-se o valor 0 no
Offset). Observe que ao efetuar a leitura, o SCADABR apresentará um valor que varia de 0 a
1023 conforme esperado, no entanto caso o leitor queira um valor entre 0 e 5V basta utilizar o
valor adequado no campo Multiplicador.
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 ícone
conforme a figura citada.
www.meccomeletronica.com Página 8
SISTEMAS SUPERVISÓRIOS MECATRÔNICA
O próximo passo é criar o data point responsável pelo acionamento do led via PWM. Este
procedimento é idêntico ao anterior, exceto por uma diferença no campo Offset que desta vez é
preenchido com o valor 1 (já que este refere-se ao segundo registrador da tabela escrita no
código do Arduino UNO) e a opção configurável deve ser marcada.
Neste momento o programador deve retornar a watch list (primeiro ícone da esquerda na
barra de ferramentas) e clicar nas setas para visualizar o estado dos data points criados.
Observe que nos valores das medições, o data point referente ao PWM mostra o valor 0,
enquanto o data point que diz respeito ao valor lido através do potenciômetro possui um
conteúdo de fato condizente com a posição do mesmo. Isto acontece porque em nenhum
momento o registrador holding responsável por conter o valor a ser utilizado no PWM é
atualizado.
www.meccomeletronica.com Página 9
SISTEMAS SUPERVISÓRIOS MECATRÔNICA
A figura abaixo exibe o resultado do projeto desenvolvido, onde é possível ver a relação entre a
posição do potenciômetro e o PWM gerado (gráfico) além da exibição dos valores referentes
aos data points no SCADABR.
www.meccomeletronica.com Página 10
SISTEMAS SUPERVISÓRIOS MECATRÔNICA
CONSTRUÇÃO DO CÓDIGO
No decorrer desta seção serão explicados todos os passos utilizados para o desenvolvimento
do projeto proposto, isto é, o código será comentado de modo que todo conhecimento aplicado
seja facilmente compreendido.
Num primeiro momento deve-se incluir as bibliotecas necessárias para que o código a ser
inserido no Arduino UNO funcione adequadamente. Neste artigo utilizaremos somente a
biblioteca desejada para estabelecer a comunicação entre o Arduino UNO e o SCADABR
através do protocolo MODBUS.
O código a ser utilizado foi derivado diretamente do exemplo disponível, juntamente com a
biblioteca em questão. Portanto, caso o leitor queira, pode apenas modificar o exemplo citado.
#include <SimpleModbusSlave.h>
Em seguida realizou-se o uso da diretiva #define para associarmos as palavras que definem os
componentes em questão aos seus respectivos pinos do Arduino UNO.
#define LED_VM 11
#define LED_VD 10
#define LED_AZ 9
#define LED 8
#define BOTAO 12
#define CHAVE 13
Antes de prosseguirmos com o código, foi necessário criar algumas variáveis para uso
posterior no acionamento dos componentes.
int PWM_R;
int PWM_G;
int PWM_B;
Neste momento serão definidos os registradores holding utilizados no SCADABR. Caso o leitor
tenha alguma dúvida neste ponto, insistimos em pedir para o leitor consultar o link
disponibilizado no início deste artigo, nele estão contidas todas as informações para que o
leitor compreenda cada um dos pontos deste desenvolvimento de código.
enum
{
POT_R,
POT_G,
POT_B,
BOT,
LED_R,
LED_G,
LED_B,
LED_ON_OFF,
MAN_AUTO,
HOLDING_REGS_SIZE
};
www.meccomeletronica.com Página 11
SISTEMAS SUPERVISÓRIOS MECATRÔNICA
MODBUS. Os parâmetros "mais importantes" são o segundo, o terceiro e o quarto, que dizem
respeito à taxa de transmissão de dados e o formato do pacote utilizado no protocolo
MODBUS. Note que estes três argumentos citados devem estar em conformidade com as
configurações do SCADABR.
void setup()
{
pinMode(LED_VM, OUTPUT);
pinMode(LED_VD, OUTPUT);
pinMode(LED_AZ, OUTPUT);
pinMode(LED, OUTPUT);
pinMode(BOTAO, INPUT);
pinMode(CHAVE, INPUT);
Num primeiro momento é necessário verificar em que posição está a chave seletora para que o
programa entenda a partir de que ponto o sistema está sendo controlado. Para isso utiliza-se
uma estrutura condicional if(), cuja sentença a ser testada inclui o registrador holding
MAN_AUTO. Caso o valor deste seja igual a zero, entende-se que o sistema está funcionando
de forma manual, portanto, os valores a serem utilizados nos PWMs para o acionamento dos
leds são provenientes diretamente dos valores obtidos através dos potenciômetros. E o led
com comportamento on/off responde diretamente de acordo com o botão enquanto solto ou
pressionado. Observe que apesar de não utilizarmos os registradores holding nos
acionamentos (no caso do led RGB), estes ainda assim são atualizados para que seus valores
sejam devidamente apresentados no SCADABR.
void loop()
{
modbus_update();
holdingRegs[POT_R] = analogRead(A0);
holdingRegs[POT_G] = analogRead(A1);
holdingRegs[POT_B] = analogRead(A2);
holdingRegs[BOT] = digitalRead(BOTAO);
holdingRegs[MAN_AUTO] = digitalRead(CHAVE);
if(holdingRegs[MAN_AUTO] == 0){
www.meccomeletronica.com Página 12
SISTEMAS SUPERVISÓRIOS MECATRÔNICA
PWM_R = map(holdingRegs[POT_R],0,1023,0,255);
analogWrite(LED_VM,PWM_R);
holdingRegs[LED_R] = PWM_R;
PWM_G = map(holdingRegs[POT_G],0,1023,0,255);
analogWrite(LED_VD,PWM_G);
holdingRegs[LED_G] = PWM_G;
PWM_B = map(holdingRegs[POT_B],0,1023,0,255);
analogWrite(LED_AZ,PWM_B);
holdingRegs[LED_B] = PWM_B;
digitalWrite(LED,holdingRegs[BOT]);
holdingRegs[LED_ON_OFF] = holdingRegs[BOT];
} else{
analogWrite(LED_VM, holdingRegs[LED_R]);
analogWrite(LED_VD, holdingRegs[LED_G]);
analogWrite(LED_AZ, holdingRegs[LED_B]);
digitalWrite(LED,holdingRegs[LED_ON_OFF]);
}
Neste momento iremos abordar os passos necessários para realizar interação do Arduíno
UNO com o SCADABR. Vale ressaltar que neste artigo partiremos de uma parte mais
avançada, no entanto, é conveniente que caso o leitor não esteja familiarizado com o conteúdo
mostrado a seguir, veja como são feitos os procedimentos iniciais para tal objetivo em nosso
artigo anterior cujo link encontra-se disponibilizado no início deste artigo.
www.meccomeletronica.com Página 13
SISTEMAS SUPERVISÓRIOS MECATRÔNICA
Em seguida, o leitor deve escolher um nome para este sistema supervisório assim como uma
imagem de fundo caso seja desejo do desenvolvedor (neste caso, após selecionar a imagem
desejada, basta clicar no botão responsável por fazer o upload da imagem).
www.meccomeletronica.com Página 14
SISTEMAS SUPERVISÓRIOS MECATRÔNICA
www.meccomeletronica.com Página 15
SISTEMAS SUPERVISÓRIOS MECATRÔNICA
Já para inserir os elementos gráficos deve-se selecionar na lista de componentes a opção GIF
Binário e clicar no ícone ao lado para adicioná-lo ao supervisório. Em seguida aparecerá um
ícone igual ao mostrado na figura abaixo (extremidade esquerda), de modo que o leitor deve
definir alguns parâmetros para que o item gráfico funcione de maneira efetiva. Num primeiro
momento deve-se posicionar o mouse sobre ícone citado e aparecerão algumas opções, o
leitor deve primeiramente clicar na opção marcada de vermelho e definir qual Data point estará
"ligado" ao elemento gráfico em questão (no nosso caso, o Data point escolhido está
relacionado ao registrador holding responsável por conter o valor relativo à leitura da chave
seletora que define o modo de operação).
Depois de realizar o procedimento anterior, o leitor deve clicar no ícone abaixo do selecionado
anteriormente, e então escolher qual tipo de elemento gráfico deseja utilizar. Neste caso foi
selecionado o conjunto "leds24", composto por uma série de imagens onde o usuário deve
determinar uma para o caso do Data point em questão atribuir o valor 0 (led apagado)
ao registrador holding correpondente e outra para o caso deste possuir o valor 1 (led aceso).
Observe que a intenção neste momento é fazer com que o led acenda caso o modo vigente
seja automático, ou seja, quando a chave seletora apresentar nível alto na entrada
correspondente do Arduino.
www.meccomeletronica.com Página 16
SISTEMAS SUPERVISÓRIOS MECATRÔNICA
Conforme citado, o elemento que foi adicionado anteriormente está ligado à sinalização do
modo automático. Para inserir outro relacionado ao modo manual deve-se proceder da mesma
forma, no entanto é necessário inverter as imagens pois, quando a chave seletora proporcionar
nível baixo na entrada digital do Arduino, este deve entender que o sistema está em modo
manual, acendendo portanto o led referente a este modo de operação. Lembre-se sempre de
salvar as alterações clicando no ícone do disquete no canto superior direito.
Basicamente, o procedimento para incluir os elementos gráficos, a ser realizado neste ponto, é
idêntico ao anterior. No entanto, para esta aplicação nós não dispomos de Data points que
representam registradores holding binários (como por exemplo MAN_AUTO) para controlar os
2 estados definidos pelas imagens dos leds acesos e apagados. Portanto deve-se criar
alguns Data points virtuais (neste momento utilizaremos o led que controla a componente
vermelha do RGB como exemplo, porém os passos a serem seguidos são os mesmos para as
outras componentes), para isso deve-se criar no mesmo lugar onde foi criado o Data
source responsável pela interação do Arduino UNO com o SCADABR via MODBUS e escolher
a opção Data Source Meta.
O Data Source Meta criado neste artigo possui o nome "Auxiliares" e no momento em que este
é criado, abre-se uma tela de configurações deste Data source onde o desenvolvedor deve
procurar a área relativa à criação de Data points para adiciona-los. Após criar o Data point
deve-se nomeá-lo, definir o tipo de dado como binário e selecionar outro Data point (já
existente) no campo Contexto do Script para criar uma estrutura que irá definir quando este
recém criado assumirá os valores 0 e 1, neste caso escolhemos o Data point LED_R
(responsável por conter o valor utilizado no PWM para o acionamento do led). Observe que
existe uma coluna na tabela onde foi adicionado este Data point já existente chamada Var,
onde pode-se dar um nome para uma variável que irá conter o valor presente no registrador
holding representado pelo Data point LED_R, cujo nome é pwm_vm.
No script apresentado conforme a figura a seguir, utiliza-se uma estrutura condicional if() para
que este Data point criado retorne 1 (returne true) caso a variável pwm_vm possua um valor
maior do que 0 (if (pwm_vm.value > 0)) ou retorne 0 (returne false) caso o valor da mesma
variável seja igual a zero (else return false).
www.meccomeletronica.com Página 17
SISTEMAS SUPERVISÓRIOS MECATRÔNICA
Repare que até o presente momento foram adicionados apenas elementos gráficos, no entanto
agora será inserido na representação gráfica um dispositivo que mostre os valores que serão
utilizados nos PWMs dos acionamentos dos leds. Para isso deve-se selecionar a opção Data
point simples na lista de seleção de componentes e definir suas configurações. Primeiramente,
deve-se atribuir o Data point desejado ao item (no caso o que está representando o registrador
holding que contém o valor do PWM a ser utilizado no acionamento do led vermelho), em
seguida o usuário pode ou não definir um texto para aparecer juntamente com o valor e por fim
deve-se marcar as duas caixas de seleção. O próximo passo consiste em simplesmente
escolher as duas imagens para representar os estados distintos de funcionamento.
Após estes procedimentos torna-se possível alterar os valores dos PWMs simplesmente
posicionando o valor mostrado e clicando no ícone conforme mostrado na figura abaixo. Caso
estes valores sejam alterados enquanto o sistema estiver no modo manual, ocorrerá somente a
mudança no supervisório até a próxima atualização do sistema (que retornará o valor que
estava antes), no entanto, não haverá alteração no acionamento pelo fato de o código ser
protegido contra tal ação enquanto o sistema estiver operando de forma manual.
www.meccomeletronica.com Página 18
SISTEMAS SUPERVISÓRIOS MECATRÔNICA
Por último será desenvolvido o mecanismo utilizado para o controle do led on/off. Este pode ter
sinalização criada exatamente da mesma maneira que foi feita no início deste item com
os leds indicando os modos de operação, no entanto, o Data point escolhido para as imagens
que representarão o led aceso e apagado deve ser o LED_ON_OFF.
Para inserir o botão mostrado na figura anterior basta ir na lista de componentes do ambiente
de representação gráfica e selecionar a opção botão (escrita) e adiciona-lo. Num primeiro
momento deve-se incluir o Data point correspondente (LED_ON_OFF) da mesma forma feita
para os outros elementos além de marcar as caixas de seleção existentes. Posteriormente é
necessário determinar os textos que aparecerão quando o Data point escolhido anteriormente
assumir os possíveis valores além da altura e comprimento do botão.
www.meccomeletronica.com Página 19
SISTEMAS SUPERVISÓRIOS MECATRÔNICA
A figura a seguir exibe o resultado do projeto desenvolvido neste artigo, onde é possível ver o
sistema supervisório em questão possibilitando a análise dos valores além da sua
manipulação.
REFERÊNCIAS
https://youtu.be/bRI5CuD61Hs
http://www.scadabr.com.br/?q=downloads
https://www.youtube.com/watch?v=FTtGxBwroWE
https://drive.google.com/drive/folders/0B0B286tJkafVYnBhNGo4N3poQ2c?tid=0B0B286tJkafV
SENVcU1RQVBfSzg
www.meccomeletronica.com Página 20