Passa al contenuto principale
Versione: v2 (latest)

Modbus TCP Register Map

Power Meter – Holding Registers (FC03)​


1. Overview​

This document describes the Modbus TCP Holding Register map (Function Code 03) for the Power Meter device. It is intended for system integrators, SCADA/BMS engineers, and OEM partners.

The register map provides instantaneous electrical measurements only. Energy counters are not implemented.


2. Communication Parameters​

ParameterValue
ProtocolModbus TCP
Function Code03 – Read Holding Registers
Addressing0-based
Unit ID1 (default)
32-bit Byte OrderMSW first
Signed EncodingTwo’s complement

3. Data Model​

3.1 Data Types​

TypeDescription
UINT16Unsigned 16-bit integer
INT16Signed 16-bit integer
UINT32Unsigned 32-bit integer (2 registers)
INT32Signed 32-bit integer (2 registers)

All 32-bit values are encoded using two consecutive 16-bit registers, with Most Significant Word first.


3.2 Scaling Convention​

Engineering values are calculated using a scale factor:

Engineering value = Register 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​

  • Power Factor = 2000 → value invalid / undefined
  • Active and reactive power values support import/export
  • RSSI values are expressed in dBm

4. Holding Registers Map (FC03)​

4.1 Voltages​

Addr (HEX)Addr (DEC)LenNameTypeScaleUnitDescription
0x100040962Voltage 3PH equivalentUINT320.01VAverage L-N
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 Currents​

Addr (HEX)Addr (DEC)LenNameTypeScaleUnitDescription
0x100E41102Current 3PH equivalentUINT320.001AAverage phases
0x101041122Current L1UINT320.001A
0x101241142Current L2UINT320.001A
0x101441162Current L3UINT320.001A

4.3 Power Factor​

Addr (HEX)Addr (DEC)LenNameTypeScaleUnitNotes
0x101641182Power Factor 3PHINT320.001—2000 = invalid
0x101841202Power Factor L1INT320.001—2000 = invalid
0x101A41222Power Factor L2INT320.001—2000 = invalid
0x101C41242Power Factor L3INT320.001—2000 = invalid

4.4 Apparent Power (S)​

Addr (HEX)Addr (DEC)LenNameTypeScaleUnit
0x102641342Apparent Power 3PHUINT321VA
0x102841362Apparent Power L1UINT321VA
0x102A41382Apparent Power L2UINT321VA
0x102C41402Apparent Power L3UINT321VA

4.5 Active Power (P)​

Addr (HEX)Addr (DEC)LenNameTypeScaleUnit
0x102E41422Active Power 3PHINT321W
0x103041442Active Power L1INT321W
0x103241462Active Power L2INT321W
0x103441482Active Power L3INT321W

4.6 Reactive Power (Q)​

Addr (HEX)Addr (DEC)LenNameTypeScaleUnit
0x103641502Reactive Power 3PHINT321var
0x103841522Reactive Power L1INT321var
0x103A41542Reactive Power L2INT321var
0x103C41562Reactive Power L3INT321var

4.7 Frequency​

Addr (HEX)Addr (DEC)LenNameTypeScaleUnit
0x104641662Frequency 3PH averageUINT320.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 Temperatures​

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

4.10 Diagnostics​

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

5. Example Read (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