Este artigo visa auxiliar no desenvolvimento de projetos de automação utilizando o Arduino UNO, juntamente com o software SCADA Action₀NET. Apresentamos conceitos introdutórios para que o usuário possa criar aplicações cada vez mais elaboradas.


DEFINIÇÃO DO HARDWARE


Utilizamos como hardware um sistema composto por um Arduino UNO, um sensor de temperatura 35M. 



CÓDIGO PARA O ARDUINO


Inicialmente, inclua as bibliotecas necessárias para que o código a ser inserido no Arduino UNO funcione adequadamente por meio do protocolo Modbus. Esta se encontra no pacote anexo a este artigo (ModbusSlave.zip). Para incluir a biblioteca, abra o programa de configuração do Arduino, acesse Sketch > Incluir Biblioteca > adicionar biblioteca.ZIP (SimpleModbusSlave.zip) e busque a pasta a qual se localiza a biblioteca.


Na mesma pasta na qual se encontra a biblioteca está o código do Arduino deste artigo.


No início do código, encontram-se as definições das bibliotecas importadas:


#include <SimpleModbusSlave.h>


Em seguida deve ser definido os parâmetros:

  • Baud: Taxa de dados em bits por segundo.
  • SlaveID: Endereço do escravo.


#define baud 9600

#define SlaveID 1


Defina os registros que possuem o escravo. 


enum

{     

LM35_VAL, HOLDING_REGS_SIZE // leave this one

};

unsigned int holdingRegs[HOLDING_REGS_SIZE]; // function 3 and 16 register array


Na função setup(), listam-se informações na seguinte ordem:


1) Definir configurações do Modbus.


a. Tipo de conexão.

b. Taxa de dados em bits por segundo.

c. Formato do byte valido.

d. Endereço do escravo.

e. Pino para monitoramento da taxa de transmissão.

f. HOLDING_REGS_SIZE.

g. holdingRegs.


modbus_configure(&Serial, baud, SERIAL_8N1, SlaveID, 2, HOLDING_REGS_SIZE, holdingRegs);


2) Utilizado para melhor atualização das funções de configuração modbus.


a. Taxa de dados em bits por segundo.

b. Formato do byte valido.

c. Endereço do escravo.modbus_update_comms(baud, SERIAL_8N1, SlaveID);


Por fim, define as ações do método loop(), inserindo o carregamento do Modbus, e as definições da ação a ser realizada. O tutorial em questão define que o registro LM35_VAL, receberá o valor lido pela entrada A0 do arduino.


modbus_update();


holdingRegs[LM35_VAL] = analogRead(A0);


Por fim, verifique o código e carregue-o no Arduino.


CONFIGURAÇÃO DO ACTION.NET


Agora iremos realizar a interação do Arduino UNO com o Action.NET. 


Crie um novo projeto. Abra o aplicativo Action.NET, acesse New Project e, após preencher os dados do projeto, clique em Create New Project. Em seguida, crie uma tag que será usada para controle do led. Acesse Edit > Tags > Objects e configure as colunas citadas como:


em seguida, acesse Edit > Devices > Channels, clique em Create new e configure conforme a imagem: 



Na linha criada, clique no campo Protocol Options e defina a seguinte configuração: 



Clique em Settings e defina a configuração de acordo com os seguintes parâmetros: 



Nota: o campo Com deve ser configurado conforme a porta padrão do Arduino utilizado.


Acesse Edit > Devices > Nodes e clique em New. Siga a seguinte configuração: 



Clique no campo PrimaryStation e insira o valor definido para o endereço do slave, neste caso: 1.


Acesse a coluna Points, e em TagName, insira o nome da tag criada. A linha ficará configurada desta forma: 



Um clique no campo Address revelará os tipos de operações próprias do protocolo Modbus: 



Neste exemplo, será utilizado o tipo Holding Registers. No campo Address, sendo o endereço igual a “1” pois e o primeiro registro definido no escravo.  



Execute a aplicação, acessando Run > Startup. Marque os campos opções conforme a imagem:  



Clique em Run Startup: a comunicação entre o Action.NET e o Arduino será iniciada.


Na tela Watch, aberta após o final da execução, pode se efetuar o monitoramento do valor lido.