Skip to main content
Skip table of contents

Modbus Register Maps

Packet Power Monitoring Node Modbus Register Maps

The Modbus register map defines the way monitoring node readings are mapped onto Modbus register values. Modbus registers are always 16 bits in size, so in some cases larger values are mapped onto sets of multiple registers.

A value mapping requires four elements:

  1. Register number: the address of the Modbus register (if one register) or first of multiple consecutive registers (if mapping onto multiple registers)

  2. Monitoring node data channel: the data channel from which the value being mapped is taken

  3. Scale factor: a multiplier applied to the value; sometimes used to scale the value to avoid using floating point numbers which are not directly supported by Modbus

  4. Value mapping: the binary byte-level mapping of the scaled value onto one or more 16-bit Modbus registers

Data channels

The data channels are usually self-explanatory (e.g. Voltage [V]). Special, Packet Power-specific data channels are listed below:

  • Node type [0-2]: type of monitoring node: 0=unknown, 1=power monitoring node, 2=environmental monitoring node)

  • Node OK: node communication status indicator: 0=node is not transmitting, most recent readings or 0 values are reported; 1=node is transmitting OK

Scale factor

The reading value is multiplied by the scale factor before being mapped onto registers. Note that the default values may be smaller than expected. For example, voltage is reported in tenths of a volt, so if your monitoring application expects to see values in full volts, you would need to scale the reading by a factor of 10. Similarly, the scale for energy readings is Watt-hours. If your application expects kilowatt hours, you will need to scale the reading by a factor of 1000.

Mapping

The reading value is converted to a specified binary format, then mapped onto the specified set of 16-bit Modbus registers. The letters in the mapping denote bytes.

Example: "int ABCD (32b) => DC,BA (2 registers)"

The above mapping will take a reading value, scale it, convert it to a 32 bit signed integer, then map it onto 2 consecutive Modbus registers while swapping bytes in each register.

Monitor Specific Register Maps

The Ethernet Gateway Version 4 (EG4) with firmware version 1.12.x or higher has the following register maps resident on the Gateway. For Gateways where the register map is not pre-loaded the register maps can be downloaded and imported onto the Gateway or the Gateway firmware can be updated to 1.12.x where register maps are resident. As noted this is a dynamic map and register numbers can be modified along with custom expressions.  

Power Monitoring Registers

Note: not all registers will be applicable to all power monitoring devices.

Register

Expression

Syntax

Multiplier

Unit

Description

Measurement

Value

100

R(Energy) * 1

Energy

1

Wh

Total Energy Use

1Wh

4 register, big-endian

102

R(EnergyA) * 1

EnergyA

1

Wh

Phase A Energy Use

1Wh

4 register, big-endian

104

R(EnergyB) * 1

EnergyB

1

Wh

Phase B Energy Use

1Wh

4 register, big-endian

106

R(EnergyC) * 1

EnergyC

1

Wh

Phase C Energy Use

1Wh

4 register, big-endian

202

R(EnergyExportA) * 1

EnergyExportA

1

Wh

Phase A net energy export

1Wh

4 register, big-endian

204

R(EnergyExportB) * 1

EnergyExportB

1

Wh

Phase B net energy export

1Wh

4 register, big-endian

206

R(EnergyExportC) * 1

EnergyExportC

1

Wh

Phase C net energy export

1Wh

4 register, big-endian

300

R(Ah) * 10

Ah

10

Ah

Amp Hours Total

0.1Ah

4 register, big-endian

302

R(AhA) * 10

AhA

10

Ah

Amp Hours Channel A

0.1Ah

4 register, big-endian

304

R(AhB) * 10

AhB

10

Ah

Amp Hours Channel B

0.1Ah

4 register, big-endian

306

R(AhC) * 10

AhC

10

Ah

Amp Hours Channel C

0.1Ah

4 register, big-endian

308

R(AhD) * 10

AhD

10

Ah

Amp Hours Channel D

0.1Ah

4 register, big-endian

310

R(AhE) * 10

AhE

10

Ah

Amp Hours Channel E

0.1Ah

4 register, big-endian

312

R(AhF) * 10

AhF

10

Ah

Amp Hours Channel F

0.1Ah

4 register, big-endian

402

R(VAhA) * 10

VAhA

10

VAh

Amp Hours Channel A

0.1Ah

4 register, big-endian

404

R(VAhB) * 10

VAhB

10

VAh

Amp Hours Channel B

0.1Ah

4 register, big-endian

406

R(VAhC) * 10

VAhC

10

VAh

Amp Hours Channel C

0.1Ah

4 register, big-endian

408

R(VAhD) * 10

VAhD

10

VAh

Amp Hours Channel D

0.1Ah

4 register, big-endian

410

R(VAhE) * 10

VAhE

10

VAh

Amp Hours Channel E

0.1Ah

4 register, big-endian

412

R(VAhF) * 10

VAhF

10

VAh

Amp Hours Channel F

0.1Ah

4 register, big-endian

450

R(Power) * 1

Power

1

W

Total Power

1Wh

1 register, big-endian

451

R(PowerA) * 1

PowerA

1

W

Power Phase A

1Wh

1 register, big-endian

452

R(PowerB) * 1

PowerB

1

W

Power Phase B

1Wh

1 register, big-endian

453

R(PowerC) * 1

PowerC

1

W

Power Phase C

1Wh

1 register, big-endian

454

R(PowerD) * 1

PowerD

1

W

Power Channel D

1W

1 register, big-endian

455

R(PowerE) * 1

PowerE

1

W

Power Channel E

1W

1 register, big-endian

456

R(PowerF) * 1

PowerF

1

W

Power Channel F

1W

1 register, big-endian

500

R(Current) * 10

Current

10

A

Total Current

0.1A

1 register, big-endian

501

R(CurrentA) * 10

CurrentA

10

A

Current Phase A

0.1A

1 register, big-endian

502

R(CurrentB) * 10

CurrentB

10

A

Current Phase B

0.1A

1 register, big-endian

503

R(CurrentC) * 10

CurrentC

10

A

Current Phase C

0.1A

1 register, big-endian

504

R(CurrentD) * 10

CurrentD

10

A

Current Channel D

0.1 A

1 register, big-endian

505

R(CurrentE) * 10

CurrentE

10

A

Current Channel E

0.1 A

1 register, big-endian

506

R(CurrentF) * 10

CurrentF

10

A

Current Channel F

0.1 A

1 register, big-endian

550

R(CurrentN) * 10

CurrentN

10

A

Current Neutral

0.1 A

1 register, big-endian

600

R(Voltage) * 10

Voltage

10

V

Average Voltage

0.1V

1 register, big-endian

601

R(VoltageA) * 10

VoltageA

10

V

Voltage Phase A

0.1V

1 register, big-endian

602

R(VoltageB) * 10

VoltageB

10

V

Voltage Phase B

0.1V

1 register, big-endian

603

R(VoltageC) * 10

VoltageC

10

V

Voltage Phase C

0.1V

1 register, big-endian

604

R(VoltageD) * 10

VoltageD

10

V

Voltage Channel D

0.1V

1 register, big-endian

605

R(VoltageE) * 10

VoltageE

10

V

Voltage Channel E

0.1V

1 register, big-endian

606

R(VoltageF) * 10

VoltageF

10

V

Voltage Channel F

0.1 V

1 register, big-endian

651

R(VoltageAB) * 10

VoltageAB

10

V

Voltage A-B

0.1V

1 register, big-endian

652

R(VoltageCA) * 10

VoltageCA

10

V

Voltage C-A

0.1V

1 register, big-endian

653

R(VoltageBC) * 10

VoltageBC

10

V

Voltage B-C

0.1V

1 register, big-endian

700

R(VAR) * 1

VAR

1

VA

Apparent Power Total

1VA

1 register, big-endian

701

R(VARA) * 1

VARA

1

VA

Apparent Power Phase A

1VA

1 register, big-endian

702

R(VARB) * 1

VARB

1

VA

Apparent Power Phase B

1VA

1 register, big-endian

703

R(VARC) * 1

VARC

1

VA

Apparent Power Phase C

1VA

1 register, big-endian

704

R(VARD) * 1

VARD

1

VAR

Reactive Power Channel D

1 VAR

1 register, big-endian

705

R(VARE) * 1

VARE

1

VAR

Reactive Power Channel E

1 VAR

1 register, big-endian

706

R(VARF) * 1

VARF

10

VAR

Reactive Power Channel F

1 VAR

1 register, big-endian

801

R(THDiA) * 10

THDiA

10

THDI Phase A

0.10%

1 register, big-endian

802

R(THDiB) * 10

THDiB

10

THDI Phase B

0.10%

1 register, big-endian

803

R(THDiC) * 10

THDiC

10

THDI Phase C

0.10%

1 register, big-endian

851

R(THDvA) * 10

THDvA

10

THDV Phase A

0.10%

1 register, big-endian

852

R(THDvB) * 10

THDvB

10

THDV Phase B

0.10%

1 register, big-endian

853

R(THDvC) * 10

THDvC

10

THDV Phase C

0.10%

1 register, big-endian

900

R(PhaseAngleA) * 10

PhaseAngleA

10

Degrees

Phase Angle Phase A

0.1 VA

1 register, big-endian

901

R(PhaseAngleB) * 10

PhaseAngleB

10

Degrees

Phase Angle Phase B

0.1 VA

1 register, big-endian

902

R(PhaseAngleC) * 10

PhaseAngleC

10

Degrees

Phase Angle Phase C

0.01

1 register, big-endian

951

R(PowerFactorA) * 100

PowerFactorA

100

PF

Power Factor Phase A

0.01

1 register, big-endian

952

R(PowerFactorB) * 100

PowerFactorB

100

PF

Power Factor Phase B

0.01

1 register, big-endian

953

R(PowerFactorC) * 100

PowerFactorC

100

PF

Power Factor Phase C

0.01

1 register, big-endian

954

R(PowerFactorD) * 100

PowerFactorD

100

PF

Power Factor Channel D

0.01

1 register, big-endian

955

R(PowerFactorE) * 100

PowerFactorE

100

PF

Power Factor Channel E

0.01

1 register, big-endian

956

R(PowerFactorF) * 100

PowerFactorF

100

PF

Power Factor Channel F

0.01

1 register, big-endian

1000

R(Frequency) * 10

Frequency

10

Hz

Frequency (phase A)

0.1 VA

1 register, big-endian

1001

R(Temperature) * 10

Temperature

10

Degrees

Temperature (internal)

0.1°C

1 register, big-endian

1002

R(VMax) * 10

Vmax

10

V

Maximum Voltage

0.1V

1 register, big-endian

1003

R(IMax) * 10

Imax

10

A

Maximum Current

0.1A

1 register, big-endian

Environmental Monitoring and Dry Contact Registers

1200

R(Temperature0) * 10

Temperature0

10

Degrees

Temperature (internal)

0.1°C

1 register, big-endian

1201

R(Temperature1) * 10

Temperature1

10

Degrees

Temperature Channel 1

0.1°C

1 register, big-endian

1202

R(Temperature2) * 10

Temperature2

10

Degrees

Temperature Channel 2

0.1°C

1 register, big-endian

1203

R(Temperature3) * 10

Temperature3

10

Degrees

Temperature Channel 3

0.1°C

1 register, big-endian

1204

R(Temperature4) * 10

Temperature4

10

Degrees

Temperature Channel 4

0.1°C

1 register, big-endian

1205

R(Temperature5) * 10

Temperature5

10

Degrees

Temperature Channel 5

0.1°C

1 register, big-endian

1206

R(Temperature6) * 10

Temperature6

10

Degrees

Temperature Channel 6

0.1°C

1 register, big-endian

1207

R(Temperature7) * 10

Temperature7

10

Degrees

Temperature Channel 7

0.1°C

1 register, big-endian

1208

R(Temperature8) * 10

Temperature8

10

Degrees

Temperature Channel 8

0.1°C

1 register, big-endian

1209

R(Temperature9) * 10

Temperature9

10

Degrees

Temperature Channel 9

0.1°C

1 register, big-endian

1210

R(Temperature10) * 10

Temperature10

10

Degrees

Temperature Channel 10

0.1°C

1 register, big-endian

1211

R(Temperature11) * 10

Temperature11

10

Degrees

Temperature Channel 11

0.1°C

1 register, big-endian

1212

R(Temperature12) * 10

Temperature12

10

Degrees

Temperature Channel 12

0.1°C

1 register, big-endian

1250

R(Humidity) * 10

Humidity

10

%

Humidity

0.10%

1 register, big-endian

1251

R(Humidity1) * 10

Humidity1

10

%

Humidity Channel 1

0.10%

1 register, big-endian

1252

R(Humidity2) * 10

Humidity2

10

%

Humidity Channel 2

0.10%

1 register, big-endian

1253

R(Humidity3) * 10

Humidity3

10

%

Humidity Channel 3

0.10%

1 register, big-endian

1254

R(Humidity4) * 10

Humidity4

10

%

Humidity Channel 4

0.10%

1 register, big-endian

1255

R(Humidity5) * 10

Humidity5

10

%

Humidity Channel 5

0.10%

1 register, big-endian

1256

R(Humidity6) * 10

Humidity6

10

%

Humidity Channel 6

0.10%

1 register, big-endian

1257

R(Humidity7) * 10

Humidity7

10

%

Humidity Channel 7

0.10%

1 register, big-endian

1258

R(Humidity8) * 10

Humidity8

10

%

Humidity Channel 8

0.10%

1 register, big-endian

1259

R(Humidity9) * 10

Humidity9

10

%

Humidity Channel 9

0.10%

1 register, big-endian

1260

R(Humidity10) * 10

Humidity10

10

%

Humidity Channel 10

0.10%

1 register, big-endian

1261

R(Humidity11) * 10

Humidity11

10

%

Humidity Channel 11

0.10%

1 register, big-endian

1262

R(Humidity12) * 10

Humidity12

10

%

Humidity Channel 12

0.10%

1 register, big-endian

1300

R(Contact1) * 1

Contact1

1

0/1

Contact Status Port 1

open / closed

1 register, big-endian

1301

R(Contact2) * 1

Contact2

1

0/1

Contact Status Port 2

open / closed

1 register, big-endian

1302

R(Contact3) * 1

Contact3

1

0/1

Contact Status Port 3

open / closed

1 register, big-endian

1303

R(Contact4) * 1

Contact4

1

0/1

Contact Status Port 4

open / closed

1 register, big-endian

1304

R(Contact5) * 1

Contact5

1

0/1

Contact Status Port 5

open / closed

1 register, big-endian

1305

R(Contact6) * 1

Contact6

1

0/1

Contact Status Port 6

open / closed

1 register, big-endian

1306

R(Contact7) * 1

Contact7

1

0/1

Contact Status Port 7

open / closed

1 register, big-endian

1307

R(Contact8) * 1

Contact8

1

0/1

Contact Status Port 8

open / closed

1 register, big-endian

1308

R(Contact9) * 1

Contact9

1

0/1

Contact Status Port 9

open / closed

1 register, big-endian

1309

R(Contact10) * 1

Contact10

1

0/1

Contact Status Port 10

open / closed

1 register, big-endian

1310

R(Contact11) * 1

Contact11

1

0/1

Contact Status Port 11

open / closed

1 register, big-endian

1311

R(Contact12) * 1

Contact12

1

0/1

Contact Status Port 12

open / closed

1 register, big-endian

1350

R(ProbeStatus1) * 1

ProbeStatus1

1

V

Probe Status Port 1

open / closed

1 register, big-endian

1351

R(ProbeStatus2) * 1

ProbeStatus2

1

0/1

Probe Status Port 2

open / closed

1 register, big-endian

1352

R(ProbeStatus3) * 1

ProbeStatus3

1

0/1

Probe Status Port 3

open / closed

1 register, big-endian

1353

R(ProbeStatus4) * 1

ProbeStatus4

1

0/1

Probe Status Port 4

open / closed

1 register, big-endian

1354

R(ProbeStatus5) * 1

ProbeStatus5

1

0/1

Probe Status Port 5

open / closed

1 register, big-endian

1355

R(ProbeStatus6) * 1

ProbeStatus6

10

0/1

Probe Status Port 6

open / closed

1 register, big-endian

1356

R(ProbeStatus7) * 1

ProbeStatus7

1

0/1

Probe Status Port 7

open / closed

1 register, big-endian

1357

R(ProbeStatus8) * 1

ProbeStatus8

10

0/1

Probe Status Port 8

open / closed

1 register, big-endian

1358

R(ProbeStatus9) * 1

ProbeStatus9

10

0/1

Probe Status Port 9

open / closed

1 register, big-endian

1359

R(ProbeStatus10) * 1

ProbeStatus10

10

0/1

Probe Status Port 10

open / closed

1 register, big-endian

1360

R(ProbeStatus11) * 1

ProbeStatus11

10

0/1

Probe Status Port 11

open / closed

1 register, big-endian

1361

R(ProbeStatus12) * 1

ProbeStatus12

10

0/1

Probe Status Port 12

open / closed

1 register, big-endian

1400

R(DewPoint) * 10

DewPoint

10

°C

Dew Point

0.1°C

1 register, big-endian

1450

R(Pressure) * 10000

Pressure

10000

%

Differential Pressure

0.1mBar

1 register, big-endian

Diagnostic Registers

2000

R(AllReportRate) * 10

AllReportRate

10

Radio Reports per Minute

1 register, big-endian

2001

R(UniqueReportRate) * 10

UniqueReportRate

10

Unique Reports Per Minute

1 register, big-endian

2010

R(Battery) * 1

Battery

1

%

Battery Percentage

1%

1 register, big-endian

2011

R(VDD) * 10

VDD

10

V

Battery Voltage

0.1V

1 register, big-endian

2020

R(FirmwareImage) * 1

FirmwareImage

1

Firmware Image

1 register, big-endian

2021

R(FirmwareVersion) * 1

FirmwareVersion

1

Firmware Version

1 register, big-endian

2030

R(ICBExpected) * 1

ICBExpected

1

1 register, big-endian

2031

R(ICBImage) * 1

ICBImage

1

1 register, big-endian

2032

R(ICBReceived) * 1

ICBReceived

1

1 register, big-endian

2033

R(ICBVersion) * 1

ICBVersion

1

1 register, big-endian


Dry Contact and Leak Detection Applications

Environmental Monitors can be used for dry contact sensing by placing a dry contact based device on an external temperature port. In the event a temperature port is open i.e. contact closure is open, it will return a temperature of -270°C. If the temperature port has a shorted or closed contact it will return a value of 300°C.

Dry Contact Status

Temp. Port Value

Open

-270°C

Closed

+300°C

 

Using a Modbus expression "OPEN" != R(ProbeStatusx) where x= the probe port number on the monitor will return a "0" value when the port is open and a "1" value when the port is closed or shorted.

 

Register #

(0-based)

Probe Port

Reading value expression

Value returned when dry contact open

Value returned when dry contact closed

Register mapping

1

1

"OPEN" != R(ProbeStatus1)

0

1

1 register, big-endian

2

2

"OPEN" != R(ProbeStatus1)

0

1

1 register, big-endian

3

3

"OPEN" != R(ProbeStatus3)

0

1

1 register, big-endian

4

4

"OPEN" != R(ProbeStatus4)

0

1

1 register, big-endian

5

5

"OPEN" != R(ProbeStatus5)

0

1

1 register, big-endian

6

6

"OPEN" != R(ProbeStatus6)

0

1

1 register, big-endian

7

7

"OPEN" != R(ProbeStatus7)

0

1

1 register, big-endian

8

8

"OPEN" != R(ProbeStatus8)

0

1

1 register, big-endian

9

9

"OPEN" != R(ProbeStatus9)

0

1

1 register, big-endian

10

10

"OPEN" != R(ProbeStatus10)

0

1

1 register, big-endian

11

11

"OPEN" != R(ProbeStatus11)

0

1

1 register, big-endian

12

12

"OPEN" != R(ProbeStatus12)

0

1

1 register, big-endian

 

Depending on the environmental monitor used there will be 2 to 12 temperature ports available for use with dry contacts. No additional configuration is needed.  

E302: Ports 1-2

E306: Ports 1-6

E312: Ports 1-12

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.