Modbus addressing is one of the most confusing aspects of industrial communication because different formats are used across documentation, tools, and SCADA systems.
This guide explains the differences and how to convert them correctly.
Example: 0001, 0002
This is a raw register number without function code information.
Example: 40001
4xxxx → Holding Registers
3xxxx → Input Registers
1xxxx → Discrete Inputs
0xxxx → Coils
Example: 400001
Used in modern SCADA systems to support larger address ranges.
Modbus documentation uses 1-based addressing, but the protocol uses 0-based.
Example:
40001 → 0
40002 → 1
This difference is the most common cause of Modbus errors.
Wrong register readings
Off-by-one errors
Misinterpreted data
Debugging delays