PortDock

Modbus addresses: 0-based vs 40001 notation — from manual to wire

The same first register is written 0, 1, 40001, 400001 or 0h0001 depending on the manual. How to get the 0-based wire address, with real manual examples.

The address inside a Modbus request frame is always a 0-based number from 0 to 65535 — this guide calls it the «wire address». Device manuals and PLC or HMI software, however, write the same address in several ways. Misreading the notation shifts values by one or triggers exception 02 (illegal data address).

Three notations

NotationFirst holding registerWire address
0-based0 (0x0000)as is
1-based (register number)1number − 1
PLC notation, 5 digits40001last four digits − 1 (first digit = table)
PLC notation, 6 digits400001last five digits − 1 (first digit = table)

The first digit names the table

PrefixTableRead functionWrite function
0xxxxCoils0105 · 0F
1xxxxDiscrete inputs02— (read only)
3xxxxInput registers04— (read only)
4xxxxHolding registers0306 · 10

The prefix never goes on the wire. The function code selects the table and the address is the 0-based index inside it, so 30001 and 40001 are both wire address 0 — sent with different functions (04 and 03). Five digits only reach the 9999th entry; beyond that six digits are used, so 410000 is holding register wire address 9999.

How real manuals write it

First entries from the manuals of the devices on this site. Each device page shows «Manual» and «Wire» addresses side by side.

DeviceManualWireHow to read it
LS ELECTRIC GIMAC1000300010PLC notation; the map also has a 0-based ADDRESS column
Hanyoung Nux LC30104 (0067)103PLC number plus the hex wire address in brackets
Autonics TK301001 (03E8)1000Six-digit reference plus the hex wire address in brackets
Rootech Accura 3300E1000099991-based register number (number − 1)
LS ELECTRIC LSLV-S1000h00010Hex number; the manual's frame example sends «address − 1»
Hanyoung Nux VXD-register 0 / Address 10D-register column is 0-based, Address column 1-based

A hex address is not necessarily 0-based (see 0h0001 above). If the manual has a frame example, compare its start-address bytes with the map — that is the most reliable check, and how most of the devices above were verified. The page references are in each device page's notes.

When values look shifted by one

In PortDock

Published 2026-10-19