BUG?! ModBus (Comando de escrita)

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

Olá Euclides,

Esse comando hexz 16 (dec 22) é usado para escrever em bits específicos do registrador.

Talvez esteja configurado como “bit” mas na verdade é um registrador de 16 bits?
nesse caso sim utilizaria o comando hexa 10 (dec 16);

por favor dá uma olhada se é possível configurar o “Tipo de dados modbus” do datapoint como um registrador holding de 16 bit (algo como “inteiro de 2 bytes sem sinal”, por exemplo).

obrigado