Holding registers vs input registers

FC03 and FC04 look almost identical on the wire. What actually differs, why a device may implement both, and how to find out which one holds your value.

4 min read · Updated

Both are tables of 16-bit registers. Both are read with an address and a quantity. The difference is intent and access.

Holding registerInput register
Read function codeFC03FC04
WritableYes (FC06, FC16)No
Reference style4xxxx3xxxx
Typical contentSetpoints, configuration, and often measurements tooMeasurements and status

Why the distinction is weaker than it looks

The standard describes input registers as read-only data from the process and holding registers as read/write. In practice many devices put everything in holding registers, because a single table is simpler to implement and clients only need one function code.

The result is that you cannot infer the table from the kind of value. A power meter may expose voltage at holding register 100 on one model and input register 100 on the next model from the same vendor.

Finding out which one a device uses

  1. Check the manual's reference numbers: 3xxxx means input register, 4xxxx means holding register.
  2. If the manual is ambiguous, read the same address with both function codes. One will answer and the other will usually return exception 02, illegal data address.
  3. If both answer with different data, the device implements both tables and you need the manual to say which is which.
  4. If both answer with identical data, the device maps one table onto the other — either is fine, but be consistent.
A scan that tries both function codes across a range answers this in one pass, and is a good deal faster than reading a manual that may not match the firmware in front of you.

Does it matter for reading?

Only in that you must use the right function code. Once you are reading the correct table, decoding, scaling and byte order behave identically. The distinction matters most when writing, and when a device restricts configuration to holding registers.

Free tool

Modbus Scanner

Connect to a device and understand its register map.

Holding registers vs input registers | Modbus Logic