Menu

Modbus Input Registers

Modbus input register overview covering read-only 16-bit values, measurement-oriented use cases, and their relationship to holding registers.

Categories:

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

AspectInput RegistersHolding Registers
AccessRead-onlyRead/write
Common function code0403, 06, 16
Typical useMeasurements, counters, monitored valuesSetpoints, 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 PatternWhat Usually HappenedPractical Result
Input register treated like holding registerThe map was copied loosely without data-family disciplineWrites fail or target the wrong location
Data type was assumed too earlySignedness, scaling, or multi-register interpretation was unclearValues look wrong even though communications work
The wrong document revision was usedFirmware or model differences changed the mapReads succeed but the value meaning is wrong