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, 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…

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 suas configurações (IOKit) na aba Modbus e parametrize-as:

Figura 3: Configuração do protocolo Modbus.
- Na aba Setup, configure a propriedade PhysicalLayer como Serial
- Configure a aba Serial conforme abaixo. 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):
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:
- A biblioteca arduino-modbus-slave é licenciada segundo a GNU LGPL.
- 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.

Boa Noite.
Preciso fazer esta mesma troca de dados entre o arduino+wifi ESP8266 com o elipse E3 free. Trabalho de TCC. Alguém teria algum exemplo que eu possa estudar?
Obrigado.
Andre Galao
Olá, tudo bem? Conseguiu?
Boa noite! Gostaria de saber se é possível alterar o BaudRate? No artigo tem essa informação “Verifique o ID Slave (regBank.setId(1)) e a distribuição e parametrização dos pinos. NOTA: mantenha o BaudRate em 9600bps”.
Já alterei o baudRate na biblioteca e no firmware do microcontrolador do arduino e não obtive sucesso.
Bom dia! Preciso comunicar um IED com o Elipse. Preciso realizar as medições no SEL 735 e vizualizar no Elipse Power. Como realizar essa parametrização para que isso seja possível?
Thank you so much, this example help me!!!
Boa dia. Estou montando uma unidade REMOTA caseira com Arduino e gostaria de controlar 4 entradas digitais, 2 entradas analógicas, 4 saídas digitais e uma saída pwm. Estou aprendendo Elipse na escola e pesquisando esse assunto no site me parece possível. Poderiam explicar a manipulação das analógicas no driver? Agradeço.
Olá Vagner,
Para leitura/escrita de dados do tipo analógico(Word), configure os parâmetros N’s da Tag, conforme consta na documentação do Driver Modicon Modbus em: Configuração >> Configurando Tags >> Configurando um Tag de Comunicação >> Configuração Numérica.