{
 "manufacturer": "ABB",
 "manufacturer_slug": "abb",
 "model": "EQ meter B23 / B24 (Modbus RTU)",
 "model_slug": "b23-b24",
 "short_model": "B23/B24",
 "aliases": [
  "B23",
  "B24",
  "EQ B23",
  "EQ B24"
 ],
 "equipment_type": "Energy meter",
 "applies_to": "ABB EQ B23 (direct, 65 A) and B24 (CT-connected) three-phase DIN meters fitted with the RS485 interface set to Modbus.",
 "summary": "The B23 and B24 are three-phase DIN-rail kWh meters from ABB's EQ family. Variants with the RS485 port speak Modbus RTU; every value is a holding register addressed in hex as sent on the wire. This map covers total, tariff, per-phase and resettable energy, instantaneous voltages, currents, powers, angles and power factor, I/O, identification, CT and tariff settings and the reset commands.",
 "transport": [
  "RTU"
 ],
 "defaults": {
  "unit_id": null,
  "baud": null,
  "parity": null,
  "data_bits": null,
  "stop_bits": null,
  "tcp_port": null
 },
 "addressing": {
  "convention": "hex 0-based",
  "note": "The manual prints each start register in hex as it goes on the wire (e.g. 5000 = 0x5000 = 20480 decimal) and explicitly says not to subtract 40000 or 1. Its example frame reads 0x5000 with function 3."
 },
 "default_word_order": "ABCD",
 "firmware": null,
 "source": {
  "title": "B23/B24 User Manual",
  "doc_number": "2CMC485003M0201 Revision E",
  "revision_date": "2025-11-07",
  "url": "https://search.abb.com/library/Download.aspx?DocumentID=2CMC485003M0201&LanguageCode=en&DocumentPartId=&Action=Launch",
  "pages": "Chapter 9 'Communication with Modbus', PDF pages 75-93 (mapping tables PDF pp. 81-88)"
 },
 "notes": [
  "Addresses are printed in hexadecimal exactly as sent on the bus (the manual says not to subtract 40000 or 1). All data is in holding registers, read with function 3 and written with function 6 or 16.",
  "Multi-register values are big-endian: the most significant byte is the high byte of the lowest register, so 32-bit and 64-bit values are ABCD (high word first).",
  "Unsupported quantities still answer, but with an 'invalid' marker: FFFF in every register for unsigned values, and the largest positive value (7FFF, 7FFFFFFF ...) for signed values.",
  "Instantaneous power registers are signed 32-bit with 2 decimals, which caps them near +/-21 MW; for larger systems the manual points to the DMTME-compatible block, which reports whole watts.",
  "Built from the current manual revision. The 2013 Revision A also listed input states/counters, error/warning/alarm flag words, load-profile and log resets; the current revision no longer lists them, so they are left out.",
  "Left out: the DMTME-block energy registers (103E, 1040) whose unit is printed as 'Wh*100' / 'VArh*100', which does not make the scaling direction unambiguous.",
  "Left out: event-log, alarm-configuration, pulse-output and tariff-configuration register groups, which work through selector/header registers or OBIS-coded multi-register fields rather than simple point reads.",
  "Resettable reactive energy import/export (5534, 5538): the manual's Unit column prints 'kWh' for these two rows, while the quantity name is reactive energy. Size (4 registers), resolution (0,01) and data type (Unsigned) are printed unambiguously and match the other reactive registers, so they are kept and listed as kvarh; the unit is the only misprint.",
  "The CO2 (5024) and currency (5034) rows show 'kVAh' in the manual's Details column; their Unit column gives kg and currency, which is what is used here.",
  "Only outputs 1 and 2 (6300, 6301) are listed as Modbus I/O registers; whether they physically exist depends on the article (2 inputs/2 outputs, 1 output, or none). The input counter and stored-state reset commands (8F0B-8F14) are still listed in the manual and are kept.",
  "The B24 is transformer connected; energy and power values are reported on the primary side using the CT ratio set in 8C04/8C08."
 ],
 "integration": {
  "summary": "Set the RS485 port to Modbus on the meter's front panel, then read holding registers with function 3 using the hex addresses directly (0x5000 for total active import). All multi-register values are high word first; energy is 64-bit with 2 decimals.",
  "minimum_registers": [
   {
    "table": "holding_register",
    "address": 20480,
    "why": "Total active import energy (kWh, 0.01)"
   },
   {
    "table": "holding_register",
    "address": 20484,
    "why": "Total active export energy"
   },
   {
    "table": "holding_register",
    "address": 23296,
    "why": "Voltage L1-N"
   },
   {
    "table": "holding_register",
    "address": 23308,
    "why": "Current L1"
   },
   {
    "table": "holding_register",
    "address": 23316,
    "why": "Total active power (signed, 0.01 W)"
   },
   {
    "table": "holding_register",
    "address": 23340,
    "why": "Frequency"
   },
   {
    "table": "holding_register",
    "address": 23354,
    "why": "Total power factor"
   },
   {
    "table": "holding_register",
    "address": 35072,
    "why": "Serial number, a quick comms check"
   }
  ],
  "enable": "In the meter menu, open the RS485 communication settings and select the Modbus protocol (the alternative is ABB's EQ-Bus). Then set baud rate, address and parity on the following menu pages.",
  "watchdog": null,
  "quirks": [
   "Addresses are hex wire addresses; do not apply a 40001 offset.",
   "Energy values are 4 registers (64-bit) with resolution 0.01; net energies are signed.",
   "Readable range is 0x1000-0x8EFF; reading outside it gives exception 2. Up to 125 registers per read.",
   "Unsupported quantities return FFFF (unsigned) or 7FFF... (signed) instead of an exception.",
   "A write to a register that the meter does not support is silently ignored, so read back to confirm."
  ],
  "setup": [
   "Address range 1-247.",
   "Baud rates offered for Modbus: 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200.",
   "Parity: None, Odd or Even.",
   "Function codes supported: 3, 6 and 16; broadcast works for 6 and 16."
  ],
  "gotchas": [
   "Modbus runs over the RS485 port; meters fitted with the M-Bus interface talk M-Bus instead.",
   "Powers above about 21 MW overflow the 0.01 W registers; use the DMTME block (whole watts) instead."
  ]
 },
 "registers": [
  {
   "table": "holding_register",
   "address": 4096,
   "documented": "1000",
   "name": "DMTME 3-phase system voltage",
   "description": "DMTME-compatible block, whole units.",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4098,
   "documented": "1002",
   "name": "DMTME phase voltage L1-N",
   "description": "DMTME-compatible block, whole units.",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4100,
   "documented": "1004",
   "name": "DMTME phase voltage L2-N",
   "description": "DMTME-compatible block, whole units.",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4102,
   "documented": "1006",
   "name": "DMTME phase voltage L3-N",
   "description": "DMTME-compatible block, whole units.",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4104,
   "documented": "1008",
   "name": "DMTME line voltage L1-L2",
   "description": "DMTME-compatible block, whole units.",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4106,
   "documented": "100A",
   "name": "DMTME line voltage L2-L3",
   "description": "DMTME-compatible block, whole units.",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4108,
   "documented": "100C",
   "name": "DMTME line voltage L1-L3",
   "description": "DMTME-compatible block, whole units.",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4112,
   "documented": "1010",
   "name": "DMTME line current L1",
   "description": "DMTME-compatible block.",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "mA",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4114,
   "documented": "1012",
   "name": "DMTME line current L2",
   "description": "DMTME-compatible block.",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "mA",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4116,
   "documented": "1014",
   "name": "DMTME line current L3",
   "description": "DMTME-compatible block.",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "mA",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4118,
   "documented": "1016",
   "name": "DMTME 3-phase system power factor",
   "description": "DMTME-compatible block; published as PF x 1000.",
   "data_type": "INT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 0.001,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4120,
   "documented": "1018",
   "name": "DMTME power factor L1",
   "description": "DMTME-compatible block; published as PF x 1000.",
   "data_type": "INT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 0.001,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4122,
   "documented": "101A",
   "name": "DMTME power factor L2",
   "description": "DMTME-compatible block; published as PF x 1000.",
   "data_type": "INT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 0.001,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4124,
   "documented": "101C",
   "name": "DMTME power factor L3",
   "description": "DMTME-compatible block; published as PF x 1000.",
   "data_type": "INT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 0.001,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4134,
   "documented": "1026",
   "name": "DMTME 3-phase apparent power",
   "description": "DMTME-compatible block, whole units.",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "VA",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4136,
   "documented": "1028",
   "name": "DMTME apparent power L1",
   "description": "DMTME-compatible block, whole units.",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "VA",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4138,
   "documented": "102A",
   "name": "DMTME apparent power L2",
   "description": "DMTME-compatible block, whole units.",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "VA",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4140,
   "documented": "102C",
   "name": "DMTME apparent power L3",
   "description": "DMTME-compatible block, whole units.",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "VA",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4142,
   "documented": "102E",
   "name": "DMTME 3-phase active power",
   "description": "DMTME-compatible block, whole units.",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "W",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4144,
   "documented": "1030",
   "name": "DMTME active power L1",
   "description": "DMTME-compatible block, whole units.",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "W",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4146,
   "documented": "1032",
   "name": "DMTME active power L2",
   "description": "DMTME-compatible block, whole units.",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "W",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4148,
   "documented": "1034",
   "name": "DMTME active power L3",
   "description": "DMTME-compatible block, whole units.",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "W",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4150,
   "documented": "1036",
   "name": "DMTME 3-phase reactive power",
   "description": "DMTME-compatible block, whole units.",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "var",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4152,
   "documented": "1038",
   "name": "DMTME reactive power L1",
   "description": "DMTME-compatible block, whole units.",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "var",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4154,
   "documented": "103A",
   "name": "DMTME reactive power L2",
   "description": "DMTME-compatible block, whole units.",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "var",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4156,
   "documented": "103C",
   "name": "DMTME reactive power L3",
   "description": "DMTME-compatible block, whole units.",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "var",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4166,
   "documented": "1046",
   "name": "DMTME frequency",
   "description": "DMTME-compatible block.",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "mHz",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 4512,
   "documented": "11A0",
   "name": "DMTME current transformer ratio",
   "description": "DMTME-compatible block.",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 20480,
   "documented": "5000",
   "name": "Active import energy",
   "description": "Total accumulator, 2 decimals.",
   "data_type": "UINT64",
   "length": 4,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "kWh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 20484,
   "documented": "5004",
   "name": "Active export energy",
   "description": "Total accumulator, 2 decimals.",
   "data_type": "UINT64",
   "length": 4,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "kWh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 20488,
   "documented": "5008",
   "name": "Active net energy",
   "description": "Import minus export, signed.",
   "data_type": "INT64",
   "length": 4,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "kWh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 20492,
   "documented": "500C",
   "name": "Reactive import energy",
   "description": "Total accumulator, 2 decimals.",
   "data_type": "UINT64",
   "length": 4,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "kvarh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 20496,
   "documented": "5010",
   "name": "Reactive export energy",
   "description": "Total accumulator, 2 decimals.",
   "data_type": "UINT64",
   "length": 4,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "kvarh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 20500,
   "documented": "5014",
   "name": "Reactive net energy",
   "description": "Import minus export, signed.",
   "data_type": "INT64",
   "length": 4,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "kvarh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 20504,
   "documented": "5018",
   "name": "Apparent import energy",
   "description": "Total accumulator, 2 decimals.",
   "data_type": "UINT64",
   "length": 4,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "kVAh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 20508,
   "documented": "501C",
   "name": "Apparent export energy",
   "description": "Total accumulator, 2 decimals.",
   "data_type": "UINT64",
   "length": 4,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "kVAh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 20512,
   "documented": "5020",
   "name": "Apparent net energy",
   "description": "Import minus export, signed.",
   "data_type": "INT64",
   "length": 4,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "kVAh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 20516,
   "documented": "5024",
   "name": "Active import CO2",
   "description": "CO2 equivalent of imported active energy.",
   "data_type": "UINT64",
   "length": 4,
   "word_order": "ABCD",
   "scale": 0.001,
   "units": "kg",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 20532,
   "documented": "5034",
   "name": "Active import currency",
   "description": "Cost equivalent of imported active energy.",
   "data_type": "UINT64",
   "length": 4,
   "word_order": "ABCD",
   "scale": 0.001,
   "units": "currency",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 20848,
   "documented": "5170",
   "name": "Active import tariff 1",
   "description": "",
   "data_type": "UINT64",
   "length": 4,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "kWh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 20852,
   "documented": "5174",
   "name": "Active import tariff 2",
   "description": "",
   "data_type": "UINT64",
   "length": 4,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "kWh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 20856,
   "documented": "5178",
   "name": "Active import tariff 3",
   "description": "",
   "data_type": "UINT64",
   "length": 4,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "kWh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 20860,
   "documented": "517C",
   "name": "Active import tariff 4",
   "description": "",
   "data_type": "UINT64",
   "length": 4,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "kWh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 20880,
   "documented": "5190",
   "name": "Active export tariff 1",
   "description": "",
   "data_type": "UINT64",
   "length": 4,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "kWh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 20884,
   "documented": "5194",
   "name": "Active export tariff 2",
   "description": "",
   "data_type": "UINT64",
   "length": 4,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "kWh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 20888,
   "documented": "5198",
   "name": "Active export tariff 3",
   "description": "",
   "data_type": "UINT64",
   "length": 4,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "kWh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 20892,
   "documented": "519C",
   "name": "Active export tariff 4",
   "description": "",
   "data_type": "UINT64",
   "length": 4,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "kWh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 20912,
   "documented": "51B0",
   "name": "Reactive import tariff 1",
   "description": "",
   "data_type": "UINT64",
   "length": 4,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "kvarh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 20916,
   "documented": "51B4",
   "name": "Reactive import tariff 2",
   "description": "",
   "data_type": "UINT64",
   "length": 4,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "kvarh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 20920,
   "documented": "51B8",
   "name": "Reactive import tariff 3",
   "description": "",
   "data_type": "UINT64",
   "length": 4,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "kvarh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 20924,
   "documented": "51BC",
   "name": "Reactive import tariff 4",
   "description": "",
   "data_type": "UINT64",
   "length": 4,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "kvarh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 20944,
   "documented": "51D0",
   "name": "Reactive export tariff 1",
   "description": "",
   "data_type": "UINT64",
   "length": 4,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "kvarh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 20948,
   "documented": "51D4",
   "name": "Reactive export tariff 2",
   "description": "",
   "data_type": "UINT64",
   "length": 4,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "kvarh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 20952,
   "documented": "51D8",
   "name": "Reactive export tariff 3",
   "description": "",
   "data_type": "UINT64",
   "length": 4,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "kvarh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 20956,
   "documented": "51DC",
   "name": "Reactive export tariff 4",
   "description": "",
   "data_type": "UINT64",
   "length": 4,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "kvarh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 21600,
   "documented": "5460",
   "name": "Active import energy L1",
   "description": "",
   "data_type": "UINT64",
   "length": 4,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "kWh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 21604,
   "documented": "5464",
   "name": "Active import energy L2",
   "description": "",
   "data_type": "UINT64",
   "length": 4,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "kWh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 21608,
   "documented": "5468",
   "name": "Active import energy L3",
   "description": "",
   "data_type": "UINT64",
   "length": 4,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "kWh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 21612,
   "documented": "546C",
   "name": "Active export energy L1",
   "description": "",
   "data_type": "UINT64",
   "length": 4,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "kWh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 21616,
   "documented": "5470",
   "name": "Active export energy L2",
   "description": "",
   "data_type": "UINT64",
   "length": 4,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "kWh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 21620,
   "documented": "5474",
   "name": "Active export energy L3",
   "description": "",
   "data_type": "UINT64",
   "length": 4,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "kWh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 21624,
   "documented": "5478",
   "name": "Active net energy L1",
   "description": "",
   "data_type": "INT64",
   "length": 4,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "kWh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 21628,
   "documented": "547C",
   "name": "Active net energy L2",
   "description": "",
   "data_type": "INT64",
   "length": 4,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "kWh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 21632,
   "documented": "5480",
   "name": "Active net energy L3",
   "description": "",
   "data_type": "INT64",
   "length": 4,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "kWh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 21636,
   "documented": "5484",
   "name": "Reactive import energy L1",
   "description": "",
   "data_type": "UINT64",
   "length": 4,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "kvarh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 21640,
   "documented": "5488",
   "name": "Reactive import energy L2",
   "description": "",
   "data_type": "UINT64",
   "length": 4,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "kvarh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 21644,
   "documented": "548C",
   "name": "Reactive import energy L3",
   "description": "",
   "data_type": "UINT64",
   "length": 4,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "kvarh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 21648,
   "documented": "5490",
   "name": "Reactive export energy L1",
   "description": "",
   "data_type": "UINT64",
   "length": 4,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "kvarh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 21652,
   "documented": "5494",
   "name": "Reactive export energy L2",
   "description": "",
   "data_type": "UINT64",
   "length": 4,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "kvarh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 21656,
   "documented": "5498",
   "name": "Reactive export energy L3",
   "description": "",
   "data_type": "UINT64",
   "length": 4,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "kvarh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 21660,
   "documented": "549C",
   "name": "Reactive net energy L1",
   "description": "",
   "data_type": "INT64",
   "length": 4,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "kvarh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 21664,
   "documented": "54A0",
   "name": "Reactive net energy L2",
   "description": "",
   "data_type": "INT64",
   "length": 4,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "kvarh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 21668,
   "documented": "54A4",
   "name": "Reactive net energy L3",
   "description": "",
   "data_type": "INT64",
   "length": 4,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "kvarh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 21672,
   "documented": "54A8",
   "name": "Apparent import energy L1",
   "description": "",
   "data_type": "UINT64",
   "length": 4,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "kVAh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 21676,
   "documented": "54AC",
   "name": "Apparent import energy L2",
   "description": "",
   "data_type": "UINT64",
   "length": 4,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "kVAh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 21680,
   "documented": "54B0",
   "name": "Apparent import energy L3",
   "description": "",
   "data_type": "UINT64",
   "length": 4,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "kVAh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 21684,
   "documented": "54B4",
   "name": "Apparent export energy L1",
   "description": "",
   "data_type": "UINT64",
   "length": 4,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "kVAh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 21688,
   "documented": "54B8",
   "name": "Apparent export energy L2",
   "description": "",
   "data_type": "UINT64",
   "length": 4,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "kVAh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 21692,
   "documented": "54BC",
   "name": "Apparent export energy L3",
   "description": "",
   "data_type": "UINT64",
   "length": 4,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "kVAh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 21696,
   "documented": "54C0",
   "name": "Apparent net energy L1",
   "description": "",
   "data_type": "INT64",
   "length": 4,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "kVAh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 21700,
   "documented": "54C4",
   "name": "Apparent net energy L2",
   "description": "",
   "data_type": "INT64",
   "length": 4,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "kVAh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 21704,
   "documented": "54C8",
   "name": "Apparent net energy L3",
   "description": "",
   "data_type": "INT64",
   "length": 4,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "kVAh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 21804,
   "documented": "552C",
   "name": "Resettable active import",
   "description": "",
   "data_type": "UINT64",
   "length": 4,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "kWh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 21808,
   "documented": "5530",
   "name": "Resettable active export",
   "description": "",
   "data_type": "UINT64",
   "length": 4,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "kWh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 21812,
   "documented": "5534",
   "name": "Resettable reactive import",
   "description": "Manual's Unit column prints 'kWh' (res. 0,01, 4 regs, Unsigned); listed as kvarh.",
   "data_type": "UINT64",
   "length": 4,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "kvarh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 21816,
   "documented": "5538",
   "name": "Resettable reactive export",
   "description": "Manual's Unit column prints 'kWh' (res. 0,01, 4 regs, Unsigned); listed as kvarh.",
   "data_type": "UINT64",
   "length": 4,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "kvarh",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 23296,
   "documented": "5B00",
   "name": "Voltage L1-N",
   "description": "",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 0.1,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 23298,
   "documented": "5B02",
   "name": "Voltage L2-N",
   "description": "",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 0.1,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 23300,
   "documented": "5B04",
   "name": "Voltage L3-N",
   "description": "",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 0.1,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 23302,
   "documented": "5B06",
   "name": "Voltage L1-L2",
   "description": "",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 0.1,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 23304,
   "documented": "5B08",
   "name": "Voltage L3-L2",
   "description": "",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 0.1,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 23306,
   "documented": "5B0A",
   "name": "Voltage L1-L3",
   "description": "",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 0.1,
   "units": "V",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 23308,
   "documented": "5B0C",
   "name": "Current L1",
   "description": "",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 23310,
   "documented": "5B0E",
   "name": "Current L2",
   "description": "",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 23312,
   "documented": "5B10",
   "name": "Current L3",
   "description": "",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 23314,
   "documented": "5B12",
   "name": "Current N",
   "description": "",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "A",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 23316,
   "documented": "5B14",
   "name": "Active power Total",
   "description": "Signed; see note on the ~21 MW range limit.",
   "data_type": "INT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "W",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 23318,
   "documented": "5B16",
   "name": "Active power L1",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "W",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 23320,
   "documented": "5B18",
   "name": "Active power L2",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "W",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 23322,
   "documented": "5B1A",
   "name": "Active power L3",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "W",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 23324,
   "documented": "5B1C",
   "name": "Reactive power Total",
   "description": "Signed; see note on the ~21 MW range limit.",
   "data_type": "INT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "var",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 23326,
   "documented": "5B1E",
   "name": "Reactive power L1",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "var",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 23328,
   "documented": "5B20",
   "name": "Reactive power L2",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "var",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 23330,
   "documented": "5B22",
   "name": "Reactive power L3",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "var",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 23332,
   "documented": "5B24",
   "name": "Apparent power Total",
   "description": "Signed; see note on the ~21 MW range limit.",
   "data_type": "INT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "VA",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 23334,
   "documented": "5B26",
   "name": "Apparent power L1",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "VA",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 23336,
   "documented": "5B28",
   "name": "Apparent power L2",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "VA",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 23338,
   "documented": "5B2A",
   "name": "Apparent power L3",
   "description": "",
   "data_type": "INT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "VA",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 23340,
   "documented": "5B2C",
   "name": "Frequency",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 0.01,
   "units": "Hz",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 23341,
   "documented": "5B2D",
   "name": "Phase angle power Total",
   "description": "Range -180 to +180.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "units": "°",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 23342,
   "documented": "5B2E",
   "name": "Phase angle power L1",
   "description": "Range -180 to +180.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "units": "°",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 23343,
   "documented": "5B2F",
   "name": "Phase angle power L2",
   "description": "Range -180 to +180.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "units": "°",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 23344,
   "documented": "5B30",
   "name": "Phase angle power L3",
   "description": "Range -180 to +180.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "units": "°",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 23345,
   "documented": "5B31",
   "name": "Phase angle voltage L1",
   "description": "",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "units": "°",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 23346,
   "documented": "5B32",
   "name": "Phase angle voltage L2",
   "description": "",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "units": "°",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 23347,
   "documented": "5B33",
   "name": "Phase angle voltage L3",
   "description": "",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "units": "°",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 23351,
   "documented": "5B37",
   "name": "Phase angle current L1",
   "description": "",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "units": "°",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 23352,
   "documented": "5B38",
   "name": "Phase angle current L2",
   "description": "",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "units": "°",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 23353,
   "documented": "5B39",
   "name": "Phase angle current L3",
   "description": "",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.1,
   "units": "°",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 23354,
   "documented": "5B3A",
   "name": "Power factor Total",
   "description": "Range -1.000 to +1.000.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.001,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 23355,
   "documented": "5B3B",
   "name": "Power factor L1",
   "description": "Range -1.000 to +1.000.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.001,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 23356,
   "documented": "5B3C",
   "name": "Power factor L2",
   "description": "Range -1.000 to +1.000.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.001,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 23357,
   "documented": "5B3D",
   "name": "Power factor L3",
   "description": "Range -1.000 to +1.000.",
   "data_type": "INT16",
   "length": 1,
   "word_order": null,
   "scale": 0.001,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 23358,
   "documented": "5B3E",
   "name": "Current quadrant Total",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "1": "Quadrant 1",
    "2": "Quadrant 2",
    "3": "Quadrant 3",
    "4": "Quadrant 4"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 23359,
   "documented": "5B3F",
   "name": "Current quadrant L1",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "1": "Quadrant 1",
    "2": "Quadrant 2",
    "3": "Quadrant 3",
    "4": "Quadrant 4"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 23360,
   "documented": "5B40",
   "name": "Current quadrant L2",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "1": "Quadrant 1",
    "2": "Quadrant 2",
    "3": "Quadrant 3",
    "4": "Quadrant 4"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 23361,
   "documented": "5B41",
   "name": "Current quadrant L3",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": {
    "1": "Quadrant 1",
    "2": "Quadrant 2",
    "3": "Quadrant 3",
    "4": "Quadrant 4"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 25344,
   "documented": "6300",
   "name": "Output 1",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "OFF",
    "1": "ON"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 25345,
   "documented": "6301",
   "name": "Output 2",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "OFF",
    "1": "ON"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 35072,
   "documented": "8900",
   "name": "Serial number",
   "description": "",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 35080,
   "documented": "8908",
   "name": "Meter firmware version",
   "description": "ASCII, e.g. 1.0.0; unused bytes are 0.",
   "data_type": "STRING",
   "length": 8,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 35088,
   "documented": "8910",
   "name": "Modbus mapping version",
   "description": "High byte = major, low byte = minor version.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 35168,
   "documented": "8960",
   "name": "Type designation",
   "description": "ASCII, 12 characters including null terminator.",
   "data_type": "STRING",
   "length": 6,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 35335,
   "documented": "8A07",
   "name": "Current tariff",
   "description": "Active tariff, 1 to 4.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 35375,
   "documented": "8A2F",
   "name": "Power fail counter",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "R",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 35844,
   "documented": "8C04",
   "name": "CT ratio numerator",
   "description": "",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 35848,
   "documented": "8C08",
   "name": "CT ratio denominator",
   "description": "",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 36066,
   "documented": "8CE2",
   "name": "Currency conversion factor",
   "description": "",
   "data_type": "UINT32",
   "length": 2,
   "word_order": "ABCD",
   "scale": 0.01,
   "units": "Currency/kWh",
   "access": "RW",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 36068,
   "documented": "8CE4",
   "name": "LED source",
   "description": "",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "RW",
   "values": {
    "0": "Active energy",
    "1": "Reactive energy"
   },
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 36608,
   "documented": "8F00",
   "name": "Reset power fail counter",
   "description": "Write 1 to reset.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "W",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 36613,
   "documented": "8F05",
   "name": "Reset power outage time",
   "description": "Write 1 to reset.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "W",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 36619,
   "documented": "8F0B",
   "name": "Reset input counter input 3",
   "description": "Write 1 to reset.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "W",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 36620,
   "documented": "8F0C",
   "name": "Reset input counter input 4",
   "description": "Write 1 to reset.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "W",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 36627,
   "documented": "8F13",
   "name": "Reset stored state input 3",
   "description": "Write 1 to reset.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "W",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 36628,
   "documented": "8F14",
   "name": "Reset stored state input 4",
   "description": "Write 1 to reset.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "W",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 36635,
   "documented": "8F1B",
   "name": "Reset resettable active energy import",
   "description": "Write 1 to reset.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "W",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 36636,
   "documented": "8F1C",
   "name": "Reset resettable active energy export",
   "description": "Write 1 to reset.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "W",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 36637,
   "documented": "8F1D",
   "name": "Reset resettable reactive energy import",
   "description": "Write 1 to reset.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "W",
   "values": null,
   "bits": null,
   "offset": 0
  },
  {
   "table": "holding_register",
   "address": 36638,
   "documented": "8F1E",
   "name": "Reset resettable reactive energy export",
   "description": "Write 1 to reset.",
   "data_type": "UINT16",
   "length": 1,
   "word_order": null,
   "scale": 1,
   "units": "",
   "access": "W",
   "values": null,
   "bits": null,
   "offset": 0
  }
 ],
 "page": "https://easymodbus.com/modbus-register-maps/abb/b23-b24",
 "address_note": "address = 0-based Modbus wire (PDU) address; documented = as printed in the source.",
 "note": "Re-typed from the manufacturer's public documentation (see source) and verified against it. Registers vary by firmware and options; verify against the live device before writing."
}
