Modbus Register Maps & Device Profiles Reference
Real-world function codes, start addresses, Unit IDs, and Float32/Int32 byte orders for common PLCs, smart energy meters, and solar inverters.
Quick Answer: Every Modbus device maps its parameters to Holding Registers (FC03) or Input Registers (FC04) with a specific Unit ID, address offset (0-based PDU vs 1-based 30001/40001), and data type (such as FLOAT32 ABCD on Eastron/Schneider meters, CDAB on Sungrow inverters, or scaled INT16 on Victron GX).
How Device Register Maps Work in Practice
Every Modbus slave device exposes its measurements and setpoints through a vendor-specific Register Map. To poll any PLC, energy meter, or solar inverter without guesswork, you need four pieces of information from its manual:
- Slave / Unit ID: Typically
1for RS-485 meters, or1/100/255for Modbus TCP gateways. - Function Code & Register Type: Holding Registers (
FC03) vs. Input Registers (FC04). - Start Address Convention: Whether the table lists 0-based PDU hex addresses (
0x0000) or 1-based40001/30001numbers. - Data Type & Word Order: e.g.
FLOAT32 (ABCD),INT32 (CDAB), orUINT16 × 0.1.
Common Power & Energy Meter Register Maps (Eastron SDM630 / Schneider PM5000)
Three-phase smart meters are among the most common devices tested with ModbusBB. Below are typical registers for the widely used Eastron SDM630 (Input Registers FC04, FLOAT32 ABCD) and Schneider PowerLogic PM5000 series (Holding Registers FC03, FLOAT32 ABCD):
| Device | Parameter | FC | PDU Address (0-based) | Doc Address | Data Type & Unit |
|---|---|---|---|---|---|
| Eastron SDM630 | Phase 1 Line-to-Neutral Voltage | FC04 |
0 (0x0000) |
30001 |
FLOAT32 (ABCD) · V |
| Eastron SDM630 | Phase 1 Current | FC04 |
6 (0x0006) |
30007 |
FLOAT32 (ABCD) · A |
| Eastron SDM630 | Total System Power | FC04 |
52 (0x0034) |
30053 |
FLOAT32 (ABCD) · W |
| Eastron SDM630 | Frequency | FC04 |
70 (0x0046) |
30071 |
FLOAT32 (ABCD) · Hz |
| Schneider PM5xxx | Current Average | FC03 |
3009 |
43010 |
FLOAT32 (ABCD) · A |
| Schneider PM5xxx | Voltage L-N Average | FC03 |
3035 |
43036 |
FLOAT32 (ABCD) · V |
| Schneider PM5xxx | Total Active Power | FC03 |
3059 |
43060 |
FLOAT32 (ABCD) · kW |
PLC & Solar Inverter Modbus Mapping (Siemens S7, Allen-Bradley, Victron, Sungrow)
| Platform / Family | Default Port / Serial | Unit ID | Addressing & Byte Order Notes |
|---|---|---|---|
Siemens S7-1200 / S7-1500 (MB_SERVER) |
TCP 502 |
1 or 255 |
Holding registers map to the Data Block passed to MB_HOLD_REG (word 0 = PDU 0). S7 uses Big-Endian (ABCD) for Real and DInt. |
| Allen-Bradley Micro800 / CompactLogix | TCP 502 / RS-485 |
1 |
Configured in Connected Components Workbench (CCW) mapping table (0xxxx, 1xxxx, 3xxxx, 4xxxx). Word order for REAL is typically CDAB or ABCD. |
| Victron Energy Cerbo GX / Venus OS | TCP 502 |
100 (System)225–247 (Devices) |
Uses scaled INT16/UINT16 registers (e.g., Reg 840 = Battery Voltage × 10, Reg 842 = Battery Current × 10, Reg 843 = Battery SOC %). |
| Sungrow String & Hybrid Inverters | TCP 502 / RS-485 9600 8N1 |
1 |
Read-only telemetry in Input Registers (FC04, e.g., 5000+ range). 32-bit values (U32/S32) use Little-Word First (CDAB)! |
Frequently Asked Questions
Why does Victron GX Modbus TCP return Gateway Target Device Failed to Respond (Exception 0B)?
On Victron Venus OS / Cerbo GX, Unit ID 1 is often not mapped. Use Unit ID 100 for system-wide registers (com.victronenergy.system), and check Settings > Services > Modbus TCP > Available Services on the GX screen for the exact Unit ID of your MultiPlus, MPPT, or BMS.
How areHolding Registers mapped in a Siemens S7-1200 or S7-1500 PLC?
When using the TIA Portal MB_SERVER instruction, the MB_HOLD_REG parameter points to a global Data Block (DB). Offset 0 in that DB corresponds to Modbus Holding Register PDU address 0 (40001). Disable 'Optimized block access' on the DB if you want predictable byte offsets.
Does ModbusBB include built-in device register maps?
Yes. ModbusBB 2.1 includes a built-in Device Register-Map Library with starter maps and verification notes, and lets you save, share, and import custom device profiles.
Decode Float32, Float64 & Int32 Registers Live in ModbusBB
Poll holding and input registers with per-row data types, byte-order swap (`ABCD`, `CDAB`, `BADC`, `DCBA`), linear scaling (`Ax + B`) and engineering units.