PLC & Meter Register Maps

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).

INSTANT FLOATING MODBUS KNOWLEDGE & TOOL SEARCH PRESS / OR CTRL+K ANYTIME

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 1 for RS-485 meters, or 1 / 100 / 255 for 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-based 40001 / 30001 numbers.
  • Data Type & Word Order: e.g. FLOAT32 (ABCD), INT32 (CDAB), or UINT16 × 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)!
Built into ModbusBB 2.1: Open Tools > Device Library inside ModbusBB to load ready-to-poll register templates with pre-configured data types, scaling, and units—or import/export your own JSON device profiles.

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.