Modbus IP - Device ID


#1

Bom dia,

Estou a tentar obter resultados de um registador usando o protocolo Modbus TCP. O meu registador tem como "device id", pré-definido, o valor 255, mas no scadabr só consigo procurar escravos de 1 a 240.

Existe alguma maneira de eu procurar o escravo 255?

 

Cumprimentos,

 

José Silva


#2

Não tem como mudar o valor do id do equipamento?

Acredito que a limitação de endereços não terá como alterar.

 


#3

O equipamento vem de fábrica com o ID 255 para o Modbus TCP e não é configurável.


#4

Estou com o mesmo problema, estou com equipamento FieldLogger que usa o ID 255 para comunicação Modbus/TCP. Gostaria de criar o supervisorio no scadaBR no cliente mas estou com esta limitação. Não entendo muito de programação, como sei que o projeto é codigo aberto existe alguma maneira de alterar o codigo fonte para dar condições de usar ID 255?


#5

Enfrentei os mesmos problemas com o METSEPM5340 da Schneider-eletric. Não consegui fazer a leitura de  do slave ID 255 apenas alterando o código do ScadaBR, também  tive que alterar a biblioteca Modbus4J.jar que limitava até o ID 247.

PS:Não sei programar em Java, fiz tudo intuitivamente, logo não sei se essa é a melhor forma, mas foi como consegui.


#6

Senhores boa noite,

existem sim a possibilidade de driblar esta situação:

1 - Além do Modbus TCP qual outro protocolo pode ser efetuado a comunicação com este?

2 - Para esse fieldloger, qual é a marca e modelo?

Paulo Sérgio


#7

Caro amigo Matheus Graest,

Poderia descrever melhor como conseguiu a solução?

 

Obrigado
Paulo Sérgio


#8

O Equipamento é um FieldLogger da Novus

 

Att,

 

Thales


#9

Paulo Sergio,

Fiz o seguinte:

Baixei o código do ScadaBr do seguinte repositório: https://svn.code.sf.net/p/scadabr/code/branches/rbautomacao-fsgv/

Alterei a classe ModbusPointLocatorVO na linha que restrige o slave ID  entre 1 e 240 para 1 e 255. Somente isso não resolveu o erro que dava (com.serotonin.modbus4j.exception.ModbusTransportException: Invalid slave id)

Percebi que esse erro vinha da biblioteca Modbus4J.jar, procurei pelo código fonte dessa biblioteca e fiz a alteração(não lembro agora em quais classes), infelizmente  deu erros ao compilar o ScadaBR(creio que problemas de compatibilidade da versão), então peguei a biblioteca que acompanha o código fonte do ScadaBR e decompilei, alterei e re-compilei.

Funcionou e hoje consigo ler o equipamento pelo Modbus IP no slave ID 255 no ScadaBR no computador. Preciso rodar este ScadaBR em um Raspberry Pi que é onde estou tendo dificudades agora.

att Matheus


#10

Matheus, 

Estava tentando fazer exatamente isso decompilar e recompilar, o problema é que não conseguir ainda recompilar, usei o JD decompiler, Eclipse, entre outros. A classe que acredito que tem que alterar é a ModbusMaster.class que faz parte do modbus4J.jar. Bom estou tendo muita dificuldade nesse processo. Teria como desponibilizar o seu arquivo ja modificado modbus4J.jar?

Att,

Thales


#11

Thales,

Posso sim.

Compartilhei pelo Google Drive:

https://drive.google.com/open?id=0B47xgWUIfNxDM0xPZWYzN3hVdzA&authuser=0

att: Matheus


#12

Olá Matheus,

Muito obrigado por sua ajuda. Testei seu arquivo, em parte funcionou. A parte que é usada para fazer o teste de conexão funcionou, porém quando vou adicionar um data point ainda me limita a ID 240. Vc conseguiu adicionar algum data point com este arquivo modificado com ID superior a este? Qual programa você usou para decompilar e recompilar os arquivos?

Att, Thales


#13

Olá Thales.

Essa é a parte tem que ser alterada no código do ScadaBR.

No arquivo ModbusPointLocatorVO.java

Procure pela linha:  StringUtils.isBetweenInc(slaveId, 1, 240)

e faça a alteração.

att.

Matheus Lima


#14

Matheus e demais.

Peço desculpas por fazer esta pergunta neste topico mas estou acompanhando esta discussão e vejo que voces estao ativos no uso do ScadaBR. Sou iniciante no ScadaBR e sempre utilizei sofware supervisorio pagos na versao demo. Sempre tive um pe atras com o uso de supervisorios pois a gente perde a noção do que esta por tras do sistema embora tenha um ganho imenso de produção e facilidades no desenvolvimento de aplicações. Gosto da ideia de sofware livre e como estou iniciando projetos simples de automação com alunos do primeiro e segundo ano de Eng de Controle e Automação com Arduino me interessei no uso do ScadaBR para supervisionar os projetos. Sou professor na area de automação e acho que se os alunos dominarem e entenderem o ScadaBR serão usuarios competentes em qualquer supervisorio, livre ou não. Gostaria de informações de usuarios do ScadaBR e da opiniao sincera de voces sobre este projeto. Começa que o Java e TomCat para o ScadaBR estao em versoes anteriores e Java 6 nao esta mais disponivel na Oracle. Temos entao, problemas para instalação, segurança e compatibilidades de versoes.

Agradeço qualquer resposta sobre esta duvida e se acharem necessário podemos abrir um topico novo para compartilhar estas questoes.

Atenciosamente,

Luiz Edival

 


#15

Fala Luiz mais uma vez, como não estão disponíveis, realmente eles não acompanham mais os novos SO's mas disponíveis ainda estarão por um bom tempo, http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase6-419409.html dá um look aí, resolvi responder seus questionamentos por questão de identidade. Sou professor em 3 faculdade de Engenharia Elétrica, Eletrônica e Mecatrônica e em todas utilizo com meus alunos o ScadaBR, além de utilizar para serviços de integração. Na faculdade o que mais fazemos é o arduino se comunicando com o ScadaBR por modbus serial com cabo usb mesmo ou até em barramento RS485, ano passado fizemos um barramento com 18 arduinos ligados em um supervisório só, ficou legal, mas o protocolo ainda é muito instável, isto não tem nada a ver com o ScadaBR, tem a ver com a biblioteca modbus serial desenvolvida pelo jpmzometa para arduino conversar em modbus, em qualquer supervisório terás problema, o que dizem é que o protocolo modbus TCP/IP para arduino está muito bom, ainda não tive tempo de testá-lo, mas tenho vontade. É isso aí, se divirta! 

Abraço!

Eng. Fabio


#16

Fabio,

falando do protocolo modbus, vc chegou a testar a revisão feita pelo professor André Sarmento?

Ele fez uma revisão de várias bibliotecas e incluiu tudo em um pacote só, incluindo funções modbus que o JPMZometa não olhava.

Estou testando elas e até agora está bem. Queria testar em larga escala mas ainda não deu.

Meus slaves estão crescendo e estou mesclando na mesma rede equipamentos baseados em arduino e em sistemas industriais profissionais.

Estive de férias e a atualização ficou parada mas agora começam a surgir novas telas que vc já tem acesso.

Vou iniciar o tópico da energia com aquele equipamento de qualidade que olhamos. Fique de olho.

Edival, que bom ter mais um professor em nosso meio. Podemos montar salas virtuais para essa galera ajudar a desenvolver mais nossos conceitos. Eu me prontifico a ajudar.


#17

Matheus,

Muito obrigado pelo esforço e ajuda, irei testar ainda a sua dica, no entando para adiantar o projeto acabei optando por usar Modbus Serial RTU, já que  equipamento também tinha esta opção.

Luiz e Fabio,

De fato falar sobre o ScadaBr não tem a ver com  este topico, mas irei expressar minha opnião a respeito. Algum tempo atrás tentei iniciar com ScadaBr, tive muitas dificuldades e abandonei, porém recentemente tive mais paciencia e percebi que o projeto é incrivel. Tem muitos recursos que não ficam pra trás de supervisórios pagos, só tem que ter paciência pois tem algumas particularidades, exige um pouco de conhecimento em programação orientada objeto pra fazer algumas coisas. A proposta é fantastica e os idealizadores estão de parabéns. Recetemente fiz um projento simples para um cliente e além dele ter economizado um valor razoavel a aplicação ficou legal e funcional. Sobre o arduino e a biblioteca de jpmzometa ficou com a comunicação perfeita quando usei o E3 comunicando em bloco. Não sou professor mas é interessante ver pessoas como vocês terem a iniciativa de utilizarem o arduino e ScadaBr como ferramenta de estudo.

 


#18

Pessoal.

Obrigado pelas respostas e pelos incentivos. Vou continuar os estudos aqui e aprender mais sobre o ScadaBR. Atualmente tenho 4 alunos, iniciantes tbem mas que tem futuro. Farmsid, como podemos abrir estas salas virtuais? Gostei da ideia! No proximo semestre, tenho que ministrar aula de supervisorios, utilizamos Citect e E3. Pretendo agora colocar o ScadaBR e a ideia da sala virtual é boa. Como sao alunos do quarto ano, podemos ter resultados interessantes no uso do ScadaBR.


#19

edival,

acho que vale a pena ensinar o scadabr também.

Vejo que se a comunidade de técnicos crescer poderemos ter um up no projeto e isso ajudaria muitas pessoas.

O projeto ScadaBR derivou de um outro chamado Mango. Esse, para sobreviver, teve que começar fatiar o software e cobrar por algumas coisas. Acho válido, mas foge do que eu gostaria.

A sala virtual, seria usando qualquer um dos disponíveis atualemente. Até um hangout serve. Com ele pode ser visto a tela do supervisório.

Mas o interessante é setorizar o scadabr, depois distribuir entre os alunos e pedir apresentações. 

Assim, todos aprenderiam o básico. Poderiamos até criarmos a lista de necessidades e quem sabe poderiam ser um TCC? Coisa de maluco, mas me perdoe.

Olha, com o scadabr temos os seguntes temas que me vem a mente:

Instalação linux e windows

Tomcat

Java

HTML

Criação de imagens animadas

mysql

sistemas de backup e transporte de instalações

redundancia de servidores

Modbus serial e modbus IP

radiuino

integração do scadabr com mysql

entre uma série de outros, que os amigos aqui podem ajudar.

 

até


#20

Boa noite Matheus e Thales,

Achei muito interessante a solução apresentada.

Uma outra solução para o problema apresentando que eu fiz, foi utilizar a comunicação(serial 485) deste field logger com a IHM(RS485 Auxiliar).

Na regua de bournes utilizei os 50 e 49 e fiz um jumper com os pinos 4 e 8 da comunicação com a IHM

terminal 50 jumper com pino 4

terminal 49 jumper com 8

Mas a solução apresentada acima resolve todos os problemas e nao especificamene para um produto

Poderiam apenas confirmar se o procedimento abaixo esta correto:

1 - baixar a biblioteca em https://drive.google.com/open?id=0B47xgWUIfNxDM0xPZWYzN3hVdzA&authuser=0  obs: substituir pela existe, onde ela fica ?

2 - No arquivo ModbusPointLocatorVO.java procure pela linha:  StringUtils.isBetweenInc(slaveId, 1, 240) - obs: alterar de 240 para 255

Parabéns e muito obrigado

Paulo Sérgio