Modbus Address vs Register: Key Differences & How to Avoid HVAC Integration Failures
What You‘ll Learn in This Guide
What a Modbus register is and the four standard register types
What a Modbus address (PDU address) is and how it works in real communication
The core differences between Modbus registers and addresses
Why the off-by-one error causes most Modbus HVAC integration failures
Step-by-step method to read any Modbus register map correctly
Modbus address vs register: if you have ever configured Modbus RTU connections for thermostats, FCU controllers, or integrated devices with a BMS or PLC system, you’ve definitely encountered two confusing terms: Modbus Register and Modbus Address.
Although manufacturers often mix these two terms in datasheets, they are not interchangeable.
One brand may state “temperature setpoint at register 40001”, while another writes “setpoint at address 0”. If you fail to identify the manufacturer‘s numbering convention, you will face endless debugging, communication exceptions, or even incorrect data reading/writing across your HVAC building automation system.
This article breaks down Modbus register vs address logic in plain technical English, explains the fatal off-by-one error, and helps you achieve stable Modbus integration for thermostats, FCU systems, VFD drives, and BMS projects.
What Is a Modbus Register?
A Modbus register refers to a physical memory location inside a Modbus slave device.
Each register is a 16-bit / 2-byte storage unit that stores a single data value — such as temperature readings, fan speed parameters, or system setpoints.
Think of a register as a numbered data storage “mailbox” inside a Modbus device.
Modbus defines four standard register categories with fixed Modicon number ranges:
| Register Type | Modicon Range | Access | Typical HVAC Usage |
|---|---|---|---|
| Coils | 00001 – 09999 | Read / Write | Binary on/off control (fan enable, valve relay output) |
| Discrete Inputs | 10001 – 19999 | Read Only | Device status feedback (alarm signal, running state) |
| Input Registers | 30001 – 39999 | Read Only | Raw sensor data (ambient temperature, humidity) |
| Holding Registers | 40001 – 49999 | Read / Write | System configuration & setpoints (target temp, fan speed, mode settings) |
For HVAC thermostats and FCU controllers, 4xxxx Holding Registers are the most widely used type, as they support both real-time data reading and parameter modification.
What Is a Modbus Address?
A Modbus Address (PDU Address) is the raw zero-based numeric ID transmitted inside Modbus communication frames (PDU, Protocol Data Unit).
This is the actual data the master device (BMS/PLC/Modbus scanner) sends over RS485 cables to read or write target data.
The Key Rule:
Modbus Register (Modicon) = 1-based (for human reading)
Modbus Address (PDU) = 0-based (for protocol communication)
Universal Conversion Formula
Modbus PDU Address = Modicon Register Number − 40001 (for holding registers)
Examples
Register 40001 → PDU Address 0
Register 40002 → PDU Address 1
Register 40108 → PDU Address 107 (0x006B Hex)
This fundamental gap between documentation numbering and actual protocol numbering creates nearly all Modbus communication errors.
Understanding the difference between Modbus address vs register is essential for stable HVAC communication.
Core Difference: Register vs Address
The distinction boils down to human-readable documentation vs machine-executable protocol data.
| Comparison | Modbus Register (Modicon) | Modbus PDU Address |
|---|---|---|
| Numbering Mode | 1-based | 0-based |
| Type Prefix | Includes category prefix (0/1/3/4xxxx) | Pure numeric ID, no prefix |
| Usage Scenario | Datasheets, register maps, configuration software | Actual RTU communication frames |
| Example Value | 40001 | 0 |
Registers are written for engineers; addresses are processed by devices.
Why the Off-by-One Error Causes Most HVAC Integration Failures
Industry practice proves that over 50% of Modbus exception errors (Exception Code 02: Illegal Data Address) are caused by off-by-one addressing mistakes.
The root cause is three coexisting industry conventions that manufacturers use randomly:
- Modicon 5-digit convention: 1-based full register (40001)
- Simplified 1-based convention: plain register number (1, 2, 3…)
- Standard PDU convention: 0-based raw address (0, 1, 2…)
Common Failure Scenario
A datasheet marks “Room Temperature = Register 1”.
If your PLC/BMS software expects Modicon 4xxxx format, it will offset incorrectly and read register 40002 instead — resulting in wrong values or communication failure.
Fast Fix Rule
Whenever you get empty data, abnormal readings, or illegal address errors:
Minus 1 from your target register address and retry.
How to Read a Modbus Register Map Correctly (Step-by-Step)
Follow this standard workflow for any HVAC thermostat, FCU controller, or VFD register map:
Step 1: Confirm the Numbering Convention
Identify which format the official document uses:
- 5-digit Modicon registers (40001 series)
- Short 1-based register numbers
- Hexadecimal / decimal 0-based PDU addresses
Step 2: Understand Register Map Columns
- Register / Address: Data location ID
- Parameter: The function description (temp, fan speed, mode)
- Data Type: 16-bit int, 32-bit float, scaling factor
- Access Type: R (Read), W (Write), R/W (Read & Write)
Step 3: Apply Correct Offset in Your Software
- If your tool uses Modicon mode: input the full 5-digit number directly
- If your tool uses PDU mode: subtract 1 from the documented register number
Always test fixed-value registers (firmware version, device model code) first to verify communication validity before modifying any parameters.
Practical Case: Thermostat Temperature Reading
Take this common FCU thermostat register map as an example:
| Register | Parameter | Access | Description |
|---|---|---|---|
| 40001 | Room Temperature | R | Current ambient temp (0.1°C scaling) |
| 40002 | Temp Setpoint | R/W | Target cooling/heating temperature |
| 40003 | Fan Speed | R/W | 0=Auto / 1=Low / 2=Med / 3=High |
- Modicon software input: 40001
- PDU software input: 0
If the return value = 250, the actual temperature = 25.0°C (value ÷ 10 scaling factor).
Common Modbus Integration Mistakes & Solutions
| Mistake | Negative Result | Solution |
|---|---|---|
| Assuming all manufacturers use the same convention | Illegal address errors / wrong data | Verify register map convention before configuration |
| Mixing 1-based and 0-based addresses | Reading incorrect register data | Confirm software parsing mode (Modicon / PDU) |
| Ignoring data scaling factors | Garbage values (65535, random figures) | Check 0.1°C, 0.01 unit scaling in datasheets |
| Skipping pre-test with fixed registers | Risk of wrong parameter overwriting | Test firmware/version registers first |
Modbus RTU Application in HVAC & BMS Systems
Modbus address logic is universal for all RTU devices in building automation:
- HVAC FCU thermostats
- VFD fan & pump drives
- Air handling unit controllers
- Siemens / Mitsubishi / generic PLC systems
- Central BMS platforms
Accurate register addressing ensures conflict-free communication, stable data polling, and reliable automatic control in commercial building HVAC projects.
Our RS485 Modbus RTU FCU thermostats fully comply with standard Modicon register rules, feature clear register maps, and offer seamless compatibility with mainstream PLC, VFD, and BMS systems for global building automation projects.
Final Takeaways
- Registers = human-readable 1-based numbers
- Addresses = machine-readable 0-based PDU values
- Off-by-one errors account for most Modbus HVAC communication failures
- Always confirm convention + scaling factor before integration
- Standardized register mapping ensures stable BMS & PLC integration
Related Reading
- What is Modbus RTU and How Does It Work in HVAC Systems?
- Modbus Addressing Explained: A Simple Guide for HVAC Installers
- Modbus Examples: How to Read and Write Data
For more technical guides and product information, browse our blog or contact our engineering team for a free consultation.
