{ "$schema": "https://raw.githubusercontent.com/nobrega8/mbmap-library/main/schema/mbmap-2.schema.json", "mbmap": 2, "vendor": "ABB", "model": "B23 / B24", "models": ["B23", "B24"], "vendor_website": "abb.com", "description": "Three-phase DIN rail energy meters of the EQ B-series (B23 direct connected, B24 CT connected), Modbus RTU over RS485", "revision": 3, "revised": "2026-11-10", "source": "ABB, \"B23/B24 User Manual\", 2CMC485003M0201 revision E (2025-11-07); https://library.abb.com/d/2CMC485003M0201", "sources": [ {"title": "B23/B24 User Manual", "version": "2CMC485003M0201 revision E", "date": "2025-11-07", "url": "https://library.abb.com/d/2CMC485003M0201"} ], "notes": [ "ABB EQ meters B23 (direct, 65 A) and B24 (CT connected) with RS485, protocol set to Modbus.", "Addresses are exactly as sent on the bus. Readable range is 0x1000-0x8EFF; any block of 1-125 registers works.", "Quantities a model does not have read as \"invalid\": all FFFF for unsigned, the largest positive value for signed.", "Basic (steel) variants, B23/B24 1xx-xxx, only have import registers.", "The manual does not state the factory RS485 settings; check them on the meter display." ], "protocol": "rtu", "unit_id": 1, "byte_order": "big", "word_order": "big", "address_base": 0, "max_read_registers": 125, "sentinels": { "uint16": {"0xFFFF": "Invalid"}, "int16": {"0x7FFF": "Invalid"}, "uint32": {"0xFFFFFFFF": "Invalid"}, "int32": {"0x7FFFFFFF": "Invalid"}, "uint64": {"0xFFFFFFFFFFFFFFFF": "Invalid"}, "int64": {"0x7FFFFFFFFFFFFFFF": "Invalid"} }, "x_status": "official", "registers": [ {"name": "Active energy import", "group": "Energy", "area": "holding", "address": "0x5000", "type": "uint64", "scale": 0.01, "unit": "kWh", "access": "R"}, {"name": "Active energy export", "group": "Energy", "area": "holding", "address": "0x5004", "type": "uint64", "scale": 0.01, "unit": "kWh", "access": "R"}, {"name": "Active energy net", "group": "Energy", "area": "holding", "address": "0x5008", "type": "int64", "scale": 0.01, "unit": "kWh", "access": "R", "description": "Import minus export"}, {"name": "Reactive energy import", "group": "Energy", "area": "holding", "address": "0x500C", "type": "uint64", "scale": 0.01, "unit": "kvarh", "access": "R"}, {"name": "Reactive energy export", "group": "Energy", "area": "holding", "address": "0x5010", "type": "uint64", "scale": 0.01, "unit": "kvarh", "access": "R"}, {"name": "Reactive energy net", "group": "Energy", "area": "holding", "address": "0x5014", "type": "int64", "scale": 0.01, "unit": "kvarh", "access": "R"}, {"name": "Apparent energy import", "group": "Energy", "area": "holding", "address": "0x5018", "type": "uint64", "scale": 0.01, "unit": "kVAh", "access": "R"}, {"name": "Apparent energy export", "group": "Energy", "area": "holding", "address": "0x501C", "type": "uint64", "scale": 0.01, "unit": "kVAh", "access": "R"}, {"name": "Apparent energy net", "group": "Energy", "area": "holding", "address": "0x5020", "type": "int64", "scale": 0.01, "unit": "kVAh", "access": "R"}, {"name": "CO2 for active import", "group": "Energy", "area": "holding", "address": "0x5024", "type": "uint64", "scale": 0.001, "unit": "kg", "access": "R", "description": "Uses the meter's CO2 conversion factor"}, {"name": "Currency for active import", "group": "Energy", "area": "holding", "address": "0x5034", "type": "uint64", "scale": 0.001, "access": "R", "description": "Uses the currency conversion factor at 0x8CE2"}, {"name": "Active energy import tariff 1", "group": "Tariffs", "area": "holding", "address": "0x5170", "type": "uint64", "scale": 0.01, "unit": "kWh", "access": "R"}, {"name": "Active energy import tariff 2", "group": "Tariffs", "area": "holding", "address": "0x5174", "type": "uint64", "scale": 0.01, "unit": "kWh", "access": "R"}, {"name": "Active energy import tariff 3", "group": "Tariffs", "area": "holding", "address": "0x5178", "type": "uint64", "scale": 0.01, "unit": "kWh", "access": "R"}, {"name": "Active energy import tariff 4", "group": "Tariffs", "area": "holding", "address": "0x517C", "type": "uint64", "scale": 0.01, "unit": "kWh", "access": "R"}, {"name": "Active energy export tariff 1", "group": "Tariffs", "area": "holding", "address": "0x5190", "type": "uint64", "scale": 0.01, "unit": "kWh", "access": "R"}, {"name": "Active energy export tariff 2", "group": "Tariffs", "area": "holding", "address": "0x5194", "type": "uint64", "scale": 0.01, "unit": "kWh", "access": "R"}, {"name": "Active energy export tariff 3", "group": "Tariffs", "area": "holding", "address": "0x5198", "type": "uint64", "scale": 0.01, "unit": "kWh", "access": "R"}, {"name": "Active energy export tariff 4", "group": "Tariffs", "area": "holding", "address": "0x519C", "type": "uint64", "scale": 0.01, "unit": "kWh", "access": "R"}, {"name": "Reactive energy import tariff 1", "group": "Tariffs", "area": "holding", "address": "0x51B0", "type": "uint64", "scale": 0.01, "unit": "kvarh", "access": "R"}, {"name": "Reactive energy import tariff 2", "group": "Tariffs", "area": "holding", "address": "0x51B4", "type": "uint64", "scale": 0.01, "unit": "kvarh", "access": "R"}, {"name": "Reactive energy import tariff 3", "group": "Tariffs", "area": "holding", "address": "0x51B8", "type": "uint64", "scale": 0.01, "unit": "kvarh", "access": "R"}, {"name": "Reactive energy import tariff 4", "group": "Tariffs", "area": "holding", "address": "0x51BC", "type": "uint64", "scale": 0.01, "unit": "kvarh", "access": "R"}, {"name": "Reactive energy export tariff 1", "group": "Tariffs", "area": "holding", "address": "0x51D0", "type": "uint64", "scale": 0.01, "unit": "kvarh", "access": "R"}, {"name": "Reactive energy export tariff 2", "group": "Tariffs", "area": "holding", "address": "0x51D4", "type": "uint64", "scale": 0.01, "unit": "kvarh", "access": "R"}, {"name": "Reactive energy export tariff 3", "group": "Tariffs", "area": "holding", "address": "0x51D8", "type": "uint64", "scale": 0.01, "unit": "kvarh", "access": "R"}, {"name": "Reactive energy export tariff 4", "group": "Tariffs", "area": "holding", "address": "0x51DC", "type": "uint64", "scale": 0.01, "unit": "kvarh", "access": "R"}, {"name": "Active energy import L1", "group": "Phase energy", "area": "holding", "address": "0x5460", "type": "uint64", "scale": 0.01, "unit": "kWh", "access": "R"}, {"name": "Active energy import L2", "group": "Phase energy", "area": "holding", "address": "0x5464", "type": "uint64", "scale": 0.01, "unit": "kWh", "access": "R"}, {"name": "Active energy import L3", "group": "Phase energy", "area": "holding", "address": "0x5468", "type": "uint64", "scale": 0.01, "unit": "kWh", "access": "R"}, {"name": "Active energy export L1", "group": "Phase energy", "area": "holding", "address": "0x546C", "type": "uint64", "scale": 0.01, "unit": "kWh", "access": "R"}, {"name": "Active energy export L2", "group": "Phase energy", "area": "holding", "address": "0x5470", "type": "uint64", "scale": 0.01, "unit": "kWh", "access": "R"}, {"name": "Active energy export L3", "group": "Phase energy", "area": "holding", "address": "0x5474", "type": "uint64", "scale": 0.01, "unit": "kWh", "access": "R"}, {"name": "Active energy net L1", "group": "Phase energy", "area": "holding", "address": "0x5478", "type": "int64", "scale": 0.01, "unit": "kWh", "access": "R"}, {"name": "Active energy net L2", "group": "Phase energy", "area": "holding", "address": "0x547C", "type": "int64", "scale": 0.01, "unit": "kWh", "access": "R"}, {"name": "Active energy net L3", "group": "Phase energy", "area": "holding", "address": "0x5480", "type": "int64", "scale": 0.01, "unit": "kWh", "access": "R"}, {"name": "Reactive energy import L1", "group": "Phase energy", "area": "holding", "address": "0x5484", "type": "uint64", "scale": 0.01, "unit": "kvarh", "access": "R"}, {"name": "Reactive energy import L2", "group": "Phase energy", "area": "holding", "address": "0x5488", "type": "uint64", "scale": 0.01, "unit": "kvarh", "access": "R"}, {"name": "Reactive energy import L3", "group": "Phase energy", "area": "holding", "address": "0x548C", "type": "uint64", "scale": 0.01, "unit": "kvarh", "access": "R"}, {"name": "Reactive energy export L1", "group": "Phase energy", "area": "holding", "address": "0x5490", "type": "uint64", "scale": 0.01, "unit": "kvarh", "access": "R"}, {"name": "Reactive energy export L2", "group": "Phase energy", "area": "holding", "address": "0x5494", "type": "uint64", "scale": 0.01, "unit": "kvarh", "access": "R"}, {"name": "Reactive energy export L3", "group": "Phase energy", "area": "holding", "address": "0x5498", "type": "uint64", "scale": 0.01, "unit": "kvarh", "access": "R"}, {"name": "Reactive energy net L1", "group": "Phase energy", "area": "holding", "address": "0x549C", "type": "int64", "scale": 0.01, "unit": "kvarh", "access": "R"}, {"name": "Reactive energy net L2", "group": "Phase energy", "area": "holding", "address": "0x54A0", "type": "int64", "scale": 0.01, "unit": "kvarh", "access": "R"}, {"name": "Reactive energy net L3", "group": "Phase energy", "area": "holding", "address": "0x54A4", "type": "int64", "scale": 0.01, "unit": "kvarh", "access": "R"}, {"name": "Apparent energy import L1", "group": "Phase energy", "area": "holding", "address": "0x54A8", "type": "uint64", "scale": 0.01, "unit": "kVAh", "access": "R"}, {"name": "Apparent energy import L2", "group": "Phase energy", "area": "holding", "address": "0x54AC", "type": "uint64", "scale": 0.01, "unit": "kVAh", "access": "R"}, {"name": "Apparent energy import L3", "group": "Phase energy", "area": "holding", "address": "0x54B0", "type": "uint64", "scale": 0.01, "unit": "kVAh", "access": "R"}, {"name": "Apparent energy export L1", "group": "Phase energy", "area": "holding", "address": "0x54B4", "type": "uint64", "scale": 0.01, "unit": "kVAh", "access": "R"}, {"name": "Apparent energy export L2", "group": "Phase energy", "area": "holding", "address": "0x54B8", "type": "uint64", "scale": 0.01, "unit": "kVAh", "access": "R"}, {"name": "Apparent energy export L3", "group": "Phase energy", "area": "holding", "address": "0x54BC", "type": "uint64", "scale": 0.01, "unit": "kVAh", "access": "R"}, {"name": "Apparent energy net L1", "group": "Phase energy", "area": "holding", "address": "0x54C0", "type": "int64", "scale": 0.01, "unit": "kVAh", "access": "R"}, {"name": "Apparent energy net L2", "group": "Phase energy", "area": "holding", "address": "0x54C4", "type": "int64", "scale": 0.01, "unit": "kVAh", "access": "R"}, {"name": "Apparent energy net L3", "group": "Phase energy", "area": "holding", "address": "0x54C8", "type": "int64", "scale": 0.01, "unit": "kVAh", "access": "R"}, {"name": "Resettable active energy import", "group": "Resettable energy", "area": "holding", "address": "0x552C", "type": "uint64", "scale": 0.01, "unit": "kWh", "access": "R"}, {"name": "Resettable active energy export", "group": "Resettable energy", "area": "holding", "address": "0x5530", "type": "uint64", "scale": 0.01, "unit": "kWh", "access": "R"}, {"name": "Resettable reactive energy import", "group": "Resettable energy", "area": "holding", "address": "0x5534", "type": "uint64", "scale": 0.01, "unit": "kvarh", "access": "R", "description": "The manual's table gives kWh; kvarh assumed"}, {"name": "Resettable reactive energy export", "group": "Resettable energy", "area": "holding", "address": "0x5538", "type": "uint64", "scale": 0.01, "unit": "kvarh", "access": "R", "description": "The manual's table gives kWh; kvarh assumed"}, {"name": "Voltage L1-N", "group": "Voltage", "area": "holding", "address": "0x5B00", "type": "uint32", "scale": 0.1, "unit": "V", "access": "R"}, {"name": "Voltage L2-N", "group": "Voltage", "area": "holding", "address": "0x5B02", "type": "uint32", "scale": 0.1, "unit": "V", "access": "R"}, {"name": "Voltage L3-N", "group": "Voltage", "area": "holding", "address": "0x5B04", "type": "uint32", "scale": 0.1, "unit": "V", "access": "R"}, {"name": "Voltage L1-L2", "group": "Voltage", "area": "holding", "address": "0x5B06", "type": "uint32", "scale": 0.1, "unit": "V", "access": "R"}, {"name": "Voltage L3-L2", "group": "Voltage", "area": "holding", "address": "0x5B08", "type": "uint32", "scale": 0.1, "unit": "V", "access": "R"}, {"name": "Voltage L1-L3", "group": "Voltage", "area": "holding", "address": "0x5B0A", "type": "uint32", "scale": 0.1, "unit": "V", "access": "R"}, {"name": "Current L1", "group": "Current", "area": "holding", "address": "0x5B0C", "type": "uint32", "scale": 0.01, "unit": "A", "access": "R"}, {"name": "Current L2", "group": "Current", "area": "holding", "address": "0x5B0E", "type": "uint32", "scale": 0.01, "unit": "A", "access": "R"}, {"name": "Current L3", "group": "Current", "area": "holding", "address": "0x5B10", "type": "uint32", "scale": 0.01, "unit": "A", "access": "R"}, {"name": "Current N", "group": "Current", "area": "holding", "address": "0x5B12", "type": "uint32", "scale": 0.01, "unit": "A", "access": "R"}, {"name": "Total active power", "group": "Power", "area": "holding", "address": "0x5B14", "type": "int32", "scale": 0.01, "unit": "W", "access": "R", "description": "Limited to about ±21 MW; use the DMTME block above that"}, {"name": "Active power L1", "group": "Power", "area": "holding", "address": "0x5B16", "type": "int32", "scale": 0.01, "unit": "W", "access": "R"}, {"name": "Active power L2", "group": "Power", "area": "holding", "address": "0x5B18", "type": "int32", "scale": 0.01, "unit": "W", "access": "R"}, {"name": "Active power L3", "group": "Power", "area": "holding", "address": "0x5B1A", "type": "int32", "scale": 0.01, "unit": "W", "access": "R"}, {"name": "Total reactive power", "group": "Power", "area": "holding", "address": "0x5B1C", "type": "int32", "scale": 0.01, "unit": "var", "access": "R"}, {"name": "Reactive power L1", "group": "Power", "area": "holding", "address": "0x5B1E", "type": "int32", "scale": 0.01, "unit": "var", "access": "R"}, {"name": "Reactive power L2", "group": "Power", "area": "holding", "address": "0x5B20", "type": "int32", "scale": 0.01, "unit": "var", "access": "R"}, {"name": "Reactive power L3", "group": "Power", "area": "holding", "address": "0x5B22", "type": "int32", "scale": 0.01, "unit": "var", "access": "R"}, {"name": "Total apparent power", "group": "Power", "area": "holding", "address": "0x5B24", "type": "int32", "scale": 0.01, "unit": "VA", "access": "R"}, {"name": "Apparent power L1", "group": "Power", "area": "holding", "address": "0x5B26", "type": "int32", "scale": 0.01, "unit": "VA", "access": "R"}, {"name": "Apparent power L2", "group": "Power", "area": "holding", "address": "0x5B28", "type": "int32", "scale": 0.01, "unit": "VA", "access": "R"}, {"name": "Apparent power L3", "group": "Power", "area": "holding", "address": "0x5B2A", "type": "int32", "scale": 0.01, "unit": "VA", "access": "R"}, {"name": "Frequency", "group": "Power", "area": "holding", "address": "0x5B2C", "type": "uint16", "scale": 0.01, "unit": "Hz", "access": "R"}, {"name": "Power angle total", "group": "Angles", "area": "holding", "address": "0x5B2D", "type": "int16", "scale": 0.1, "unit": "°", "access": "R", "description": "-180 to +180"}, {"name": "Power angle L1", "group": "Angles", "area": "holding", "address": "0x5B2E", "type": "int16", "scale": 0.1, "unit": "°", "access": "R"}, {"name": "Power angle L2", "group": "Angles", "area": "holding", "address": "0x5B2F", "type": "int16", "scale": 0.1, "unit": "°", "access": "R"}, {"name": "Power angle L3", "group": "Angles", "area": "holding", "address": "0x5B30", "type": "int16", "scale": 0.1, "unit": "°", "access": "R"}, {"name": "Voltage angle L1", "group": "Angles", "area": "holding", "address": "0x5B31", "type": "int16", "scale": 0.1, "unit": "°", "access": "R"}, {"name": "Voltage angle L2", "group": "Angles", "area": "holding", "address": "0x5B32", "type": "int16", "scale": 0.1, "unit": "°", "access": "R"}, {"name": "Voltage angle L3", "group": "Angles", "area": "holding", "address": "0x5B33", "type": "int16", "scale": 0.1, "unit": "°", "access": "R"}, {"name": "Current angle L1", "group": "Angles", "area": "holding", "address": "0x5B37", "type": "int16", "scale": 0.1, "unit": "°", "access": "R"}, {"name": "Current angle L2", "group": "Angles", "area": "holding", "address": "0x5B38", "type": "int16", "scale": 0.1, "unit": "°", "access": "R"}, {"name": "Current angle L3", "group": "Angles", "area": "holding", "address": "0x5B39", "type": "int16", "scale": 0.1, "unit": "°", "access": "R"}, {"name": "Total power factor", "group": "Power factor", "area": "holding", "address": "0x5B3A", "type": "int16", "scale": 0.001, "access": "R"}, {"name": "Power factor L1", "group": "Power factor", "area": "holding", "address": "0x5B3B", "type": "int16", "scale": 0.001, "access": "R"}, {"name": "Power factor L2", "group": "Power factor", "area": "holding", "address": "0x5B3C", "type": "int16", "scale": 0.001, "access": "R"}, {"name": "Power factor L3", "group": "Power factor", "area": "holding", "address": "0x5B3D", "type": "int16", "scale": 0.001, "access": "R"}, {"name": "Quadrant total", "group": "Power factor", "area": "holding", "address": "0x5B3E", "type": "uint16", "access": "R", "description": "1-4"}, {"name": "Quadrant L1", "group": "Power factor", "area": "holding", "address": "0x5B3F", "type": "uint16", "access": "R", "description": "1-4"}, {"name": "Quadrant L2", "group": "Power factor", "area": "holding", "address": "0x5B40", "type": "uint16", "access": "R", "description": "1-4"}, {"name": "Quadrant L3", "group": "Power factor", "area": "holding", "address": "0x5B41", "type": "uint16", "access": "R", "description": "1-4"}, {"name": "DMTME total active power", "group": "DMTME compatible", "area": "holding", "address": "0x102E", "type": "uint32", "unit": "W", "access": "R", "description": "No decimals; for powers above ±21 MW"}, {"name": "DMTME total reactive power", "group": "DMTME compatible", "area": "holding", "address": "0x1036", "type": "uint32", "unit": "var", "access": "R", "description": "No decimals"}, {"name": "DMTME total apparent power", "group": "DMTME compatible", "area": "holding", "address": "0x1026", "type": "uint32", "unit": "VA", "access": "R", "description": "No decimals"}, {"name": "Output 1", "group": "I/O", "area": "holding", "address": "0x6300", "type": "uint16", "access": "RW", "enum": {"0": "Off", "1": "On"}}, {"name": "Output 2", "group": "I/O", "area": "holding", "address": "0x6301", "type": "uint16", "access": "RW", "enum": {"0": "Off", "1": "On"}}, {"name": "Current tariff", "group": "Status", "area": "holding", "address": "0x8A07", "type": "uint16", "access": "RW", "enum": {"1": "Tariff 1", "2": "Tariff 2", "3": "Tariff 3", "4": "Tariff 4"}}, {"name": "Power fail counter", "group": "Status", "area": "holding", "address": "0x8A2F", "type": "uint16", "access": "R"}, {"name": "Serial number", "group": "Info", "area": "holding", "address": "0x8900", "type": "uint32", "access": "R", "role": "serial"}, {"name": "Firmware version", "group": "Info", "area": "holding", "address": "0x8908", "type": "string", "length": 8, "access": "R", "role": "firmware", "description": "Digits separated by periods, e.g. 1.0.0"}, {"name": "Modbus mapping version", "group": "Info", "area": "holding", "address": "0x8910", "type": "uint16", "access": "R", "description": "High byte major, low byte minor"}, {"name": "Type designation", "group": "Info", "area": "holding", "address": "0x8960", "type": "string", "length": 6, "access": "R", "description": "e.g. B23 312-100"}, {"name": "CT ratio numerator", "group": "Settings", "area": "holding", "address": "0x8C04", "type": "uint32", "access": "RW", "description": "B24 only"}, {"name": "CT ratio denominator", "group": "Settings", "area": "holding", "address": "0x8C08", "type": "uint32", "access": "RW", "description": "B24 only"}, {"name": "Currency conversion factor", "group": "Settings", "area": "holding", "address": "0x8CE2", "type": "uint32", "scale": 0.01, "access": "RW", "description": "Currency per kWh"}, {"name": "LED source", "group": "Settings", "area": "holding", "address": "0x8CE4", "type": "uint16", "access": "RW", "enum": {"0": "Active energy", "1": "Reactive energy"}}, {"name": "Reset power fail counter", "group": "Commands", "area": "holding", "address": "0x8F00", "type": "uint16", "access": "W", "enum": {"1": "Reset"}}, {"name": "Reset resettable active energy import", "group": "Commands", "area": "holding", "address": "0x8F1B", "type": "uint16", "access": "W", "enum": {"1": "Reset"}}, {"name": "Reset resettable active energy export", "group": "Commands", "area": "holding", "address": "0x8F1C", "type": "uint16", "access": "W", "enum": {"1": "Reset"}}, {"name": "Reset resettable reactive energy import", "group": "Commands", "area": "holding", "address": "0x8F1D", "type": "uint16", "access": "W", "enum": {"1": "Reset"}}, {"name": "Reset resettable reactive energy export", "group": "Commands", "area": "holding", "address": "0x8F1E", "type": "uint16", "access": "W", "enum": {"1": "Reset"}} ] }