De acordo com os artigos anteriores foi demonstrado para o leitor que, para realizar a interação entre o Arduino UNO e o ScadaBR foi necessário utilizar um protocolo de comunicação chamado Modbus, no entanto, este protocolo possui basicamente duas versões que podem cumprir este papel, estas são: Modbus Serial e Modbus TCP/IP. Vamos então para mais um posto ScadaBR Arduino.
O objetivo deste conteúdo é abordar novamente a questão da comunicação entre o Arduino UNO e o ScadaBR, porém, desta vez, por meio da versão Modbus TCP/IP. Como pode-se perceber, esta abordagem possibilita que as informações provenientes das leituras das variáveis e as utilizadas nos acionamentos, possam ser transmitidas via rede.
Produtos Utilizados no Projeto:
- 1 Arduino UNO + Cabo USB AB
- 1 Shield Ethernet
- 1 Resistor 10k Ω 1/4 W
- 1 Protoboard
- Sensor de umidade e temperatura DHT 11
Montagem Física (Hardware):
Desenvolvimento do Código para ScadaBR 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 realizar as leituras provenientes do sensor DHT11 através do ScadaBR.
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 TCP/IP no código do Arduino UNO. As bibliotecas utilizadas neste artigo foram desenvolvidas pelo André Sarmento e estão disponíveis aqui.
O desenvolvimento do código começa com a inclusão da bibliotecas Modbus.h e ModbusIP.h por meio da diretiva #include.
[crayon-673f17479026f658756724/]
Em seguida, deve-se criar o objeto do tipo DHT para representar o sensor DHT11 no código do Arduino UNO.
[crayon-673f174790274864450871/]
Como o objetivo desta aplicação é simplesmente realizar a leitura de dados, utiliza-se a instância denominada Input Register. Lembre-se que, neste caso, deseja-se obter tanto os valores de temperatura quanto os de umidade, portanto, duas instâncias do tipo citado devem ser utilizadas para armazenar as informações em questão. Sendo assim, determina-se os offsets das instâncias citadas anteriormente.
[crayon-673f174790275404365938/]
Antes de prosseguir para a função setup(), deve-se criar o objeto do tipo ModbusIP.
[crayon-673f174790276935712936/]
Além disso, declara-se uma variável do tipo long para auxiliar na contagem de tempo para a realização da leitura do sensor (recomenda-se que seja utilizado um valor de aproximadamente 2 segundos na realização das leituras).
[crayon-673f174790277825896883/]
Na função Setup(), pode-se perceber que existem três blocos de código, de modo que, o primeiro diz respeito à configuração dos parâmetros de comunicação do protocolo (deve-se ficar atento apenas à escolha de um endereço de ip compatível com a rede local que está sendo utilizada) e à inicialização da comunicação propriamente dita.
O segundo bloco de código é responsável pela criação das instancias utilizados do tipo Input register, citadas anteriormente.
Por último, deve-se inicializar o sensor DHT11 e preencher a variável ts com o valor proporcionado pela função millis(), para então, realizar a leitura do sensor em intervalos de tempo predeterminados.
[crayon-673f174790278624974945/]
Já dentro da função loop(), encontra-se a função task(), utilizada 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, pode-se perceber a existência de uma estrutura condicional IF cujo conteúdo consiste em determinar que seja feita a leitura do sensor a cada 2 segundos. Observe que as funções utilizadas para inserir os dados nas instâncias criadas são: readTemperature() e readHumidity().
[crayon-673f174790279012752504/]
Desenvolvimento da Estrutura de Controle no Scadabr Arduino
Assim como nos artigos anteriores, o primeiro passo para prosseguir com o desenvolvimento de uma aplicação no ScadaBR consiste na criação de um Data source, ou seja, na definição do elemento responsável por fornecer os dados do processo para o ScadaBR.
Posteriormente, deve-se fornecer algumas informações para o ScadaBR visando a identificação do dispositivo e a definição do tempo em que os dados serão atualizados no ScadaBR Arduino (esta informação é muito importante, sendo assim, 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, deve-se especificar também os parâmetros relativos à comunicação, como por exemplo: o Tipo de transporte utilizado e também o Endereço IP do Arduino UNO.
Após a determinação do Data source deve-se criar os Data points correspondentes aos elementos de hardware que serão utilizados. Inicialmente, cria-se um novo Data point para interagir com a instância do tipo Input register denominada TEMP_IREG e em seguida deve-se definir seus campos da seguinte forma:
- No campo Faixa do registro deve-se selecionar a opção Input register.
- O campo Tipo de dados modbus estará automaticamente definido como Inteiro de 2 bytes sem sinal.
- Deve-se atribuir o valor 0 ao campo Offset, devido ao fato de o Input register TEMP_IREG ter sido a primeira instância deste tipo a ser adicionada 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 manualmente.
O segundo Data point a ser criado servirá para interagir com a instância do tipo Input
register denominada UMI_IREG. Seus campos devem ser definidos da seguinte forma:
- No campo Faixa do registro deve-se selecionar a opção Input register.
- O campo Tipo de dados modbus estará automaticamente definido como Inteiro de 2 bytes sem sinal.
- Deve-se atribuir o valor 1 ao campo Offset, devido ao fato de o Input register UMI_IREG ter sido a primeira instância deste tipo a ser adicionada 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 manualmente.
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 para conferir se o Data Point em questão foi criado e clicar na seta para visualizar o conteúdo dos Data points criados.
Este foi mais um conteúdo que preparamos com bastante cuidado para você. Esperamos que tenha gostado do artigo “ScadaBR Arduino Comunicando através do protocolo TCP/IP”. Lembre-se de deixar suas dúvidas, críticas e sugestões nos comentários abaixo.
Conheça toda Linha de Produtos Arduino no Site UsinaInfo.