{
  "$schema": "https://raw.githubusercontent.com/nobrega8/mbmap-library/main/schema/mbmap-2.schema.json",
  "mbmap": 2,
  "vendor": "Eastron",
  "model": "SDM320",
  "models": [
    "SDM320",
    "SDM320C"
  ],
  "vendor_website": "eastroneurope.com",
  "revision": 3,
  "source": "Zhejiang Eastron Electronic, \"SDM320C User Manual V1.2\", sections 4.1 and 4.2 (Modbus RTU register tables)",
  "notes": [
    "Eastron SDM320 / SDM320C single-phase energy meter (RS485 Modbus RTU).",
    "Measurements are float32 input registers (FC04), big-endian (bytes and words), 0-based addresses.",
    "Monthly and multi-rate energy registers of older catalogues are not in the SDM320C manual and were removed."
  ],
  "byte_order": "big",
  "word_order": "big",
  "address_base": 0,
  "x_status": "official",
  "revised": "2026-11-10",
  "sources": [
    {
      "title": "SDM320C User Manual",
      "version": "V1.2",
      "note": "section 4.1 input registers (FC04); 4.2 holding registers (FC03/10)"
    }
  ],
  "registers": [
    {"name": "Voltage", "area": "input", "address": 0, "type": "float32", "unit": "V", "access": "R"},
    {"name": "Current", "area": "input", "address": 6, "type": "float32", "unit": "A", "access": "R"},
    {"name": "Active power", "area": "input", "address": 12, "type": "float32", "unit": "W", "access": "R"},
    {"name": "Apparent power", "area": "input", "address": 18, "type": "float32", "unit": "VA", "access": "R"},
    {"name": "Reactive power", "area": "input", "address": 24, "type": "float32", "unit": "var", "access": "R"},
    {"name": "Power factor", "area": "input", "address": 30, "type": "float32", "access": "R", "description": "Negative for export current"},
    {"name": "Phase angle", "area": "input", "address": 36, "type": "float32", "unit": "°", "access": "R"},
    {"name": "Frequency", "area": "input", "address": 70, "type": "float32", "unit": "Hz", "access": "R"},
    {"name": "Import active energy", "area": "input", "address": 72, "type": "float32", "unit": "kWh", "access": "R"},
    {"name": "Export active energy", "area": "input", "address": 74, "type": "float32", "unit": "kWh", "access": "R"},
    {"name": "Import reactive energy", "area": "input", "address": 76, "type": "float32", "unit": "kvarh", "access": "R"},
    {"name": "Export reactive energy", "area": "input", "address": 78, "type": "float32", "unit": "kvarh", "access": "R"},
    {"name": "Total apparent energy", "area": "input", "address": 80, "type": "float32", "unit": "kVAh", "access": "R"},
    {"name": "Active power demand", "area": "input", "address": 84, "type": "float32", "unit": "W", "access": "R"},
    {"name": "Maximum active power demand", "area": "input", "address": 86, "type": "float32", "unit": "W", "access": "R"},
    {"name": "Apparent power demand", "area": "input", "address": 100, "type": "float32", "unit": "VA", "access": "R"},
    {"name": "Maximum apparent power demand", "area": "input", "address": 102, "type": "float32", "unit": "VA", "access": "R"},
    {"name": "Reactive power demand", "area": "input", "address": 108, "type": "float32", "unit": "var", "access": "R"},
    {"name": "Maximum reactive power demand", "area": "input", "address": 110, "type": "float32", "unit": "var", "access": "R"},
    {"name": "Current demand", "area": "input", "address": 258, "type": "float32", "unit": "A", "access": "R"},
    {"name": "Maximum current demand", "area": "input", "address": 264, "type": "float32", "unit": "A", "access": "R"},
    {"name": "Total active energy", "area": "input", "address": 342, "type": "float32", "unit": "kWh", "access": "R"},
    {"name": "Total reactive energy", "area": "input", "address": 344, "type": "float32", "unit": "kvarh", "access": "R"}
  ]
}
