Realizando Acionamentos no Arduino através do ScadaBR

No artigo anterior, demonstrou-se como o leitor deve proceder para estabelecer a comunicação entre o ScadaBR e o Arduino UNO utilizando o protocolo Modbus RTU Serial e além disso também foi possível apresentar, mesmo que de maneira breve, como realizar um simples acionamento de uma das saídas digitais do Arduino UNO através do ScadaBR.

O objetivo deste conteúdo consiste em apresentar os conceitos e passos necessários para que o leitor consiga acionar várias saídas digitais ao mesmo tempo e também como o mesmo deve proceder para utilizar PWM no acionamento das saídas citadas (isto é válido apenas para as saídas digitais que possuem a capacidade de trabalhar com PWM).

 

PRODUTOS UTILIZADOS NO PROJETO:

MONTAGEM FÍSICA (HARDWARE):

 

DESENVOLVIMENTO DO CÓDIGO PARA O ARDUINO:

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 de acionamentos das saídas digitais do mesmo, através do ScadaBR. Antes de iniciar este tópico torna-se imprescindível dizer ao leitor, que acesse nosso segundo artigo caso tenha alguma dúvida em relação aos conceitos básicos do código utilizado.

O desenvolvimento do código começa pela inclusão da biblioteca SimpleModbusSlave.h através da sentença include e prossegue-se por meio do uso de diretivas define para que as palavras LED, LED2 e LEDPWM possam ser associadas no código aos pinos 9, 10 e 11 respectivamente.

#include <SimpleModbusSlave.h>

#define  BOT 8

#define  LED 9

#define  LED2 10

Posteriormente, deve-se declarar os Registradores Holding que serão utilizados para conter os dados relevantes para o acionamento dos dispositivos conectados nas saídas citadas anteriormente.

Neste ponto, modifica-se o código apresentado no artigo anterior para incluir mais dois Registradores Holding além do já existente (ESTADO_LED). Estes são os registradores ESTADO_LED2 e ESTADO_LEDPWM.


enum

{

ESTADO_LED,

ESTADO_LED2,

ESTADO_LEDPWM,

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. Além de definir os parâmetros das funções modbus_configure() e modbus_update_comms() da mesma maneira realizada anteriormente, deve-se declarar o modo de operação (para atuar como saídas digitais) dos pinos 9, 10 e 11 do Arduino UNO através da função pinMode().


void setup()

{

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

modbus_update_comms(9600, SERIAL_8N1, 1);

pinMode(LED, OUTPUT);

pinMode(LED2, OUTPUT);

pinMode(LEDPWM, 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 os leds conectados nas nos pinos de saída digital 9 e 10 (LED e LED2) e também a função analogWrite(), que por sua vez terá o papel de acionar o led conectado no pino 11 utilizando PWM (LEDPWM)  (observe que os valores utilizados para definir os estados dos leds estão contidos nos Registradores Holding ESTADO_LED, ESTADO_LED2 e ESTADO_LEDPWM, que por sua vez serão preenchidos dentro do ScadaBR).


void loop()

{

modbus_update();



digitalWrite(LED, holdingRegs[ESTADO_LED]);

digitalWrite(LED2, holdingRegs[ESTADO_LED2]);

analogWrite(LEDPWM, holdingRegs[ESTADO_LEDPWM]);



}

DESENVOLVIMENTO DA ESTRUTURA DE CONTROLE NO SCADABR:

Neste momento, realiza-se uma alteração no Data source criado no artigo anterior, que por sua vez consiste na adição de mais dois Data points responsáveis por tratar os valores utilizados pelos Registradores Holding adicionados no código (ESTADO_LED2 e ESTADO_LEDPWM).

Primeiramente, cria-se um novo Data point para interagir com o Registrador Holding ESTADO_LED2 e em seguida deve-se definir seus campos da seguinte forma:

 

  • No campo Faixa do registro deve-se selecionar a opção Registrador Holding

 

  • No campo Tipo de dados modbusdeve-se selecionar a opção como Binário (note que este Data point irá trabalhar apenas com os níveis lógicos alto (1) e baixo(0) para acionar o led).

 

  • Deve-se atribuir o valor 1 ao campo Offset, devido ao fato que o Registrador Holding ESTADO_LED2 ter sido o segundo registrador a ser adicionado no código (lembre-se que a ordem começa a ser contada a partir do 0 e não do 1).

Em seguida, deve-se criar mais um Data point, no entanto, este estará relacionado com o Registrador Holding ESTADO_LEDPWM. A configuração deste elemento é feita da seguinte forma:

 

  • No campo Faixa do registro deve-se selecionar a opção Registrador Holding

 

  • No campo Tipo de dados modbusdeve-se selecionar a opção como Inteiro de 2 bytes sem sinal (note que este Data point irá trabalhar com valores na faixa de 0 a 1023, provenientes da leitura do potenciômetro).

 

  • Deve-se atribuir o valor 2 ao campo Offset, devido ao fato que o Registrador Holding ESTADO_LEDPWM ter sido o terceiro registrador a ser adicionado no código (lembre-se que a ordem começa a ser contada a partir do 0 e não do 1).

 

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 e 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, neste caso, pode-se colocar a saída digital em nível alto ou nível baixo.

 

Para finalizar este conteúdo pode-se realizar algumas alterações na maneira como os dados são apresentados na Watch list. Para modificar, por exemplo, a apresentação do Data Point LED, deve-se clicar no ícone correspondente aos detalhes do Data Point

Em seguida, o leitor deve acessar a parte referente às propriedades de renderização de texto, definir o campo Tipo como Binário e determinar o que deve ser escrito (e a cor) na Watch list quando os valores o Data point forem 0 ou 1.

Depois de realizar este procedimento, pode-se repeti-lo para o Data point LED2. O resultado obtido através deste passo pode ser visto na figura abaixo.

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
ScadaBR
Sem Comentários

Enviar Resposta

*

*

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