{
  "$schema": "https://raw.githubusercontent.com/nobrega8/mbmap-library/main/schema/mbmap-2.schema.json",
  "mbmap": 2,
  "vendor": "Huawei",
  "model": "SUN2000",
  "models": ["SUN2000"],
  "vendor_website": "solar.huawei.com",
  "description": "Grid-tied PV inverters (SUN2000-xKTL-L0/M0/M1/M2/M3/H series): nameplate, PV strings, grid, power, energy and alarms",
  "revision": 3,
  "revised": "2026-11-10",
  "source": "Huawei, \"Solar Inverter Modbus Interface Definitions (V3.0)\", Issue 01 (2023-01-17)",
  "sources": [
    {"title": "Solar Inverter Modbus Interface Definitions", "version": "V3.0, Issue 01", "date": "2023-01-17"}
  ],
  "notes": [
    "Huawei SUN2000 grid-tied solar inverters (residential L0/L1/M0/M1 and commercial M2/M3/H/KTL ranges).",
    "Core read-only registers from the \"Solar Inverter Modbus Interface Definitions (V3.0)\" list.",
    "RTU over RS485/MBUS, or TCP (port 502) through the WLAN/FE/4G interface or a dongle. Registers are read with FC03.",
    "The document gives no factory serial settings or default unit id; check them on the inverter or app.",
    "Registers a model does not have return an exception or 0."
  ],
  "protocol": "tcp+rtu",
  "unit_id": 1,
  "port": 502,
  "byte_order": "big",
  "word_order": "big",
  "address_base": 0,
  "x_status": "official",
  "registers": [
    {"name": "Model name", "group": "Info", "area": "holding", "address": 30000, "type": "string", "length": 15, "access": "R"},
    {"name": "Serial number", "group": "Info", "area": "holding", "address": 30015, "type": "string", "length": 10, "access": "R", "role": "serial"},
    {"name": "Product code", "group": "Info", "area": "holding", "address": 30025, "type": "string", "length": 10, "access": "R"},
    {"name": "Firmware version", "group": "Info", "area": "holding", "address": 30035, "type": "string", "length": 15, "access": "R", "role": "firmware"},
    {"name": "Software version", "group": "Info", "area": "holding", "address": 30050, "type": "string", "length": 15, "access": "R"},
    {"name": "Modbus protocol version", "group": "Info", "area": "holding", "address": 30068, "type": "uint32", "access": "R", "description": "High word major, low word revision"},
    {"name": "Model ID", "group": "Info", "area": "holding", "address": 30070, "type": "uint16", "access": "R"},
    {"name": "Number of PV strings", "group": "Info", "area": "holding", "address": 30071, "type": "uint16", "access": "R"},
    {"name": "Number of MPPTs", "group": "Info", "area": "holding", "address": 30072, "type": "uint16", "access": "R"},
    {"name": "Rated power", "group": "Info", "area": "holding", "address": 30073, "type": "uint32", "scale": 0.001, "unit": "kW", "access": "R"},
    {"name": "Maximum active power", "group": "Info", "area": "holding", "address": 30075, "type": "uint32", "scale": 0.001, "unit": "kW", "access": "R"},
    {"name": "Maximum apparent power", "group": "Info", "area": "holding", "address": 30077, "type": "uint32", "scale": 0.001, "unit": "kVA", "access": "R"},
    {"name": "PV1 voltage", "group": "PV strings", "area": "holding", "address": 32016, "type": "int16", "scale": 0.1, "unit": "V", "access": "R"},
    {"name": "PV1 current", "group": "PV strings", "area": "holding", "address": 32017, "type": "int16", "scale": 0.01, "unit": "A", "access": "R"},
    {"name": "PV2 voltage", "group": "PV strings", "area": "holding", "address": 32018, "type": "int16", "scale": 0.1, "unit": "V", "access": "R"},
    {"name": "PV2 current", "group": "PV strings", "area": "holding", "address": 32019, "type": "int16", "scale": 0.01, "unit": "A", "access": "R"},
    {"name": "PV3 voltage", "group": "PV strings", "area": "holding", "address": 32020, "type": "int16", "scale": 0.1, "unit": "V", "access": "R"},
    {"name": "PV3 current", "group": "PV strings", "area": "holding", "address": 32021, "type": "int16", "scale": 0.01, "unit": "A", "access": "R"},
    {"name": "PV4 voltage", "group": "PV strings", "area": "holding", "address": 32022, "type": "int16", "scale": 0.1, "unit": "V", "access": "R"},
    {"name": "PV4 current", "group": "PV strings", "area": "holding", "address": 32023, "type": "int16", "scale": 0.01, "unit": "A", "access": "R"},
    {"name": "PV5 voltage", "group": "PV strings", "area": "holding", "address": 32024, "type": "int16", "scale": 0.1, "unit": "V", "access": "R"},
    {"name": "PV5 current", "group": "PV strings", "area": "holding", "address": 32025, "type": "int16", "scale": 0.01, "unit": "A", "access": "R"},
    {"name": "PV6 voltage", "group": "PV strings", "area": "holding", "address": 32026, "type": "int16", "scale": 0.1, "unit": "V", "access": "R"},
    {"name": "PV6 current", "group": "PV strings", "area": "holding", "address": 32027, "type": "int16", "scale": 0.01, "unit": "A", "access": "R"},
    {"name": "PV7 voltage", "group": "PV strings", "area": "holding", "address": 32028, "type": "int16", "scale": 0.1, "unit": "V", "access": "R"},
    {"name": "PV7 current", "group": "PV strings", "area": "holding", "address": 32029, "type": "int16", "scale": 0.01, "unit": "A", "access": "R"},
    {"name": "PV8 voltage", "group": "PV strings", "area": "holding", "address": 32030, "type": "int16", "scale": 0.1, "unit": "V", "access": "R"},
    {"name": "PV8 current", "group": "PV strings", "area": "holding", "address": 32031, "type": "int16", "scale": 0.01, "unit": "A", "access": "R"},
    {"name": "PV9 voltage", "group": "PV strings", "area": "holding", "address": 32032, "type": "int16", "scale": 0.1, "unit": "V", "access": "R"},
    {"name": "PV9 current", "group": "PV strings", "area": "holding", "address": 32033, "type": "int16", "scale": 0.01, "unit": "A", "access": "R"},
    {"name": "PV10 voltage", "group": "PV strings", "area": "holding", "address": 32034, "type": "int16", "scale": 0.1, "unit": "V", "access": "R"},
    {"name": "PV10 current", "group": "PV strings", "area": "holding", "address": 32035, "type": "int16", "scale": 0.01, "unit": "A", "access": "R"},
    {"name": "PV11 voltage", "group": "PV strings", "area": "holding", "address": 32036, "type": "int16", "scale": 0.1, "unit": "V", "access": "R"},
    {"name": "PV11 current", "group": "PV strings", "area": "holding", "address": 32037, "type": "int16", "scale": 0.01, "unit": "A", "access": "R"},
    {"name": "PV12 voltage", "group": "PV strings", "area": "holding", "address": 32038, "type": "int16", "scale": 0.1, "unit": "V", "access": "R"},
    {"name": "PV12 current", "group": "PV strings", "area": "holding", "address": 32039, "type": "int16", "scale": 0.01, "unit": "A", "access": "R"},
    {"name": "PV13 voltage", "group": "PV strings", "area": "holding", "address": 32040, "type": "int16", "scale": 0.1, "unit": "V", "access": "R"},
    {"name": "PV13 current", "group": "PV strings", "area": "holding", "address": 32041, "type": "int16", "scale": 0.01, "unit": "A", "access": "R"},
    {"name": "PV14 voltage", "group": "PV strings", "area": "holding", "address": 32042, "type": "int16", "scale": 0.1, "unit": "V", "access": "R"},
    {"name": "PV14 current", "group": "PV strings", "area": "holding", "address": 32043, "type": "int16", "scale": 0.01, "unit": "A", "access": "R"},
    {"name": "PV15 voltage", "group": "PV strings", "area": "holding", "address": 32044, "type": "int16", "scale": 0.1, "unit": "V", "access": "R"},
    {"name": "PV15 current", "group": "PV strings", "area": "holding", "address": 32045, "type": "int16", "scale": 0.01, "unit": "A", "access": "R"},
    {"name": "PV16 voltage", "group": "PV strings", "area": "holding", "address": 32046, "type": "int16", "scale": 0.1, "unit": "V", "access": "R"},
    {"name": "PV16 current", "group": "PV strings", "area": "holding", "address": 32047, "type": "int16", "scale": 0.01, "unit": "A", "access": "R"},
    {"name": "PV17 voltage", "group": "PV strings", "area": "holding", "address": 32048, "type": "int16", "scale": 0.1, "unit": "V", "access": "R"},
    {"name": "PV17 current", "group": "PV strings", "area": "holding", "address": 32049, "type": "int16", "scale": 0.01, "unit": "A", "access": "R"},
    {"name": "PV18 voltage", "group": "PV strings", "area": "holding", "address": 32050, "type": "int16", "scale": 0.1, "unit": "V", "access": "R"},
    {"name": "PV18 current", "group": "PV strings", "area": "holding", "address": 32051, "type": "int16", "scale": 0.01, "unit": "A", "access": "R"},
    {"name": "PV19 voltage", "group": "PV strings", "area": "holding", "address": 32052, "type": "int16", "scale": 0.1, "unit": "V", "access": "R"},
    {"name": "PV19 current", "group": "PV strings", "area": "holding", "address": 32053, "type": "int16", "scale": 0.01, "unit": "A", "access": "R"},
    {"name": "PV20 voltage", "group": "PV strings", "area": "holding", "address": 32054, "type": "int16", "scale": 0.1, "unit": "V", "access": "R"},
    {"name": "PV20 current", "group": "PV strings", "area": "holding", "address": 32055, "type": "int16", "scale": 0.01, "unit": "A", "access": "R"},
    {"name": "DC input power", "group": "Power", "area": "holding", "address": 32064, "type": "int32", "scale": 0.001, "unit": "kW", "access": "R", "description": "Sum of all PV strings"},
    {"name": "Grid voltage L1-L2", "group": "Grid", "area": "holding", "address": 32066, "type": "uint16", "scale": 0.1, "unit": "V", "access": "R", "description": "Grid voltage on single-phase models"},
    {"name": "Grid voltage L2-L3", "group": "Grid", "area": "holding", "address": 32067, "type": "uint16", "scale": 0.1, "unit": "V", "access": "R", "description": "Three-phase only"},
    {"name": "Grid voltage L3-L1", "group": "Grid", "area": "holding", "address": 32068, "type": "uint16", "scale": 0.1, "unit": "V", "access": "R", "description": "Three-phase only"},
    {"name": "Grid voltage L1-N", "group": "Grid", "area": "holding", "address": 32069, "type": "uint16", "scale": 0.1, "unit": "V", "access": "R", "description": "Not valid in L/N output mode"},
    {"name": "Grid voltage L2-N", "group": "Grid", "area": "holding", "address": 32070, "type": "uint16", "scale": 0.1, "unit": "V", "access": "R"},
    {"name": "Grid voltage L3-N", "group": "Grid", "area": "holding", "address": 32071, "type": "uint16", "scale": 0.1, "unit": "V", "access": "R", "description": "Three-phase only"},
    {"name": "Grid current L1", "group": "Grid", "area": "holding", "address": 32072, "type": "int32", "scale": 0.001, "unit": "A", "access": "R", "description": "Grid current on single-phase models"},
    {"name": "Grid current L2", "group": "Grid", "area": "holding", "address": 32074, "type": "int32", "scale": 0.001, "unit": "A", "access": "R", "description": "Three-phase only"},
    {"name": "Grid current L3", "group": "Grid", "area": "holding", "address": 32076, "type": "int32", "scale": 0.001, "unit": "A", "access": "R", "description": "Three-phase only"},
    {"name": "Peak active power today", "group": "Power", "area": "holding", "address": 32078, "type": "int32", "scale": 0.001, "unit": "kW", "access": "R"},
    {"name": "Active power", "group": "Power", "area": "holding", "address": 32080, "type": "int32", "scale": 0.001, "unit": "kW", "access": "R", "description": "AC output"},
    {"name": "Reactive power", "group": "Power", "area": "holding", "address": 32082, "type": "int32", "scale": 0.001, "unit": "kvar", "access": "R"},
    {"name": "Power factor", "group": "Power", "area": "holding", "address": 32084, "type": "int16", "scale": 0.001, "access": "R"},
    {"name": "Grid frequency", "group": "Grid", "area": "holding", "address": 32085, "type": "uint16", "scale": 0.01, "unit": "Hz", "access": "R"},
    {"name": "Efficiency", "group": "Power", "area": "holding", "address": 32086, "type": "uint16", "scale": 0.01, "unit": "%", "access": "R"},
    {"name": "Internal temperature", "group": "Status", "area": "holding", "address": 32087, "type": "int16", "scale": 0.1, "unit": "°C", "access": "R"},
    {"name": "Insulation resistance", "group": "Status", "area": "holding", "address": 32088, "type": "uint16", "scale": 0.001, "unit": "MΩ", "access": "R"},
    {"name": "Device status", "group": "Status", "area": "holding", "address": 32089, "type": "uint16", "access": "R", "description": "Status code; see Huawei key signal description"},
    {"name": "Fault code", "group": "Status", "area": "holding", "address": 32090, "type": "uint16", "access": "R", "description": "Highest-priority active alarm"},
    {"name": "Startup time", "group": "Status", "area": "holding", "address": 32091, "type": "uint32", "unit": "s", "access": "R", "description": "Epoch seconds"},
    {"name": "Shutdown time", "group": "Status", "area": "holding", "address": 32093, "type": "uint32", "unit": "s", "access": "R", "description": "Epoch seconds"},
    {"name": "Active power (fast)", "group": "Power", "area": "holding", "address": 32095, "type": "int32", "scale": 0.001, "unit": "kW", "access": "R", "description": "Unfiltered value for storage control"},
    {"name": "Total energy yield", "group": "Energy", "area": "holding", "address": 32106, "type": "uint32", "scale": 0.01, "unit": "kWh", "access": "R"},
    {"name": "Total DC input energy", "group": "Energy", "area": "holding", "address": 32108, "type": "uint32", "scale": 0.01, "unit": "kWh", "access": "R"},
    {"name": "Energy yield this hour", "group": "Energy", "area": "holding", "address": 32112, "type": "uint32", "scale": 0.01, "unit": "kWh", "access": "R"},
    {"name": "Daily energy yield", "group": "Energy", "area": "holding", "address": 32114, "type": "uint32", "scale": 0.01, "unit": "kWh", "access": "R"},
    {"name": "Energy yield this month", "group": "Energy", "area": "holding", "address": 32116, "type": "uint32", "scale": 0.01, "unit": "kWh", "access": "R"},
    {"name": "Energy yield this year", "group": "Energy", "area": "holding", "address": 32118, "type": "uint32", "scale": 0.01, "unit": "kWh", "access": "R"},
    {"name": "Critical alarms", "group": "Alarms", "area": "holding", "address": 32151, "type": "uint16", "access": "R"},
    {"name": "Major alarms", "group": "Alarms", "area": "holding", "address": 32152, "type": "uint16", "access": "R"},
    {"name": "Minor alarms", "group": "Alarms", "area": "holding", "address": 32153, "type": "uint16", "access": "R"},
    {"name": "Warnings", "group": "Alarms", "area": "holding", "address": 32154, "type": "uint16", "access": "R"},
    {"name": "Energy yield previous hour", "group": "Energy", "area": "holding", "address": 32158, "type": "uint32", "scale": 0.01, "unit": "kWh", "access": "R"},
    {"name": "Energy yield previous day", "group": "Energy", "area": "holding", "address": 32162, "type": "uint32", "scale": 0.01, "unit": "kWh", "access": "R"},
    {"name": "Energy yield previous month", "group": "Energy", "area": "holding", "address": 32166, "type": "uint32", "scale": 0.01, "unit": "kWh", "access": "R"},
    {"name": "Energy yield previous year", "group": "Energy", "area": "holding", "address": 32170, "type": "uint32", "scale": 0.01, "unit": "kWh", "access": "R"}
  ]
}
