A Modbus link that reaches the drive but shows the wrong value usually means the panel and the drive manual count registers differently. The on-wire address is zero-based, so reference 40001 is address 0, and a base mismatch shifts the request by exactly one register. Convert the number, prove it with one read-only read, then write.
When an operator panel talks to an AC drive over Modbus and the link looks healthy while the number is wrong, the map itself is usually sound: the two documents count registers differently. Drive manuals print references such as 40001. Many panel address fields want the raw address that travels in the message. The two conventions differ by exactly one register, which is why the classic remedy is to add or subtract 1, and why that remedy is right in one direction and wrong in the other. This page gives the conversion both ways, the symptoms that separate an address problem from a link or scaling problem, and a test order that proves the mapping with one read before anything is written to the drive.
The number on the wire and the number in the manual
Every Modbus read or write names a register twice: the function code in the message picks the table, and a 16-bit address field picks the register inside that table. That address runs from 0 to 65535, and it is the only number the drive ever sees. References such as 40001 exist on paper. In that notation the leading digit names the table and the count is numbered from 1, so holding-register reference 40001 travels as wire address 0, 40002 as address 1, and the last reference in the classic 5-digit range, 49999, as address 9998.
Manuals that print the 6-digit style run from 400001 to 465536 and convert the same way, so 465536 is wire address 65535. For holding registers: wire address = reference − 40001 in the 5-digit style, or reference − 400001 in the 6-digit style.
| Printed prefix | Table it names | First reference | Wire address of that register |
|---|---|---|---|
| 0 | coils, read/write bits | 00001 | 0 |
| 1 | discrete inputs, read-only bits | 10001 | 0 |
| 3 | input registers, read-only words | 30001 | 0 |
| 4 | holding registers, read/write words | 40001 | 0 |
An offset error is a base error: the panel resolves the number you typed with one convention and the manual wrote it in the other. Because there are only two bases, a base mismatch is exactly one register, never two or five. A larger shift comes from something else: a table prefix typed into the address field, the wrong table in the driver, or a register map that moved between manual revisions.
Symptoms and what each one points to
- No reply at all, or timeouts. Stop here: this is the link layer, wiring, serial settings or slave address, and the register map never comes into it. Work through the fixes for a Modbus RTU master that gets no reply first.
- The connection comes up but every read fails. The panel and the drive are not speaking the same transport or protocol variant. Check the driver selection, the subject of reads that fail while the link looks alive, before touching addresses.
- The drive answers with an exception, usually illegal data address. The typed number resolves to a register the map does not contain: a prefix or base error, or a register dropped in a newer revision.
- A value appears and updates, but it belongs to the neighboring parameter. This is the one-register base mismatch this page fixes.
- The value is the right shape but the wrong size, for example 500 where the drive shows 50.0. That is scaling or decimal placement, not an address problem. Apply the scaling factor in the map row and leave the address alone.
- The value never changes while the machine runs. You are probably reading a register that holds a constant, such as a rated parameter. Recheck which map row your number resolves to.
Compare the two documents before typing anything
You need exactly two facts. First, what the drive manual prints for one known register: a reference in the 40001 style, or a bare address in the 0 to 65535 style. Good manuals label the column; some print both, and then you read the column headed address for wire-address fields. Second, what the panel's address field expects, which its driver documentation states: the raw wire address, or a one-based register number whose first register counts as 1.
| Manual prints | Panel field expects | Number to enter |
|---|---|---|
| reference, 40001 style | wire address | reference − 40001 |
| reference, 40001 style | one-based register number | reference − 40000 |
| wire address | wire address | the address as printed |
| wire address | one-based register number | address + 1 |
Convert once, write the result next to the map row, and use the same base for every register in that table. Address formats do shift like this between devices and protocols, which is why the same discipline applies when tag address formats change between PLC protocols.
Prove the mapping with one read-only register
- Pick one parameter you can verify without Modbus. Output frequency is ideal: the drive's own display shows it while the motor runs, and the map marks it read-only.
- Enter the converted number for that register and change nothing else. One field, one change, so the result means something.
- Read it and compare against the drive display, applying the scaling in the map row. If the map says 0.01 per count, a reading of 4350 counts means 43.50 Hz.
- If the reply is an exception or the value belongs to a neighbor, go back to the comparison table instead of stepping through nearby numbers. Each wrong read is harmless, but hunting by trial hides which entry finally worked.
- Write only after a read has matched. Use a register the map marks writable, enter it in the same converted base, and make the first write with the machine in a state where a speed change can hurt nothing.
A write to a drive can change motor speed or stop production, so the first write belongs in a controlled state, and the rule used when commissioning any operator panel link applies here too: prove writes before motion depends on them.
Worked example: the manual prints 40001 and the panel wants the wire address
Say the drive manual's map has two rows: reference 40001, frequency reference, read and write; reference 40002, output frequency, read only, 0.01 per count. The rows in your manual will carry different numbers but the same structure. The panel driver's field is documented as the Modbus wire address, so it wants the zero-based number.
- Frequency reference: 40001 − 40001 = 0, so the field takes 0.
- Output frequency: 40002 − 40001 = 1, so the field takes 1.
Typed as printed, 40001 into a wire-address field asks for register 40001, and a drive map that ends near address 100 answers with an exception. Corrected, the panel reads 4350 counts while the drive display shows 43.5 Hz, and 4350 × 0.01 = 43.50 Hz confirms both the address and the scaling.
Now the other direction, the one behind the add-1 advice: a manual that prints bare addresses lists output frequency as address 1. Into a field that expects one-based register numbers, typing the printed 1 resolves to wire address 0 and shows your own setpoint. The entry becomes 1 + 1 = 2, and the readback at 43.5 Hz proves it. One addition, and only because the two bases differ.
Recommendation
Recommendation: For any panel-to-drive link that connects but shows the wrong value, write down the printed reference of one read-only parameter and the format the panel field expects before typing a number. Enter reference − 40001 if the field wants wire addresses, reference − 40000 if it wants one-based register numbers, and the printed address plus 1 only when the manual prints bare addresses into a one-based field. Prove the entry with one read against the drive's own display, then write once to a documented writable register with the machine in a safe state, and record the conversion next to the project.
After the fix: verify, record, recheck
Confirm the read across a speed change: the panel value should track the drive display, not hold one number. For a write, send the setpoint, then read the same register back and look at the drive. A sent command is not proof the drive accepted the value; the readback and the drive's own display together are.
Record four things with the panel project: the drive model and manual revision, the printed reference, the format the panel field expects, and the converted entry with the scaling. When the drive is replaced or the driver is reconfigured, redo the comparison from the new manual. A conversion carried over unchecked is how the next commissioning starts with a shifted value.
Keep the jobs separate while you are at it: the HMI reads and writes drive registers, and a notice or andon board only shows what you publish to it. If the cell also needs a screen for shift targets or downtime counts, that is a shop-floor signage decision, not a second HMI.
Questions
Why do some manuals print 40001 and others 400001 for the same register?
Both are reference notation for the holding-register table; only the field width differs. The 5-digit style runs 40001 to 49999 and covers wire addresses 0 to 9998, which was enough for early devices. The 6-digit style runs 400001 to 465536 and covers the full 16-bit wire address range of 0 to 65535. Subtract 40001 from a 5-digit reference or 400001 from a 6-digit one, and both give the same wire address.
The value is right in shape but ten times off, for example 500 where the drive shows 50.0. Is that an address offset?
No. An offset moves the request to a neighboring register, so the reading belongs to a different parameter. A reading that is the right size but mis-scaled means the drive sends whole counts and you are missing the scaling step: 500 counts at 0.1 per count is 50.0 in engineering units. Apply the scaling factor printed in the map row for the register you actually read.
Can a convention mismatch ever be worth two registers or more?
No. The two bases in use are one-based register numbers and zero-based wire addresses, so the difference between them is exactly one register. A shift of two or more has another cause: a table prefix typed into the address field, the wrong table selected in the driver, or a register map that moved between manual revisions. Check the manual revision against the drive firmware date before trusting any printed row.
Planning information, not legal or engineering advice. Rules differ by place: check codes and permits with your local authority and your licensed trades.