Search code examples
javamodbus

Jlibmodbus read holding register limit to 125


I am using jlibmodbus library to read slave registers. I am able to read registers from 0 to 125 but if I try to read registers value 126 or greater the I get error saying error in start offset.

I have around 500 registers, how do I read all in one go using read holding registers.


Solution

  • A Modbus read register response (functions Read Input Register or Read Holding Register) has space for 125 registers.

    You need to issue four requests to read 500 registers. In each request you specify the start address:

    • request 1: start address=0, number of registers=125
    • request 2: start address=125, number of registers=125
    • request 3: start address=250, number of registers=125
    • request 4: start address=375, number of registers=125

    The addresses used here are fictional, you need to check your device's Modbus mapping to get the correct ones.