Skip to main content
Version: v2 (latest)

Modbus TCP Register Map

Power Meter – Holding Registers (FC03)


1. Overview

This document describes the complete Modbus TCP Holding Register map (Function Code 03) for the Power Meter device.

It is intended for:

  • System integrators
  • SCADA / BMS engineers
  • OEM partners

The register map exposes only instantaneous electrical quantities.
Energy counters are not implemented.


2. Communication Parameters

ParameterValue
ProtocolModbus TCP
Function Code03 – Read Holding Registers
Addressing0-based
Unit ID (Slave ID)1 (default)
32-bit value byte orderMSW first
Signed encodingTwo's complement

3. Data Model

3.1 Data Types

TypeDescription
UINT1616-bit unsigned integer
INT1616-bit signed integer
UINT3232-bit unsigned integer (2 registers)
INT3232-bit signed integer (2 registers)

All 32-bit values occupy 2 consecutive Holding registers with Most Significant Word (MSW) first.


3.2 Scaling Convention

The engineering value is obtained by applying the scale factor:

Engineering value = Raw value × Scale

QuantityScale
Voltage0.01
Current0.001
Power factor0.001
Frequency0.001
THD0.01
Temperature0.1
Power (P, Q, S)1
RSSI1

3.3 Special Values and Notes

  • Power factor = 2000invalid / undefined value
  • INT32 powers support import/export (± sign)
  • RSSI expressed in dBm (typically negative values)

4. Holding Register Map (FC03)


4.1 Voltage

Addr (HEX)Addr (DEC)LenNameTypeScaleUnitDescription
0x100040962Three-phase equivalent voltageUINT320.01VL-N average
0x100240982Voltage L1-NUINT320.01V
0x100441002Voltage L2-NUINT320.01V
0x100641022Voltage L3-NUINT320.01V
0x100841042Voltage L1-L2UINT320.01V
0x100A41062Voltage L2-L3UINT320.01V
0x100C41082Voltage L3-L1UINT320.01V

4.2 Current

Addr (HEX)Addr (DEC)LenNameTypeScaleUnitDescription
0x100E41102Three-phase equivalent currentUINT320.001APhase average
0x101041122Current L1UINT320.001A
0x101241142Current L2UINT320.001A
0x101441162Current L3UINT320.001A

4.3 Power Factor

Addr (HEX)Addr (DEC)LenNameTypeScaleUnitNotes
0x101641182Three-phase power factorINT320.0012000 = invalid
0x101841202Power factor L1INT320.0012000 = invalid
0x101A41222Power factor L2INT320.0012000 = invalid
0x101C41242Power factor L3INT320.0012000 = invalid

4.4 Apparent Power (S)

Addr (HEX)Addr (DEC)LenNameTypeScaleUnit
0x102641342Three-phase apparent powerUINT321VA
0x102841362Apparent power L1UINT321VA
0x102A41382Apparent power L2UINT321VA
0x102C41402Apparent power L3UINT321VA

4.5 Active Power (P)

Addr (HEX)Addr (DEC)LenNameTypeScaleUnit
0x102E41422Three-phase active powerINT321W
0x103041442Active power L1INT321W
0x103241462Active power L2INT321W
0x103441482Active power L3INT321W

4.6 Reactive Power (Q)

Addr (HEX)Addr (DEC)LenNameTypeScaleUnit
0x103641502Three-phase reactive powerINT321var
0x103841522Reactive power L1INT321var
0x103A41542Reactive power L2INT321var
0x103C41562Reactive power L3INT321var

4.7 Frequency

Addr (HEX)Addr (DEC)LenNameTypeScaleUnit
0x104641662Three-phase average frequencyUINT320.001Hz
0x104841682Frequency L1UINT320.001Hz
0x104A41702Frequency L2UINT320.001Hz
0x104C41722Frequency L3UINT320.001Hz

4.8 Total Harmonic Distortion (THD)

Addr (HEX)Addr (DEC)LenNameTypeScaleUnit
0x108242262THD voltage L1UINT320.01%
0x108442282THD voltage L2UINT320.01%
0x108642302THD voltage L3UINT320.01%
0x108842322THD current L1UINT320.01%
0x108A42342THD current L2UINT320.01%
0x108C42362THD current L3UINT320.01%

4.9 Temperature

Addr (HEX)Addr (DEC)LenNameTypeScaleUnit
0x109042401AFE temperatureINT160.1°C
0x109142411MCU temperatureINT160.1°C

4.10 Diagnostics

Addr (HEX)Addr (DEC)LenNameTypeScaleUnit
0x109242421WiFi RSSIINT161dBm

5. Read Example (mbpoll)

mbpoll -m tcp -a 1 -0 -r 4098 -B -c 1 -t 4:int 192.168.1.186

Protocol configuration: ModBus TCP
Slave configuration...: address = [1]
start reference = 4098, count = 1
Communication.........: 192.168.1.186, port 502, t/o 1.00 s, poll rate 1000 ms
Data type.............: 32-bit integer (big endian), output (holding) register table

-- Polling slave 1... Ctrl-C to stop)
[4098]: 23367
-- Polling slave 1... Ctrl-C to stop)
[4098]: 23373
-- Polling slave 1... Ctrl-C to stop)
[4098]: 23366
-- Polling slave 1... Ctrl-C to stop)
[4098]: 23367
-- Polling slave 1... Ctrl-C to stop)
[4098]: 23361
-- Polling slave 1... Ctrl-C to stop)
[4098]: 23356