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 | Scale factor for integer power registers |
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 | Scale factor for integer current registers |
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 |