{
  "format": "voltrus-modbus-poll-template",
  "version": 1,
  "device": {
    "vendor": "Eastron",
    "model": "SDM230-Modbus",
    "series": "SDM230"
  },
  "page": "https://voltrus.id/registers/eastron/sdm230/",
  "source": {
    "title": "Eastron SDM230-Modbus Smart Meter Modbus Protocol",
    "url": "https://www.eastroneurope.com/images/uploads/products/protocol/Correct_SDM230_Protocol.pdf",
    "document": "Eastron SDM230Modbus Protocol V1.3 (page footer), Implementation V1.4 (section heading)",
    "fetched": "2026-10-24"
  },
  "addressing": "Block addresses are 0-based wire addresses, the ones Modbus Poll shows.",
  "wordOrder": "big",
  "blocks": [
    {
      "name": "Voltage",
      "address": 0,
      "quantity": 1,
      "type": "float32",
      "area": "input"
    },
    {
      "name": "Current",
      "address": 6,
      "quantity": 1,
      "type": "float32",
      "area": "input"
    },
    {
      "name": "ActivePower",
      "address": 12,
      "quantity": 1,
      "type": "float32",
      "area": "input"
    },
    {
      "name": "ApparentPower",
      "address": 18,
      "quantity": 1,
      "type": "float32",
      "area": "input"
    },
    {
      "name": "ReactivePower",
      "address": 24,
      "quantity": 1,
      "type": "float32",
      "area": "input"
    },
    {
      "name": "PowerFactor",
      "address": 30,
      "quantity": 1,
      "type": "float32",
      "area": "input"
    },
    {
      "name": "PhaseAngle",
      "address": 36,
      "quantity": 1,
      "type": "float32",
      "area": "input"
    },
    {
      "name": "Frequency",
      "address": 70,
      "quantity": 1,
      "type": "float32",
      "area": "input"
    },
    {
      "name": "EnergyImport_kWh",
      "address": 72,
      "quantity": 1,
      "type": "float32",
      "area": "input"
    },
    {
      "name": "EnergyExport_kWh",
      "address": 74,
      "quantity": 1,
      "type": "float32",
      "area": "input"
    },
    {
      "name": "EnergyImport_kvarh",
      "address": 76,
      "quantity": 1,
      "type": "float32",
      "area": "input"
    },
    {
      "name": "EnergyExport_kvarh",
      "address": 78,
      "quantity": 1,
      "type": "float32",
      "area": "input"
    },
    {
      "name": "PowerDemand_Total",
      "address": 84,
      "quantity": 1,
      "type": "float32",
      "area": "input"
    },
    {
      "name": "PowerDemand_TotalMax",
      "address": 86,
      "quantity": 1,
      "type": "float32",
      "area": "input"
    },
    {
      "name": "PowerDemand_Import",
      "address": 88,
      "quantity": 1,
      "type": "float32",
      "area": "input"
    },
    {
      "name": "PowerDemand_ImportMax",
      "address": 90,
      "quantity": 1,
      "type": "float32",
      "area": "input"
    },
    {
      "name": "PowerDemand_Export",
      "address": 92,
      "quantity": 1,
      "type": "float32",
      "area": "input"
    },
    {
      "name": "PowerDemand_ExportMax",
      "address": 94,
      "quantity": 1,
      "type": "float32",
      "area": "input"
    },
    {
      "name": "CurrentDemand",
      "address": 258,
      "quantity": 1,
      "type": "float32",
      "area": "input"
    },
    {
      "name": "CurrentDemandMax",
      "address": 264,
      "quantity": 1,
      "type": "float32",
      "area": "input"
    },
    {
      "name": "EnergyTotal_kWh",
      "address": 342,
      "quantity": 1,
      "type": "float32",
      "area": "input"
    },
    {
      "name": "EnergyTotal_kvarh",
      "address": 344,
      "quantity": 1,
      "type": "float32",
      "area": "input"
    },
    {
      "name": "EnergyResettable_kWh",
      "address": 384,
      "quantity": 1,
      "type": "float32",
      "area": "input"
    },
    {
      "name": "EnergyResettable_kvarh",
      "address": 386,
      "quantity": 1,
      "type": "float32",
      "area": "input"
    },
    {
      "name": "Pulse1Width",
      "address": 12,
      "quantity": 1,
      "type": "float32",
      "area": "holding"
    },
    {
      "name": "NetworkParityStop",
      "address": 18,
      "quantity": 1,
      "type": "float32",
      "area": "holding"
    },
    {
      "name": "NetworkNode",
      "address": 20,
      "quantity": 1,
      "type": "float32",
      "area": "holding"
    },
    {
      "name": "NetworkBaud",
      "address": 28,
      "quantity": 1,
      "type": "float32",
      "area": "holding"
    },
    {
      "name": "Pulse1EnergyType",
      "address": 86,
      "quantity": 1,
      "type": "float32",
      "area": "holding"
    },
    {
      "name": "Reset",
      "address": 61456,
      "quantity": 1,
      "type": "uint16",
      "area": "holding"
    },
    {
      "name": "Pulse1Constant",
      "address": 63760,
      "quantity": 1,
      "type": "uint16",
      "area": "holding"
    },
    {
      "name": "MeasurementMode",
      "address": 63776,
      "quantity": 1,
      "type": "uint16",
      "area": "holding"
    },
    {
      "name": "SerialNumber",
      "address": 64512,
      "quantity": 2,
      "type": "uint16",
      "area": "holding"
    }
  ],
  "registers": [
    {
      "name": "Voltage",
      "description": "Line to neutral voltage",
      "addressInManual": 30001,
      "address": 0,
      "area": "input",
      "type": "float32",
      "registers": 2,
      "unit": "V",
      "scale": 1,
      "access": "R"
    },
    {
      "name": "Current",
      "description": "Current",
      "addressInManual": 30007,
      "address": 6,
      "area": "input",
      "type": "float32",
      "registers": 2,
      "unit": "A",
      "scale": 1,
      "access": "R"
    },
    {
      "name": "ActivePower",
      "description": "Active power",
      "addressInManual": 30013,
      "address": 12,
      "area": "input",
      "type": "float32",
      "registers": 2,
      "unit": "W",
      "scale": 1,
      "access": "R"
    },
    {
      "name": "ApparentPower",
      "description": "Apparent power",
      "addressInManual": 30019,
      "address": 18,
      "area": "input",
      "type": "float32",
      "registers": 2,
      "unit": "VA",
      "scale": 1,
      "access": "R"
    },
    {
      "name": "ReactivePower",
      "description": "Reactive power",
      "addressInManual": 30025,
      "address": 24,
      "area": "input",
      "type": "float32",
      "registers": 2,
      "unit": "VAr",
      "scale": 1,
      "access": "R"
    },
    {
      "name": "PowerFactor",
      "description": "Power factor",
      "addressInManual": 30031,
      "address": 30,
      "area": "input",
      "type": "float32",
      "registers": 2,
      "unit": null,
      "scale": 1,
      "access": "R"
    },
    {
      "name": "PhaseAngle",
      "description": "Phase angle",
      "addressInManual": 30037,
      "address": 36,
      "area": "input",
      "type": "float32",
      "registers": 2,
      "unit": "°",
      "scale": 1,
      "access": "R"
    },
    {
      "name": "Frequency",
      "description": "Supply frequency",
      "addressInManual": 30071,
      "address": 70,
      "area": "input",
      "type": "float32",
      "registers": 2,
      "unit": "Hz",
      "scale": 1,
      "access": "R"
    },
    {
      "name": "EnergyImport_kWh",
      "description": "Imported active energy",
      "addressInManual": 30073,
      "address": 72,
      "area": "input",
      "type": "float32",
      "registers": 2,
      "unit": "kWh",
      "scale": 1,
      "access": "R"
    },
    {
      "name": "EnergyExport_kWh",
      "description": "Exported active energy",
      "addressInManual": 30075,
      "address": 74,
      "area": "input",
      "type": "float32",
      "registers": 2,
      "unit": "kWh",
      "scale": 1,
      "access": "R"
    },
    {
      "name": "EnergyImport_kvarh",
      "description": "Imported reactive energy",
      "addressInManual": 30077,
      "address": 76,
      "area": "input",
      "type": "float32",
      "registers": 2,
      "unit": "kvarh",
      "scale": 1,
      "access": "R"
    },
    {
      "name": "EnergyExport_kvarh",
      "description": "Exported reactive energy",
      "addressInManual": 30079,
      "address": 78,
      "area": "input",
      "type": "float32",
      "registers": 2,
      "unit": "kvarh",
      "scale": 1,
      "access": "R"
    },
    {
      "name": "PowerDemand_Total",
      "description": "Total system power demand",
      "addressInManual": 30085,
      "address": 84,
      "area": "input",
      "type": "float32",
      "registers": 2,
      "unit": "W",
      "scale": 1,
      "access": "R"
    },
    {
      "name": "PowerDemand_TotalMax",
      "description": "Maximum total system power demand",
      "addressInManual": 30087,
      "address": 86,
      "area": "input",
      "type": "float32",
      "registers": 2,
      "unit": "W",
      "scale": 1,
      "access": "R"
    },
    {
      "name": "PowerDemand_Import",
      "description": "Current system positive power demand",
      "addressInManual": 30089,
      "address": 88,
      "area": "input",
      "type": "float32",
      "registers": 2,
      "unit": "W",
      "scale": 1,
      "access": "R"
    },
    {
      "name": "PowerDemand_ImportMax",
      "description": "Maximum system positive power demand",
      "addressInManual": 30091,
      "address": 90,
      "area": "input",
      "type": "float32",
      "registers": 2,
      "unit": "W",
      "scale": 1,
      "access": "R"
    },
    {
      "name": "PowerDemand_Export",
      "description": "Current system reverse power demand",
      "addressInManual": 30093,
      "address": 92,
      "area": "input",
      "type": "float32",
      "registers": 2,
      "unit": "W",
      "scale": 1,
      "access": "R"
    },
    {
      "name": "PowerDemand_ExportMax",
      "description": "Maximum system reverse power demand",
      "addressInManual": 30095,
      "address": 94,
      "area": "input",
      "type": "float32",
      "registers": 2,
      "unit": "W",
      "scale": 1,
      "access": "R"
    },
    {
      "name": "CurrentDemand",
      "description": "Current demand",
      "addressInManual": 30259,
      "address": 258,
      "area": "input",
      "type": "float32",
      "registers": 2,
      "unit": "A",
      "scale": 1,
      "access": "R"
    },
    {
      "name": "CurrentDemandMax",
      "description": "Maximum current demand",
      "addressInManual": 30265,
      "address": 264,
      "area": "input",
      "type": "float32",
      "registers": 2,
      "unit": "A",
      "scale": 1,
      "access": "R"
    },
    {
      "name": "EnergyTotal_kWh",
      "description": "Total active energy",
      "addressInManual": 30343,
      "address": 342,
      "area": "input",
      "type": "float32",
      "registers": 2,
      "unit": "kWh",
      "scale": 1,
      "access": "R"
    },
    {
      "name": "EnergyTotal_kvarh",
      "description": "Total reactive energy",
      "addressInManual": 30345,
      "address": 344,
      "area": "input",
      "type": "float32",
      "registers": 2,
      "unit": "kvarh",
      "scale": 1,
      "access": "R"
    },
    {
      "name": "EnergyResettable_kWh",
      "description": "Resettable total active energy",
      "addressInManual": 30385,
      "address": 384,
      "area": "input",
      "type": "float32",
      "registers": 2,
      "unit": "kWh",
      "scale": 1,
      "access": "R"
    },
    {
      "name": "EnergyResettable_kvarh",
      "description": "Resettable total reactive energy",
      "addressInManual": 30387,
      "address": 386,
      "area": "input",
      "type": "float32",
      "registers": 2,
      "unit": "kvarh",
      "scale": 1,
      "access": "R"
    },
    {
      "name": "Pulse1Width",
      "description": "Pulse output 1 on-time",
      "addressInManual": 40013,
      "address": 12,
      "area": "holding",
      "type": "float32",
      "registers": 2,
      "unit": "ms",
      "scale": 1,
      "access": "RW"
    },
    {
      "name": "NetworkParityStop",
      "description": "Serial parity and stop bits",
      "addressInManual": 40019,
      "address": 18,
      "area": "holding",
      "type": "float32",
      "registers": 2,
      "unit": null,
      "scale": 1,
      "access": "RW"
    },
    {
      "name": "NetworkNode",
      "description": "Modbus node address",
      "addressInManual": 40021,
      "address": 20,
      "area": "holding",
      "type": "float32",
      "registers": 2,
      "unit": null,
      "scale": 1,
      "access": "RW"
    },
    {
      "name": "NetworkBaud",
      "description": "Serial baud rate index",
      "addressInManual": 40029,
      "address": 28,
      "area": "holding",
      "type": "float32",
      "registers": 2,
      "unit": null,
      "scale": 1,
      "access": "RW"
    },
    {
      "name": "Pulse1EnergyType",
      "description": "Pulse output 1 energy source",
      "addressInManual": 40087,
      "address": 86,
      "area": "holding",
      "type": "float32",
      "registers": 2,
      "unit": null,
      "scale": 1,
      "access": "RW"
    },
    {
      "name": "Reset",
      "description": "Reset maximum demand or resettable energy",
      "addressInManual": 461457,
      "address": 61456,
      "area": "holding",
      "type": "uint16",
      "registers": 1,
      "unit": null,
      "scale": 1,
      "access": "W"
    },
    {
      "name": "Pulse1Constant",
      "description": "Pulse output 1 energy per pulse index",
      "addressInManual": 463761,
      "address": 63760,
      "area": "holding",
      "type": "uint16",
      "registers": 1,
      "unit": null,
      "scale": 1,
      "access": "RW"
    },
    {
      "name": "MeasurementMode",
      "description": "Measurement mode",
      "addressInManual": 463777,
      "address": 63776,
      "area": "holding",
      "type": "uint16",
      "registers": 1,
      "unit": null,
      "scale": 1,
      "access": "RW"
    },
    {
      "name": "SerialNumber",
      "description": "Meter serial number",
      "addressInManual": 464513,
      "address": 64512,
      "area": "holding",
      "type": "uint32",
      "registers": 2,
      "unit": null,
      "scale": 1,
      "access": "R"
    }
  ]
}
