Arduino Ethernet TCP IP

Boa Tarde, Estou com dificuldades na comunicação entre um arduino Uno com Ethernet Shield W5100 e um elipse E3 via modbus TCP IP, via RTU eu já consegui realizar a comunicação, porém via Ethernet está complicado. O funcionamento será simples, um valor de uma variável e uma saida digital serão lidos pelo supervisório, a variável será um nível obtido por um sensor ultrassônico e a saida será o acionamento de um inversor de frequência. somente 2 Tags de comunicação. Segue imagem do supervisório e das bibliotecas que tenho pro arduino.


Att. Állex De Pin

1 Like

Prezado,

Recomendo a utilização das versões abaixo:

Bibilioteca Modbus TCP Arduino:
https://code.google.com/p/mudbus/downloads/detail?name=Mudbus%201_0.zip&can=2&q=
Nota: renomear o arquivo Mudbus.cpp para M0dbus.h (pode ser qualquer nome) e declarar no código fonte do Arduino conforme abaixo:
#include “Mudbus.h”
#include “M0dbus.h”
Mudbus Mb; //Port 502 (defined in Mudbus.h) MB_PORT

Driver Modbus TCP Elipse
Elipse Driver Modicon Modbus v2.08 Build 17 (Oct 19 2012 16:29:21) - Disponível no site da Elipse
Bloco de Comunicação: B1 =1; B2 =1; B3 = 0; B4 = 1
Memória B4 = 1 equivale ao Mb.R[0] do codigo do Arduino
Parâmetro B2 =1 é o código da função do driver (Read = 03, Write = 6, Data = Word e Size = 02)

Veja os exemplos da bibilioteca do Arduino e teste a comunicação diretamente pelo driver Modbus via E3 Studio.
Já utilizo essa configuração em uma planta industrial e funciona normalmente.

Att,
Daniel Gleison

3 Likes

Muito obrigado Daniel, sua resposta me ajudou muito. conclui tudo com êxito.

1 Like

@dgautomacao, você que já criou aplicações… modbus TCP/IP. Já conseguiu tranquilamente comunicação com os CLPS, montanda redes ?..

@Allex_DePin
Precisando de ajuda, estamos por aqui.

@edy_bahia
Estou trabalhando em um projeto de rede de CLP com driver Modbus TCP e comunicação wireless. Falta apenas a aquisição das licenças de driver Modbus TCP. Para cada IP, é necessário 1 licença de driver.

Olá Daniel,

Obrigado pelas dicas, eu baixei a biblioteca e vou tentar implementar esse tipo de comunicação em meu projeto.
Gostaria de perguntar-lhe uma coisa … como funciona a licença do driver modbus TCP da Elipse ou ele é free ?

SDS
Daltro

@Daltro,
Você pode fazer o download do driver no site da Elipse e utilizá-lo na sua aplicação. O licenciamento do driver vai depender de como você está utilizando o Elipse E3.

Modo Demo (sem licença): Terá restrições conforme indica o artigo http://kb.elipse.com.br/pt-br/questions/3318.

Licença de E3Studio: Você poderá utilizar o Studio sem restrições para configuração, mas a execução e comunicação têm um tempo limitado em 6 horas. Não é necessário qualquer licença adicional.

Licença de E3Server: Você não terá acesso ao Studio mas a execução será por tempo ilimitado. Terá restrição de número de tags conforme sua licença e será necessário adicionar uma licença de driver para cada driver adicionado ao projeto.

Daniel, Amigo. Pode me ajudar? Estou tentando fazer como seu post, usando tcp/ip e o elipse. Mas creio que estou esquecendo alguma coisa no codigo do arduino, pois nao consigo me comunicar de jeito nenhum. Consegue me enviar um projeto seu simples para conferir? agradeco. tiago.lorenski@edu.sc.senai.br

Tiago,

Você está utilizando as mesmas versões de biblioteca Arduino e driver Modbus?

Uso esse driver: Driver Modicon Modbus Master (ASC/RTU/TCP)
mas o problema ser no começo do código do arduino, nos registradores.7
Tem o TCP Slave, mas acho nao ser esse… Agradeço se pudar ajudar, nem ke seja ao menos ligar um led pelo elipse…simples…eu entendendo isso o resto vai embora.

@volt-engenharia
Adicione um tag (N1 =1; N2 =1; N3 = 0; N4 = 1) no driver Modbus TCP (IP: 192.168.1.8; Porta: 502), ligue um led no pino 8 do Arduino com shield Ethernet e teste o sketch abaixo.
No E3, ao escrever 1 no valor do referido tag, o led acenderá.

include SPI.h
include Ethernet.h
include “Mudbus.h”
include “M0dbus.h” // renomear o arquivo Mudbus.cpp para M0dbus.h
Mudbus Mb; //Port 502 (defined in Mudbus.h) MB_PORT

void setup()
{
uint8_t mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0x51, 0x06 };
uint8_t ip[] = { 192, 168, 1, 8 };
uint8_t gateway[] = { 192, 168, 1, 1 };
uint8_t subnet[] = { 255, 255, 255, 0 };
Ethernet.begin(mac, ip, gateway, subnet);
//Avoid pins 4,10,11,12,13 when using ethernet shield

delay(5000);
Serial.begin(9600);

pinMode(8, OUTPUT);
}

void loop()
{
Mb.Run();

digitalWrite(8, Mb.R[0]);
}

Daniel,

Agradeço sua paciencia. Fiz conforme o figurino. Como eu temia. Nao deu certo. Alias, creio que com o Arduino ou a programaçao dele esta ok, mas configurando o driver do elipse pra tcp/ip conforme varios tutoriais que visualizei na internet, e configurando a tag conforme vc orientou, ele nao consegue se comunicar com o supervisorio. Pelo menos ao tentar estabelecer a comunicacao, é nitido que ele nao se comunica porque o valor aparece null e nao consigo alterar e os icones nao ficam azuis quando estao se comunicando. Ja nao sei o que fazer. Deve ter algum outro problema, com IP, shield ou sei lá. Estou tentando conectar direto no meu notebook, nao sei se isso muda ou nao. Obrigado. colega.

Consegui Daniel. Fiz funcionar. Nao me pergunte como, mas acho que era problema de IP. Muito obrigado pela forca. Conte conosco.

Bom dia, Consegui fazer a comunicação tudo certinho, mas precisava botar um botão físico para também fazer um acionamento. Resumindo preciso acionar uma saída do Arduíno tanto pelo Modbus TCP IP quanto por pulsador como entrada digital do Arduíno. Alguém tem algum exemplo de código para isso ?

Boa noite Daniel, poderia me dar mais detalhes de como você esta fazendo a comunicação wireless?

Para a comunicação wireless pode ser utilizado um repetidor wi-fi conectado via cabo ao Ethernet Shield. Também seria possível a utilização do ESP266 que já possui interface wi-fi nativa.

Olá, estou tendo o mesmo problema que o Tiago tinha. Não consigo comunicar o Elipse E3 com o Arduino via Modbus TCP/IP. Já testei todas versões de Arduino e até hoje nada, estou a um bom tempo tentando resolver este problema vendo tutoriais, guias e vídeos porém não consigo realizar essa comunicação. Alguém poderia me ajudar?