What They Are
Input registers are 16-bit read-only Modbus values. They are commonly used for measurements, counters, and device-produced values that external systems should read but not write.
They are especially common when a device wants to expose monitored values without creating any implication that those points can be commanded. Temperatures, currents, totals, energy values, and device-produced calculations often belong here rather than in writable holding registers.
Input vs Holding Registers
| Aspect | Input Registers | Holding Registers |
|---|---|---|
| Access | Read-only | Read/write |
| Common function code | 04 | 03, 06, 16 |
| Typical use | Measurements, counters, monitored values | Setpoints, configuration, writable values |
[!NOTE] Some devices expose the same underlying value in both input and holding registers. The device register map is the authority on which path should be treated as canonical.
Why Read-Only Matters
Input-register read-only status is part of the protocol contract, not just a user-interface suggestion. If a device exposes a value here, the safest assumption is that the value is produced internally by the device and should be consumed as telemetry, not treated as a writable command path.
That distinction matters during gateway design because teams sometimes copy point lists without preserving the original data family. A monitored value exposed as an input register can be mistaken for a writable holding register if only the address number is copied and the register family is lost.
Common Failure Modes
| Failure Pattern | What Usually Happened | Practical Result |
|---|---|---|
| Input register treated like holding register | The map was copied loosely without data-family discipline | Writes fail or target the wrong location |
| Data type was assumed too early | Signedness, scaling, or multi-register interpretation was unclear | Values look wrong even though communications work |
| The wrong document revision was used | Firmware or model differences changed the map | Reads succeed but the value meaning is wrong |