Skip to main content

Modbus Register Types — Coils, Discrete Inputs, Input Registers, and Holding Registers

By NFM Consulting 1 min read

Key Takeaway

The four Modbus register types: coils (1-bit R/W), discrete inputs (1-bit RO), input registers (16-bit RO), and holding registers (16-bit R/W) with address ranges and function codes.

Quick Answer

Modbus organizes data into four separate address spaces: coils (1-bit read/write), discrete inputs (1-bit read-only), input registers (16-bit read-only), and holding registers (16-bit read/write). Each has its own address range and function codes.

Register Type Reference

TableAddress RangeWidthAccessRead FCWrite FC
Coils00001-099991 bitR/WFC01FC05, FC15
Discrete Inputs10001-199991 bitROFC02
Input Registers30001-3999916-bitROFC04
Holding Registers40001-4999916-bitR/WFC03FC06, FC16

Address Confusion: 0-Based vs 1-Based

The Modbus protocol uses 0-based addressing in the data frame — register 0 in the request corresponds to address 40001 in documentation. Device manuals use 1-based addressing. SCADA tools let you configure which convention they use. Always verify which convention a register map uses.

Why Many Devices Use Only Holding Registers

For simplicity, many manufacturers map all data (including read-only sensor values) into the holding register space, using FC03 for all reads. This eliminates the need for separate FC04 access but deviates from the original Modbus data model.

Frequently Asked Questions

Ready to Get Started?

Our engineers are ready to help with your automation project.