Modbus address offset confusion explained
Address offset confusion is one of the most common Modbus problems.
The problem is simple: different manuals and tools show addresses in different ways.
Two common styles
Some manuals show values like:
- 40001
- 40002
- 40003
Other tools want raw offsets like:
- 0
- 1
- 2
These may point to the same actual data, but they are not entered the same way.
Why this causes problems
A user sees register 40001 in the manual and enters 40001 into a client that expects 0. The client then reads the wrong place or fails.
What the numbers mean
Numbers like 40001 are often used to show the register area and the register number together. But many client tools do not want that full number. They want only the offset.
That is why the same value may be entered as:
- 40001 in one tool
- 0 in another tool
- 1 in another tool
How to figure out the correct address
Check these things:
- Does the manual use full register numbers like 40001?
- Does the client ask for offset only?
- Is the client using 0-based or 1-based input?
If you are not sure, test a known register with two nearby address options.
How manufacturers should document this
A manual should clearly say:
- whether addresses are raw offsets or register numbers
- whether the first holding register is entered as 0, 1, or 40001
- one real example using a known value
Final note
Many Modbus address problems are not device problems. They are input format problems between the manual and the client tool.
Consulting
Manufacturers can hire me for help with Modbus device documentation, testing, and troubleshooting.