Driver ModBus para Linux

Olá,

No forum antigo eu postei em uma thread com o mesmo tema, com respeito ao desenvolvimento de um driver ModBus intercabiável com E3 para plataforma Linux - a resposta que recebi é que a Elipse não suporta Linux. Na verdade não estou pedindo suporte para a plataforma, mas sim para o protocolo de comunicação! Gostaria de obter mais detalhes sobre a arquitetura do driver ModBus desenvolvido pela Elipse de modo que eu possa replica-lo na minha aplicação Linux. Este driver pode ser compartilhado com outros que tenham a mesma necessidade, sem que a Elipse tenha que se preocupar em adotar a plataforma.

Olá @marcos_labzero,

Acho que entendi, você quer desenvolver um programa em Linux que fale no protocolo Modbus, correto? Creio que você pode olhar este documento. Se você já conhecer esse link, imagino que possa então desenvolver a comunicação no Linux e o E3 como um driver Slave no Windows.

Obrigado @balestrin vou dar uma olhada no documento

@balestrin obrigado pelo direcionamento - consegui avançar um pouco no processo. Montei um SocketServer que, periodicamente, atende a uma conexão do Master, o qual conheço o ID. Fazendo a leitura do InputStream desta conexão recebo 0000000000000001 independente de qualquer tentativa de request. O que estou perdendo? Obrigado!

Prezado Marcos,

Você pode baixar as versões mais atuais da especificação do protocolo Modbus, a qual seguimos em nossos drivers, no site oficial do protocolo, no seguinte link: http://modbus.org

Nosso driver Master implementa a maioria das funções “padrão” do protocolo, e inclui também algumas extensões proprietárias.

Na página indicada você encontra, na seção Technical Specification, a especificação do protocolo em si, onde é descrito o PDU, que é a parte invariável, que é igual nos modos TCP, ASC e RTU, e também tem um link onde é descrito especificamente o Modbus/TCP (o PDU padrão com sufixos e prefixos para uso em meio Ethernet TCP/IP).

O help do driver esclarece quais são as funções padrão e quais as extensões proprietárias, que tem suas especificações também descritas no mesmo help. Recomendo fortemente dar uma lida neste help (sugiro baixar a versão mais atual do driver sempre do nosso site, que no momento é a 2.8).

O fato de usarmos um protocolo padrão tem justamente esta vantagem: permitir a interoperabilidade com sistemas diversos, em quaisquer plataformas, desde que aderentes à mesma especificação padrão.

Lembre-se que o protocolo Modbus tem 3 variações básicas: TCP, RTU e ASC.

Se pretendes comunicar em TCP/IP, recomendo fortemente empregar o Modbus/TCP, que até é mais fácil de implementar por prescindir do CRC (a camada TCP já possui verificações de erros). Como o próprio help do nosso driver esclarece, há possíveis problemas de leitura de valores inválidos na utilização de RTU em meio TCP/IP para os quais não existem boas soluções de contorno (o RTU foi inicialmente pensado para meio serial 232 ou 485).

Qualquer nova dica que precisar ou dúvida adicional envolvendo os produtos da Elipse não hesite em nos contatar.

Boa sorte!

Boa Tarde, estou tentando fazer um programa que leia estabeleça uma conexão via modbusIP em c, no linux. Eu preciso pegar os dados de um multimedidor de tensão e corrente e gravar em um arquivo. Alguém tem ideia de como utilizar o eclipse com a biblioteca libmodbus?

@Ana_Silva, nossos produtos não tem integração com a biblioteca libmodbus bem como não são compatíveis com a plataforma Linux.

Quem usa Linux e tem conhecimentos básicos de linguagem C deve estudar o pvbrowser.
pvbrowser é uma plataforma para desenvolvimento de sistemas SCADA em C++.
A comunicação modbus RTU ou TCP é feita com facilidade a partir de um script que gera um “daemon” de comunicação (equivalente a um “serviço” no Windows).
Está tudo pronto lá neste projeto : http://pvbrowser.de