ABB B23 / B24 Modbus register map
Three-phase DIN-rail energy meters from ABB's B series, available in direct-connected and transformer-connected versions. The B23 and B24 manual covers active, reactive and apparent energy counters, tariffs, instantaneous electrical values and meter settings over Modbus RTU on an RS485 interface.
- Protocol
- Modbus RTU (RS485)
- Defaults
- Slave address range 1 to 247; baud rates 1200 to 115200 and parity None, Odd or Even are selectable in the meter menu (p. 38). Function codes 3, 6 and 16 are supported (p. 79).
- Addresses in the manual
- 0-based protocol addresses, as sent on the wire
- 32 and 64-bit values
- High word first (AB CD)
- Registers listed
- 70
- Checked against
- 2CMC485003M0201, Revision E, 2025-11-07
Address base. Start registers are printed in hexadecimal and the manual says they are given exactly as sent on the bus, with no subtraction of 40000 and no decrement by 1 (p. 85). The request example reads from 0x5000 (p. 80). Addresses here are the hex values converted to decimal. Address 20480 in the manual is address 20480 on the wire.
Word order. For values spanning several registers, the most significant byte is in the high byte of the first (lowest) register (p. 84). Unsupported quantities return all-ones for unsigned types and the maximum positive value for signed types.
Modbus Poll and the Modbus protocol itself count from 0. The "Wire address" column is the number to type into Modbus Poll.
Downloads
The register table has every column on this page. The blocks file imports into Modbus Poll. The template JSON holds the same blocks plus unit, scale and access for scripts.
Registers
| Manual | Wire | Register | Type | Regs | Unit | Scale | Access | Area |
|---|---|---|---|---|---|---|---|---|
| 20480 | 20480 | Total active energy importActiveEnergyImport · Printed as hex 5000. |
uint64 | 4 | kWh | 0.01 | R | Holding (FC03) |
| 20484 | 20484 | Total active energy exportActiveEnergyExport · Printed as hex 5004. |
uint64 | 4 | kWh | 0.01 | R | Holding (FC03) |
| 20488 | 20488 | Net active energy (import minus export)ActiveEnergyNet · Printed as hex 5008. |
int64 | 4 | kWh | 0.01 | R | Holding (FC03) |
| 20492 | 20492 | Total reactive energy importReactiveEnergyImport · Printed as hex 500C. |
uint64 | 4 | kvarh | 0.01 | R | Holding (FC03) |
| 20496 | 20496 | Total reactive energy exportReactiveEnergyExport · Printed as hex 5010. |
uint64 | 4 | kvarh | 0.01 | R | Holding (FC03) |
| 20500 | 20500 | Net reactive energyReactiveEnergyNet · Printed as hex 5014. |
int64 | 4 | kvarh | 0.01 | R | Holding (FC03) |
| 20504 | 20504 | Total apparent energy importApparentEnergyImport · Printed as hex 5018. |
uint64 | 4 | kVAh | 0.01 | R | Holding (FC03) |
| 20508 | 20508 | Total apparent energy exportApparentEnergyExport · Printed as hex 501C. |
uint64 | 4 | kVAh | 0.01 | R | Holding (FC03) |
| 20512 | 20512 | Net apparent energyApparentEnergyNet · Printed as hex 5020. |
int64 | 4 | kVAh | 0.01 | R | Holding (FC03) |
| 20848 | 20848 | Active energy import tariff 1ActiveEnergyImport_T1 · Printed as hex 5170. |
uint64 | 4 | kWh | 0.01 | R | Holding (FC03) |
| 20852 | 20852 | Active energy import tariff 2ActiveEnergyImport_T2 · Printed as hex 5174. |
uint64 | 4 | kWh | 0.01 | R | Holding (FC03) |
| 20856 | 20856 | Active energy import tariff 3ActiveEnergyImport_T3 · Printed as hex 5178. |
uint64 | 4 | kWh | 0.01 | R | Holding (FC03) |
| 20860 | 20860 | Active energy import tariff 4ActiveEnergyImport_T4 · Printed as hex 517C. |
uint64 | 4 | kWh | 0.01 | R | Holding (FC03) |
| 20880 | 20880 | Active energy export tariff 1ActiveEnergyExport_T1 · Printed as hex 5190. |
uint64 | 4 | kWh | 0.01 | R | Holding (FC03) |
| 20884 | 20884 | Active energy export tariff 2ActiveEnergyExport_T2 · Printed as hex 5194. |
uint64 | 4 | kWh | 0.01 | R | Holding (FC03) |
| 20888 | 20888 | Active energy export tariff 3ActiveEnergyExport_T3 · Printed as hex 5198. |
uint64 | 4 | kWh | 0.01 | R | Holding (FC03) |
| 20892 | 20892 | Active energy export tariff 4ActiveEnergyExport_T4 · Printed as hex 519C. |
uint64 | 4 | kWh | 0.01 | R | Holding (FC03) |
| 21600 | 21600 | Active energy import phase L1ActiveEnergyImport_L1 · Printed as hex 5460. |
uint64 | 4 | kWh | 0.01 | R | Holding (FC03) |
| 21604 | 21604 | Active energy import phase L2ActiveEnergyImport_L2 · Printed as hex 5464. |
uint64 | 4 | kWh | 0.01 | R | Holding (FC03) |
| 21608 | 21608 | Active energy import phase L3ActiveEnergyImport_L3 · Printed as hex 5468. |
uint64 | 4 | kWh | 0.01 | R | Holding (FC03) |
| 21804 | 21804 | Resettable active energy importResettableActiveEnergyImport · Printed as hex 552C. |
uint64 | 4 | kWh | 0.01 | R | Holding (FC03) |
| 21808 | 21808 | Resettable active energy exportResettableActiveEnergyExport · Printed as hex 5530. |
uint64 | 4 | kWh | 0.01 | R | Holding (FC03) |
| 23296 | 23296 | Voltage L1 to neutralVoltage_L1N · Printed as hex 5B00. |
uint32 | 2 | V | 0.1 | R | Holding (FC03) |
| 23298 | 23298 | Voltage L2 to neutralVoltage_L2N · Printed as hex 5B02. |
uint32 | 2 | V | 0.1 | R | Holding (FC03) |
| 23300 | 23300 | Voltage L3 to neutralVoltage_L3N · Printed as hex 5B04. |
uint32 | 2 | V | 0.1 | R | Holding (FC03) |
| 23302 | 23302 | Voltage L1 to L2Voltage_L1L2 · Printed as hex 5B06. |
uint32 | 2 | V | 0.1 | R | Holding (FC03) |
| 23304 | 23304 | Voltage L3 to L2Voltage_L3L2 · Printed as hex 5B08. |
uint32 | 2 | V | 0.1 | R | Holding (FC03) |
| 23306 | 23306 | Voltage L1 to L3Voltage_L1L3 · Printed as hex 5B0A. |
uint32 | 2 | V | 0.1 | R | Holding (FC03) |
| 23308 | 23308 | Current L1Current_L1 · Printed as hex 5B0C. |
uint32 | 2 | A | 0.01 | R | Holding (FC03) |
| 23310 | 23310 | Current L2Current_L2 · Printed as hex 5B0E. |
uint32 | 2 | A | 0.01 | R | Holding (FC03) |
| 23312 | 23312 | Current L3Current_L3 · Printed as hex 5B10. |
uint32 | 2 | A | 0.01 | R | Holding (FC03) |
| 23314 | 23314 | Neutral currentCurrent_N · Printed as hex 5B12. |
uint32 | 2 | A | 0.01 | R | Holding (FC03) |
| 23316 | 23316 | Active power totalActivePower_Total · Printed as hex 5B14. Signed 32-bit, two decimals (p. 89 note: limited to roughly 21 MW at this scaling). |
int32 | 2 | W | 0.01 | R | Holding (FC03) |
| 23318 | 23318 | Active power L1ActivePower_L1 · Printed as hex 5B16. |
int32 | 2 | W | 0.01 | R | Holding (FC03) |
| 23320 | 23320 | Active power L2ActivePower_L2 · Printed as hex 5B18. |
int32 | 2 | W | 0.01 | R | Holding (FC03) |
| 23322 | 23322 | Active power L3ActivePower_L3 · Printed as hex 5B1A. |
int32 | 2 | W | 0.01 | R | Holding (FC03) |
| 23324 | 23324 | Reactive power totalReactivePower_Total · Printed as hex 5B1C. |
int32 | 2 | var | 0.01 | R | Holding (FC03) |
| 23326 | 23326 | Reactive power L1ReactivePower_L1 · Printed as hex 5B1E. |
int32 | 2 | var | 0.01 | R | Holding (FC03) |
| 23328 | 23328 | Reactive power L2ReactivePower_L2 · Printed as hex 5B20. |
int32 | 2 | var | 0.01 | R | Holding (FC03) |
| 23330 | 23330 | Reactive power L3ReactivePower_L3 · Printed as hex 5B22. |
int32 | 2 | var | 0.01 | R | Holding (FC03) |
| 23332 | 23332 | Apparent power totalApparentPower_Total · Printed as hex 5B24. |
int32 | 2 | VA | 0.01 | R | Holding (FC03) |
| 23334 | 23334 | Apparent power L1ApparentPower_L1 · Printed as hex 5B26. |
int32 | 2 | VA | 0.01 | R | Holding (FC03) |
| 23336 | 23336 | Apparent power L2ApparentPower_L2 · Printed as hex 5B28. |
int32 | 2 | VA | 0.01 | R | Holding (FC03) |
| 23338 | 23338 | Apparent power L3ApparentPower_L3 · Printed as hex 5B2A. |
int32 | 2 | VA | 0.01 | R | Holding (FC03) |
| 23340 | 23340 | Line frequencyFrequency · Printed as hex 5B2C. |
uint16 | 1 | Hz | 0.01 | R | Holding (FC03) |
| 23341 | 23341 | Power phase angle totalPhaseAnglePower_Total · Printed as hex 5B2D. Range -180 to +180 degrees. |
int16 | 1 | ° | 0.1 | R | Holding (FC03) |
| 23342 | 23342 | Power phase angle L1PhaseAnglePower_L1 · Printed as hex 5B2E. Range -180 to +180 degrees. |
int16 | 1 | ° | 0.1 | R | Holding (FC03) |
| 23343 | 23343 | Power phase angle L2PhaseAnglePower_L2 · Printed as hex 5B2F. Range -180 to +180 degrees. |
int16 | 1 | ° | 0.1 | R | Holding (FC03) |
| 23344 | 23344 | Power phase angle L3PhaseAnglePower_L3 · Printed as hex 5B30. Range -180 to +180 degrees. |
int16 | 1 | ° | 0.1 | R | Holding (FC03) |
| 23354 | 23354 | Power factor totalPowerFactor_Total · Printed as hex 5B3A. Range -1.000 to +1.000. |
int16 | 1 | 0.001 | R | Holding (FC03) | |
| 23355 | 23355 | Power factor L1PowerFactor_L1 · Printed as hex 5B3B. Range -1.000 to +1.000. |
int16 | 1 | 0.001 | R | Holding (FC03) | |
| 23356 | 23356 | Power factor L2PowerFactor_L2 · Printed as hex 5B3C. Range -1.000 to +1.000. |
int16 | 1 | 0.001 | R | Holding (FC03) | |
| 23357 | 23357 | Power factor L3PowerFactor_L3 · Printed as hex 5B3D. Range -1.000 to +1.000. |
int16 | 1 | 0.001 | R | Holding (FC03) | |
| 23358 | 23358 | Current quadrant totalQuadrant_Total · Printed as hex 5B3E. Values 1 to 4. |
uint16 | 1 | 1 | R | Holding (FC03) | |
| 23359 | 23359 | Current quadrant L1Quadrant_L1 · Printed as hex 5B3F. Values 1 to 4. |
uint16 | 1 | 1 | R | Holding (FC03) | |
| 23360 | 23360 | Current quadrant L2Quadrant_L2 · Printed as hex 5B40. Values 1 to 4. |
uint16 | 1 | 1 | R | Holding (FC03) | |
| 23361 | 23361 | Current quadrant L3Quadrant_L3 · Printed as hex 5B41. Values 1 to 4. |
uint16 | 1 | 1 | R | Holding (FC03) | |
| 25344 | 25344 | Digital output 1 stateOutput1 · Printed as hex 6300. 1 = on, 0 = off. |
uint16 | 1 | 1 | RW | Holding (FC03) | |
| 25345 | 25345 | Digital output 2 stateOutput2 · Printed as hex 6301. 1 = on, 0 = off. |
uint16 | 1 | 1 | RW | Holding (FC03) | |
| 35072 | 35072 | Meter serial numberSerialNumber · Printed as hex 8900. |
uint32 | 2 | 1 | R | Holding (FC03) | |
| 35080 | 35080 | Meter firmware versionFirmwareVersion · Printed as hex 8908. ASCII text such as 1.0.0, unused bytes are zero. |
string | 8 | 1 | R | Holding (FC03) | |
| 35088 | 35088 | Modbus mapping versionModbusMappingVersion · Printed as hex 8910. High byte is the major version, low byte is the minor version. |
uint16 | 1 | 1 | R | Holding (FC03) | |
| 35168 | 35168 | Type designationTypeDesignation · Printed as hex 8960. ASCII, 12 characters including null termination. |
string | 6 | 1 | R | Holding (FC03) | |
| 35335 | 35335 | Current tariffCurrentTariff · Printed as hex 8A07. Tariff 1 to 4. |
uint16 | 1 | 1 | RW | Holding (FC03) | |
| 35375 | 35375 | Power fail counterPowerFailCounter · Printed as hex 8A2F. |
uint16 | 1 | 1 | R | Holding (FC03) | |
| 35844 | 35844 | Current transformer ratio numeratorCTRatioNumerator · Printed as hex 8C04. |
uint32 | 2 | 1 | RW | Holding (FC03) | |
| 35848 | 35848 | Current transformer ratio denominatorCTRatioDenominator · Printed as hex 8C08. |
uint32 | 2 | 1 | RW | Holding (FC03) | |
| 36608 | 36608 | Reset power fail counterCmd_ResetPowerFailCounter · Printed as hex 8F00. Write 1 to reset. |
uint16 | 1 | 1 | W | Holding (FC03) | |
| 36635 | 36635 | Reset resettable active energy importCmd_ResetResettableActiveImport · Printed as hex 8F1B. Write 1 to reset. |
uint16 | 1 | 1 | W | Holding (FC03) | |
| 36636 | 36636 | Reset resettable active energy exportCmd_ResetResettableActiveExport · Printed as hex 8F1C. Write 1 to reset. |
uint16 | 1 | 1 | W | Holding (FC03) |
Scale is the number to multiply the raw value by to get the unit. Types with more than one register (32 and 64-bit) follow the word order above.
Open in Modbus Poll
- Download the Modbus Poll blocks file.
- Open Modbus Poll, connect to the device and set its unit ID. In Modbus Poll set Word order to AB CD.
- In the blocks panel on the right, click Import CSV and pick the file. CSV import is a Pro feature. Without Pro, Modbus Poll polls the first 20 values of your blocks.
- The wire addresses are already in the file, so there is no 0-based or 1-based conversion to do.
Once the values look right, export the tag list to Ignition, Kepware, Node-RED, Home Assistant or Voltrus SCADA.
Source and accuracy
Manufacturer document: B23/B24 User Manual (library.e.abb.com)
2CMC485003M0201, Revision E, 2025-11-07, p. 78-96. Read on 2026-10-24.
Addresses, types, units and scale are taken from the document above. Names and descriptions are written by Voltrus. Firmware versions can differ, so confirm a value on your own device before you rely on it.
Found a mistake? Report it by email with the register address and the manual page.