Holding Register - Knowledge Base

Modbus holding register overview covering 16-bit read/write data, multi-register values, function codes, and addressing.

Categories:

What a Holding Register Is

A holding register is a read/write 16-bit data point in Modbus. Holding registers are the most commonly mapped register type in gateway configurations, used for setpoints, configuration values, and bidirectional data exchange.

Register Size and Multi-Register Values

Each holding register is 16 bits (one word). For 32-bit or 64-bit values (floats, counters), multiple consecutive registers are combined. The byte arrangement depends on word order and byte order.

Data TypeRegisters UsedExample
UINT1610–65,535
INT161−32,768–32,767
FLOAT322IEEE 754 single-precision
UINT3220–4,294,967,295
FLOAT644IEEE 754 double-precision

Function Codes

CodeFunction
03Read Holding Registers
06Write Single Register
16Write Multiple Registers

Addressing

Holding registers traditionally use the 4xxxx reference number range (e.g., 40001). The first holding register may be 40001 (reference-style) or 0 (offset-style) depending on the implementation.

[!WARNING] Reference vs offset addressing is the #1 source of Modbus integration errors. See Modbus Addressing & Register Reference.

Need more help?

If this page does not resolve the issue, contact Chipkin support with the product model, protocol details, and any diagnostics you have already captured.

Open Chipkin Support