Aquisição de dados do Arduino através do SCADABR

No artigo anterior, apresentamos para o leitor quais eram os passos necessários para a realização acionamentos das saídas digitais do Arduino UNO através do ScadaBR. No conteúdo em questão foi possível demonstrar como proceder para modificar o nível lógico dos pinos de saída digital e também como utilizar o PWM para acionar determinados dispositivos conectados nos mesmos.

Este material tem como objetivo apresentar os procedimentos necessários para realizar leituras das variáveis de entrada do Arduino UNO, isto é, será demonstrado como efetuar a aquisição das informações provenientes das entradas digitais (por meio de push buttons) e também das entradas analógicas (utilizando potenciômetros) do mesmo, através do ScadaBR.

 

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 das leituras das entradas digitais e analógicas do mesmo, através do ScadaBR.

Antes de iniciar este tópico torna-se imprescindível que o leitor acesse nossos artigos anteriores caso possua alguma dúvida, pois, assim como no terceiro artigo desta série, o desenvolvimento do código neste material será baseado na complementação do código já elaborado nas etapas anteriores.

O desenvolvimento do código começa pela inclusão da biblioteca SimpleModbusSlave.h através da diretiva #include e em seguida realiza-se o uso de diretivas #define para que as palavras POT e BOT sejam associadas aos pinos A0 e 8, respectivamente (note que no código elaborado até então, as palavras LED, LED2 e LEDPWM já encontram-se associadas aos pinos 9,10 e 11, nesta ordem).

#include<SimpleModbusSlave.h>



#define POT A0

#define BOT 8

#define LED 9

#define LED2 10

#define LEDPWM 11

 

Posteriormente, declara-se os Registradores Holding que serão utilizados para conter os dados adquiridos por meio dos procedimentos de leitura realizados através das portas de entrada do Arduino UNO.  Neste momento, basta modificar o código apresentado no artigo anterior para incluir mais dois Registradores Holding além dos já existentes (ESTADO_LED, ESTADO_LED2 e ESTADO_LEDPWM). Estes são os registradores ESTADO_POT e ESTADO_BOT.

enum
{
ESTADO_LED,

ESTADO_LED2,

ESTADO_LEDPWM,

ESTADO_POT,

ESTADO_BOT,

HOLDING_REGS_SIZE

};



unsigned int holdingRegs[HOLDING_REGS_SIZE];

 

Na sequência, manipula-se a função setup() para determinar as configurações iniciais do código a ser inserido no Arduino UNO. Além de conferir se as modificações já citadas foram realizadas nas funções modbus_configure() e modbus_update_comms(), deve-se definir o modo de operação (para atuar como entrada digital) do pino 8 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);

pinMode(BOT, INPUT);

}

 

Dentro da função loop() tem-se a função modbus_update(), utilizada para a atualização dos valores dos registradores citados anteriormente.

Por fim, deve-se adicionar duas linhas (para efetuar as leituras das portas de entrada do Arduino UNO) ao código já existente, onde, em uma delas recorre-se à função digitalRead() e na outra utiliza-se a função analogRead(). Ambas servem para preencher os Registradores Holding ESTADO_BOT e ESTADO_POT, respectivamente.

void loop()
{
modbus_update();


digitalWrite(LED, holdingRegs[ESTADO_LED]);

digitalWrite(LED2, holdingRegs[ESTADO_LED2]);

analogWrite(LEDPWM, holdingRegs[ESTADO_LEDPWM]);



holdingRegs[ESTADO_BOT] = digitalRead(BOT);

holdingRegs[ESTADO_POT] = analogRead(POT);

}

 

 

DESENVOLVIMENTO DA ESTRUTURA DE CONTROLE NO SCADABR:

 

Neste ponto, deve-se realizar uma alteração no Data source criado anteriormente. Esta modificação consiste na inclusão de dois Data points responsáveis por tratar os valores armazenados nos Registradores Holding ESTADO_POT e ESTADO_BOT (preenchidos com os valores presentes nas portas de entrada citadas).

Inicialmente, cria-se um novo Data point para interagir com o Registrador Holding ESTADO_POT 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 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 3 ao campo Offset, devido ao fato que o Registrador Holding ESTADO_POT ter sido o quarto 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).
  • Lembre-se de deixar a caixa de seleção desmarcada para que o Data point não possa ser alterado por meio do ScadaBR (este deve ser alterado apenas manualmente).

 

 

 

 

 

 

 

 

 

 

Em seguida, deve-se criar mais um Data point, no entanto, este estará relacionado com o Registrador Holding ESTADO_BOT. 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 Binário (note que este Data point irá trabalhar apenas com os níveis lógicos alto (1) e baixo(0), provenientes da leitura do push button).
  • Deve-se atribuir o valor 4 ao campo Offset, devido ao fato que o Registrador Holding ESTADO_POT ter sido o quinto 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).
  • Lembre-se de deixar a caixa de seleção desmarcada para que o Data point não possa ser alterado por meio do ScadaBR (este deve ser alterado apenas manualmente).

 

A figura a seguir mostra como os Data points estão organizados após o procedimento realizado anteriormente. Por fim, deve-se habilitar os Data points clicando nos ícones contidos na coluna Status.

Neste momento o leitor deve acessar a Watch list e clicar na seta para visualizar os estados dos Data points criados.  Lembre-se de alterar a representação dos elementos da Watch List conforme demonstrado no artigo anterior.

Observe que desta vez não existe nenhum ícone localizado à esquerda dos novos Data Points, sendo assim, não é possível alterar o valor dos Registradores Holding através do ScadaBR.

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

Enviar Resposta

*

*

Responda o cálculo abaixo: *

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