Ola Pessoal,
Estava implementando uma solução com um equipamento GPRS onde este possue saidas digitais. Dei uma olhada na sua documentação e sua tabela modbus correspondente a saída seria 64500 hold register. Até ai tranquilo. Enviei o comando via Modbus TCP atrav’s de gateway e realizei um sniffing.
O pacote lido foi o seguinte: 01 16 FB F4 FF FE 00 01 C2 7C
Fiz o mesmo teste com Modbus RTU e tive o mesmo resultado (herança pegando solto).
O segundo byte deveria ser 10(hex) e não 16(dec).
Conversei com o Leandro, fabricante do equipamento (www.absltda.com.br) e o mesmo me respondeu o seguinte:
“A função de escrita em multiplos registros (decimal 16 ou, em hexa, 0x10) não está correta. Para escrever 01 no registro 64500, supondo a estação modbus 01, o frame deveria ser algo como: 01 10 FB F4 00 01 02 00 01 38 2B”
Bom… a versão que estou rodando era a 0.8 então instalei a versão 0.9 e o mesmo problema persiste!
[]s. Euclides Martins