Modbus 40001 vs actual address offset 0
40001 is a traditional holding-register reference, while the first register in a conventional FC03 request has raw offset 0. Whether a PLC, HMI or client API expects the displayed 40001 or a zero-based offset depends on its documented convention.
Synthetic read-only example: A device map labels a status word 40001. A client API whose START_ADDRESS means transmitted offset may require 0. This is not a real PLC or VFD observation.
Check sequence: vendor map → data class → FC03 or FC04 → API address convention → approved read-only verification. Do not blindly subtract 1 or 40001 and do not change production controller/drive settings. Unit ID and physical I/O addresses are separate.
| Data class | Holding register | 16-bit word |
| Function code | 03 | Read holding registers |
| Traditional reference | 40001 | First holding register |
| Wire offset | 0 | Zero-based first register address |
| Next reference | 40002 | Normally offset 1 |
Manufacturer-, model- and version-specific documentation governs.