Comunicando o Arduino com Elipse E3 e/ou Elipse SCADA.

Para a comunicação do Arduino com o software Elipse E3 ou Elipse SCADA, é necessário que o hardware tenha características de um PLC ou RTU, ou seja, ele precisa ter um protocolo de comunicação programado a fim de transmitir as informações adquiridas pelos dispositivos de campo (sensores, relés, etc.) ao sistema supervisório.

Um dos protocolos de comunicação mais conhecido e utilizado é o Modicon Modbus, que será utilizado como exemplo no artigo.

1) Configurando o Arduino IDE

  • Baixe o software Arduino IDE, disponível no site oficial, aba Download.
  • Configure o IDE para que ele trabalhe com a placa (board) e a porta (port) específicas do seu equipamento. No exemplo (Figura 1), temos um Arduino UNO Rev3 comunicando via COM3.

Figura 1: Escolhendo a placa e a porta no IDE.

2) Configurando o protocolo Modbus Slave no Arduino

Após as configurações físicas, é necessário configurar o hardware como uma unidade escrava para a rede Modbus. Para tal, é preciso uma biblioteca com as configurações do protocolo.

Dentre as várias bibliotecas Modbus Slave disponíveis na internet, utilizaremos neste artigo a arduino-modbus-slave, que pode ser encontrada neste site (ou no arquivo em anexo dentro da pasta Arduino > ModbusSlave.zip).

  • Importe a biblioteca ModbusSlave para a IDE Arduino através do menu Sketch > Include Library > Add .ZIP Library… (ver Figura 2).

Figura 2: Inserindo uma biblioteca na IDE.
  • Após a importação, abra o arquivo ModbusSlave_0.ino também em anexo. Este arquivo foi inspirado no código utilizado neste forum, podendo ser modificado conforme a necessidade.
  • Verifique o ID Slave (regBank.setId(1)) e a distribuição e parametrização dos pinos. NOTA: mantenha o BaudRate em 9600bps
  • Com as modificações devidamente realizadas, compile o código e, caso tudo esteja correto, faça o upload para o Arduino.

3) Configurando o driver Modicon Modbus Master (ASC/RTU/TCP)

Após o Arduino ter sido configurado como um escravo da rede,  é preciso então configurar o driver mestre para a comunicação.

  • Baixe o driver Modicon Modbus Master (ASC/RTU/TCP) no site da Elipse Software.
  • Adicione o driver à aplicação (E3 ou Elipse SCADA), acesse sua configurações (IOKit) na aba Modbus e parametrize-as conforme a Figura 3:

Figura 3: Configuração do protocolo Modbus.
  • Na aba Setup, configure a propriedade PhysicalLayer como Serial
  • Configure a aba Serial conforme a Figura 4. NOTA: se a porta COM1 tiver sido utilizada na configuração do Gerenciador de Dispositivos do Windows e na IDE, o driver deve ser configurado da mesma forma.

Figura 4: Configuração da aba Serial
  • Por último, configure as Operations. Para parametrizá-las, é necessário verificar alguns detalhes:

a) Saídas Digitais: A leitura de status será feita através da função Read Coil Status (0x) e a escrita através da função Force Single Coil (0x). A parametrização da Operation será a seguinte:


Figura 5: Configuração para Saídas Digitais

b) Entradas Digitais: A leitura de status será feita através da função Read Input Status (1x). Esta opção não realiza a escrita. A parametrização da Operation será a seguinte:


Figura 6: Configuração para Entradas Digitais

c) Entradas Analógicas: A leitura de variáveis analógicas será feita através da função Read Input Registers (3x). Esta opção não realiza a escrita. A parametrização da Operation será a seguinte:


Figura 7: Configuração para Entradas Analógicas

d) Saídas Analógicas: A leitura de variáveis analógicas será feita através da função Read Holding Registers (4x) e escrita através da função Preset Single Register (4x). A parametrização da Operation será a seguinte:


Figura 8: Configuração para Saídas Analógicas

4) Configurando os tags de comunicação do driver

Para a configuração dos tags, siga as informações contidas no manual do driver ou no artigo Comunicação com Arduino.

A configuração dos parâmetros dos tags de comunicação é a seguinte

N1: Endereço do equipamento escravo (Arduino)
N2: Código da operação (ver capítulo anterior)
N3: Parâmetro adicional, não utilizado (deixar em 0)
N4: Endereço do registro do Arduino a ser lido/escrito

Exemplo de configuração de uma Saída Digital:

No código Arduino foram configuradas quatro saídas digitais. Veja abaixo o código com a configuração da função Modbus e dos pinos de saída (arquivo ModbusSlave_0.ino):

//Add Digital Output registers
regBank.add(8);
regBank.add(9);
regBank.add(12);
regBank.add(13);
.
.
.
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
pinMode(12,OUTPUT);
pinMode(13,OUTPUT);

Nele, podemos identificar que os endereços 8, 9, 12 e 13 funcionam como saídas. A configuração do tag será a seguinte:

N1: 1 (ID Slave do Arduino)
N2: 1 (Operation para saídas digitais – ver acima)
N3: 0 (não utilizado)
N4: 8 ou 9 ou 12 ou 13 (endereço configurado no código)


Figura 9: Arduino controlando um LED através da saída digital 8

No anexo deste artigo estão as seguintes pastas:

  • Arduino: contém o arquivo ModbusSlave.zip (biblioteca) e a pasta ModbusSlave_0 com o arquivo ModbusSlave_o.ino (código para o Arduino)
  • ArduinoModbus_E3: contém uma aplicação em E3
  • ArduinoModbus_SCADA: contém uma aplicação em Elipse SCADA

NOTAS:

  1. A biblioteca arduino-modbus-slave é licenciada segundo a GNU LGPL.
  2. Os valores das variáveis de entradas analógicas ou digitais ficam flutuando caso não haja algo plugado a estes pinos. Para contornar esta situação, deve-se aterrar os pinos de entrada que não forem utilizados.

 

Anexos:

5369

Este artigo foi útil? Was this post helpful?
Yes0
No0

Deixe seu Comentário

Seu endereço de e-mail não será publicado. Campos marcados com asterisco são obrigatórios *