Modbus IP com transporte TCP Listener

Olá companheiros!

Estou implementando uma aplicação aqui com modem GPRS e a comunicação com o ScadaBR será por Modbus IP com tipo de transporte TCP Listener. Mas estou tendo problemas, a escuta na pota 502 não está levantando, estou recebendo os seguintes dados no arquivo de log catalina.out:

WARN 2020-09-14 22:54:58,202 (com.serotonin.modbus4j.ip.listener.TcpListener.init:88) - Initialized Port: 502
WARN 2020-09-14 22:54:58,707 (com.serotonin.modbus4j.ip.listener.TcpListener$ListenerConnectionHandler.acceptConnection:299) - Open connection failed on port 502, caused by Permission denied (Bind failed)
java.net.BindException: Permission denied (Bind failed)

Estou rodando o ScadaBR 1.1 CE em uma instância AWS EC2 Linux Debian 8 + Tomcat8 + Java7 + MySQL 5.7.

Alguém tem ideia de como conceder essa permissão?
Grato desde já.

Verifique no painel do Firewall do AWS se a porta 502 está aberta para fora sem restrição de acesso. E se tem outra aplicação na VM fora o ScadaBR que usa a porta 502

1 curtida

Já olhei, tá tudo liberado, e também a porta 502 estava liberada. Inclusive agora acabei instalando um outro gateway modbus que vi aqui no forum, o mbusd, esse tá rodando bem e levantando na porta 502. Parece ser algum problema com as permissões do java, vou continuar pesquisando sobre esse erro.

Olá companheiros! Consegui resolver. Só precisei conceder ao executável do java privilégios elevados, fiz isso com o seguinte comando:

~# setcap cap_net_bind_service+ep /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java

1 curtida

Olá thiagobem,

O seu sistema funciona bem?

Pode explicar como configurou do lado do modem gprs?

Obrigado,
Pedro Narra Pisa

1 curtida

Olá Pedro, o sistema aqui estamos desenvolvendo aos poucos, mas está rodando bem. No final das contas acabamos abandonando o uso do modbus em pontos com gprs e adotamos o protocolo mqtt, que não é suportado nativamente pelo ScadaBR mas foi possível utilizá-lo em conjunto com o nodered e sql.