Overview

The WattNode® Modbus® meter offers the ability to remap the register addresses (starting with firmware version 16) to allow the following:

  • Combine a custom set of registers into a contiguous range, which can be read with a single Modbus read command. This can be much more efficient than reading two or more discontinuous sets of registers, especially if you are monitoring many meters on a single Modbus subnet.
  • Emulate another device by reorganizing the WattNode Modbus meter registers.
  • Swap the most and least significant words of 32 bit registers (used for floating point and integer energy values) for compatibility with Modbus master software that expects a different register order.

Configuration

The WattNode registers from 9501 to 9627 allow configuring the CustomRegisterMap to map the native register values to any location.

To configure the CustomRegisterMap, write the desired start address of the register block, the number of registers it includes and a list of the native WattNode register addresses that are to be mapped.

CStartAddress (9501)

This specifies any location in the Modbus holding or input register address spaces (equivalent in the WattNode meter) where the mapped registers will appear (excluding the range 9501 to 9627).

CRegisterCount (9502)

This specifies the number of registers that will appear starting at CStartAddress. This can be any number from 0 to 125. Zero disables the CustomRegisterMap.

CRegisterList (9503 to 9627)

This is the list of native non-mapped registers that will be mapped in the CustomRegisterMap. This list may include up to 125 registers.

Example

Register Register Number Value Description
CStartAddress 9501 3401 The mapped block of registers will start at register location 3401
CRegisterCount 9502 8 There will be eight mapped registers
CRegisterList1 9503 1009 PowerSum (float version, least significant word)
CRegisterList2 9504 1010 PowerSum (float version, most significant word)
CRegisterList3 9505 1011 PowerA (float version, least significant word)
CRegisterList4 9506 1012 PowerA (float version, most significant word)
CRegisterList5 9507 1013 PowerB (float version, least significant word)
CRegisterList6 9508 1014 PowerB (float version, most significant word)
CRegisterList5 9509 1015 PowerC (float version, least significant word)
CRegisterList6 9510 1016 PowerC (float version, most significant word)

This will result in the custom register block:

Register Register Number Description
PowerSum 3401 Phase A power, integer
PowerA 3403 Phase A power, integer
PowerB 3405 Phase B power, integer
PowerC 3407 Phase C power, integer

Note: For clarity, this example only includes a few registers that can already be read as a block as part of the “Basic Float” native register group. However, one would typically choose to combine additional registers from several other native groups at the same time, as is done for the initial Custom Register Map described below.

Details

  • If a configuration passcode ConfigPasscode (1601) has been configured, it must be written before any of the custom register map configuration registers may be written.
  • Mapped registers can overlap the normal register locations. In this case, the mapped value will override the normal value. If you must still see the value that is overridden, you will either need to map it to a new location, or turn off the register mapping by setting CRegisterCount (9502) to zero.
  • So long as a mapped register is not overlapping it, all the normal register locations will still work normally.
  • You can include integer and floating point registers in the custom register map.
  • Only one custom map can be created with up to 125 registers. But you can create gaps by repeatedly mapping the Dummy (0001) register.
  • You cannot map registers to the range 9501 – 9627.
  • There is no performance penalty for using mapped registers. In fact, it should save time by allowing you to combine all desired registers into one block, which can be read with a single read command.

 

Initial Map

As shipped from the factory, the ‘CustomRegisterMap’ includes values from each register group, including the Basic and Advanced floating point register groups. The remainder of the default block includes the Basic and Advanced integer registers as well as the integer scaling registers from the Configuration group. This way, the float values and/or integer values may be read by a single multi-register read command. Some users may find this default map useful.

Name Type Units Registers Description
PowerSum Float 1.0 W 3401,3402 Total power
PowerA Float 1.0 W 3403,3404 Power for phase A (watts)
PowerB Float 1.0 W 3405,3406 Power for phase B (watts)
PowerC Float 1.0 W 3407,3408 Power for phase C (watts)
VoltA Float 1.0 V 3409,3410 RMS voltage (line to neutral) for phase A
VoltB Float 1.0 V 3411,3412 RMS voltage (line to neutral) for phase B
VoltC Float 1.0 V 3413,3414 RMS voltage (line to neutral) for phase C
CurrentA Float 1.0 A 3415,3416 RMS current for phase A (amps)
CurrentB Float 1.0 A 3417,3418 RMS current for phase B (amps)
CurrentC Float 1.0 A 3419,3420 RMS current for phase C (amps)
Freq Float 1.0 Hz 3421,3422 Line frequency (Hz)
EnergySum Float 1.0 kWh 3423,3424 Total true net energy (kWh), resettable
EnergyA Float 1.0 kWh 3425,3426 Per-phase energy (kWh), resettable
EnergyB Float 1.0 kWh 3427,3428 Per-phase energy (kWh), resettable
EnergyC Float 1.0 kWh 3429,3430 Per-phase energy (kWh), resettable
EnergyPosSum Float 1.0 kWh 3431,3432 Total true positive energy (kWh), resettable
EnergyPosA Float 1.0 kWh 3433,3434 Per-phase positive energy (kWh), resettable
EnergyPosB Float 1.0 kWh 3435,3436 Per-phase positive energy (kWh), resettable
EnergyPosC Float 1.0 kWh 3437,3438 Per-phase positive energy (kWh), resettable
Demand Float 1.0 W 3439,3440 Real power demand averaged over 1-1440 minutes
DemandApp Float 1.0 VA 3441,3442 Apparent power demand averaged over 1-1440 minutes
DemandA Float 1.0 W 3443,3444 Phase A real power demand averaged over 1-1440 minutes
DemandB Float 1.0 W 3445,3446 Phase B real power demand averaged over 1-1440 minutes
DemandC Float 1.0 W 3447,3448 Phase C real power demand averaged over 1-1440 minutes
PowerReacSum Float 1.0 VAR 3449,3450 Reactive power sum
PowerReacA Float 1.0 VAR 3451,3452 Reactive power for phase A
PowerReacB Float 1.0 VAR 3453,3454 Reactive power for phase B
PowerReacC Float 1.0 VAR 3455,3456 Reactive power for phase C
PowerFactorAvg Float 1 3457,3458 Average power factor for all phases
PowerFactorA Float 1 3459,3460 Power factor for phase A
PowerFactorB Float 1 3461,3462 Power factor for phase B
PowerFactorC Float 1 3463,3464 Power factor for phase C
PowerAppSum Float 1.0 VA 3465,3466 Apparent power sum
PowerAppA Float 1.0 VA 3467,3468 Apparent power for phase A
PowerAppB Float 1.0 VA 3469,3470 Apparent power for phase B
PowerAppC Float 1.0 VA 3471,3472 Apparent power for phase C
UptimeSecs Integer seconds 3473,3474 Time in seconds since power on
ErrorStatus Integer n.a. 3475 Read for errors / status information
PowerFailCount Integer 0 3476 Power failure count
PowerSum Integer PowerIntScale 3477 Total power
PowerA Integer PowerIntScale 3478 Power for phase A (watts)
PowerB Integer PowerIntScale 3479 Power for phase B (watts)
PowerC Integer PowerIntScale 3480 Power for phase C (watts)
PowerIntScale Integer 0 3481 Power(W) = PowerIntScale * CtAmps * IntPowerReg
VoltA Integer 0.1 V 3482 RMS voltage (line to neutral) for phase A
VoltB Integer 0.1 V 3483 RMS voltage (line to neutral) for phase B
VoltC Integer 0.1 V 3484 RMS voltage (line to neutral) for phase C
CurrentA Integer CurrentIntScale 3485 RMS current for phase A (amps)
CurrentB Integer CurrentIntScale 3486 RMS current for phase B (amps)
CurrentC Integer CurrentIntScale 3487 RMS current for phase C (amps)
CurrentIntScale Integer 0 3488 Current = CurrentIntScale * FloatCurrent / CtAmpsX
Freq Integer 0.1 Hz 3489 Line frequency (Hz)
EnergySum Integer 0.1 kWh 3490,3491 Total true net energy (kWh), resettable
EnergyA Integer 0.1 kWh 3492,3493 Per-phase energy (kWh), resettable
EnergyB Integer 0.1 kWh 3494,3495 Per-phase energy (kWh), resettable
EnergyC Integer 0.1 kWh 3496,3497 Per-phase energy (kWh), resettable
EnergyPosSum Integer 0.1 kWh 3498,3499 Total true positive energy (kWh), resettable
EnergyPosA Integer 0.1 kWh 3500,3501 Per-phase positive energy (kWh), resettable
EnergyPosB Integer 0.1 kWh 3502,3503 Per-phase positive energy (kWh), resettable
EnergyPosC Integer 0.1 kWh 3504,3505 Per-phase positive energy (kWh), resettable
Demand Integer PowerIntScale 3506 Real power demand averaged over 1-1440 minutes
DemandApp Integer PowerIntScale 3507 Apparent power demand averaged over 1-1440 minutes
DemandA Integer PowerIntScale 3508 Phase A real power demand averaged over 1-1440 minutes
DemandB Integer PowerIntScale 3509 Phase B real power demand averaged over 1-1440 minutes
DemandC Integer PowerIntScale 3510 Phase C real power demand averaged over 1-1440 minutes
DemandMin Integer PowerIntScale 3511 Minimum demand since reset
DemandMax Integer PowerIntScale 3512 Maximum demand since reset
PowerReacSum Integer PowerIntScale 3513 Reactive power sum
PowerReacA Integer PowerIntScale 3514 Reactive power for phase A
PowerReacB Integer PowerIntScale 3515 Reactive power for phase B
PowerReacC Integer PowerIntScale 3516 Reactive power for phase C
PowerFactorAvg Integer 0.01 3517 Average power factor for all phases
PowerFactorA Integer 0.01 3518 Power factor for phase A
PowerFactorB Integer 0.01 3519 Power factor for phase B
PowerFactorC Integer 0.01 3520 Power factor for phase C
PowerAppSum Integer PowerIntScale 3521 Apparent power sum
PowerAppA Integer PowerIntScale 3522 Apparent power for phase A
PowerAppB Integer PowerIntScale 3523 Apparent power for phase B
PowerAppC Integer PowerIntScale 3524 Apparent power for phase C
IoPinState Integer 0 3525 Reads and/or controls X-pin logic state