{ "$schema": "https://raw.githubusercontent.com/nobrega8/mbmap-library/main/schema/mbmap-2.schema.json", "mbmap": 2, "vendor": "Eastron", "model": "SDM630-Modbus", "models": ["SDM630-Modbus"], "vendor_website": "eastroneurope.com", "description": "Three-phase multifunction DIN rail energy meter, direct connection (SDM630-Modbus and SDM630-Modbus V2). Values a wiring system does not use read 0", "revision": 3, "revised": "2026-11-10", "source": "Eastron Europe, \"Eastron SDM630Modbus Smart Meter Modbus Protocol Implementation V1.8\"; https://www.eastroneurope.com/images/uploads/products/protocol/SDM630_MODBUS_Protocol.pdf", "sources": [ {"title": "Eastron SDM630Modbus Smart Meter Modbus Protocol Implementation", "version": "V1.8", "url": "https://www.eastroneurope.com/images/uploads/products/protocol/SDM630_MODBUS_Protocol.pdf"} ], "notes": [ "Eastron SDM630-Modbus three-phase energy meter (RS485).", "Every value is a float32 in two registers. The meter answers FC03, FC04 and FC16 only (no FC06)", "and rejects reads or writes of an odd number of registers." ], "protocol": "rtu", "unit_id": 1, "baudrate": 9600, "parity": "N", "databits": 8, "stopbits": 1, "byte_order": "big", "word_order": "big", "address_base": 0, "max_read_registers": 80, "x_status": "official", "registers": [ {"name": "Phase 1 line to neutral volts", "group": "Volts", "area": "input", "address": 0, "type": "float32", "unit": "V", "access": "R", "description": "Valid on 3P4W, 1P2W; reads 0 otherwise"}, {"name": "Phase 2 line to neutral volts", "group": "Volts", "area": "input", "address": 2, "type": "float32", "unit": "V", "access": "R", "description": "Valid on 3P4W; reads 0 otherwise"}, {"name": "Phase 3 line to neutral volts", "group": "Volts", "area": "input", "address": 4, "type": "float32", "unit": "V", "access": "R", "description": "Valid on 3P4W; reads 0 otherwise"}, {"name": "Phase 1 current", "group": "Current", "area": "input", "address": 6, "type": "float32", "unit": "A", "access": "R"}, {"name": "Phase 2 current", "group": "Current", "area": "input", "address": 8, "type": "float32", "unit": "A", "access": "R", "description": "Valid on 3P4W, 3P3W; reads 0 otherwise"}, {"name": "Phase 3 current", "group": "Current", "area": "input", "address": 10, "type": "float32", "unit": "A", "access": "R", "description": "Valid on 3P4W, 3P3W; reads 0 otherwise"}, {"name": "Phase 1 power", "group": "Power", "area": "input", "address": 12, "type": "float32", "unit": "W", "access": "R", "description": "Valid on 3P4W, 1P2W; reads 0 otherwise"}, {"name": "Phase 2 power", "group": "Power", "area": "input", "address": 14, "type": "float32", "unit": "W", "access": "R", "description": "Valid on 3P4W, 1P2W; reads 0 otherwise"}, {"name": "Phase 3 power", "group": "Power", "area": "input", "address": 16, "type": "float32", "unit": "W", "access": "R", "description": "Valid on 3P4W; reads 0 otherwise"}, {"name": "Phase 1 volt amps", "group": "Power", "area": "input", "address": 18, "type": "float32", "unit": "VA", "access": "R", "description": "Valid on 3P4W, 1P2W; reads 0 otherwise"}, {"name": "Phase 2 volt amps", "group": "Power", "area": "input", "address": 20, "type": "float32", "unit": "VA", "access": "R", "description": "Valid on 3P4W; reads 0 otherwise"}, {"name": "Phase 3 volt amps", "group": "Power", "area": "input", "address": 22, "type": "float32", "unit": "VA", "access": "R", "description": "Valid on 3P4W; reads 0 otherwise"}, {"name": "Phase 1 reactive power", "group": "Power", "area": "input", "address": 24, "type": "float32", "unit": "var", "access": "R", "description": "Valid on 3P4W, 1P2W; reads 0 otherwise"}, {"name": "Phase 2 reactive power", "group": "Power", "area": "input", "address": 26, "type": "float32", "unit": "var", "access": "R", "description": "Valid on 3P4W; reads 0 otherwise"}, {"name": "Phase 3 reactive power", "group": "Power", "area": "input", "address": 28, "type": "float32", "unit": "var", "access": "R", "description": "Valid on 3P4W; reads 0 otherwise"}, {"name": "Phase 1 power factor", "group": "Power factor", "area": "input", "address": 30, "type": "float32", "access": "R", "description": "Sign follows the direction of the current: positive = forward, negative = reverse; Valid on 3P4W, 1P2W; reads 0 otherwise"}, {"name": "Phase 2 power factor", "group": "Power factor", "area": "input", "address": 32, "type": "float32", "access": "R", "description": "Sign follows the direction of the current: positive = forward, negative = reverse; Valid on 3P4W; reads 0 otherwise"}, {"name": "Phase 3 power factor", "group": "Power factor", "area": "input", "address": 34, "type": "float32", "access": "R", "description": "Sign follows the direction of the current: positive = forward, negative = reverse; Valid on 3P4W; reads 0 otherwise"}, {"name": "Phase 1 phase angle", "group": "Power factor", "area": "input", "address": 36, "type": "float32", "unit": "°", "access": "R", "description": "Valid on 3P4W, 1P2W; reads 0 otherwise"}, {"name": "Phase 2 phase angle", "group": "Power factor", "area": "input", "address": 38, "type": "float32", "unit": "°", "access": "R", "description": "Valid on 3P4W; reads 0 otherwise"}, {"name": "Phase 3 phase angle", "group": "Power factor", "area": "input", "address": 40, "type": "float32", "unit": "°", "access": "R", "description": "Valid on 3P4W; reads 0 otherwise"}, {"name": "Average line to neutral volts", "group": "Volts", "area": "input", "address": 42, "type": "float32", "unit": "V", "access": "R", "description": "Valid on 3P4W; reads 0 otherwise"}, {"name": "Average line current", "group": "Current", "area": "input", "address": 46, "type": "float32", "unit": "A", "access": "R"}, {"name": "Sum of line currents", "group": "Current", "area": "input", "address": 48, "type": "float32", "unit": "A", "access": "R"}, {"name": "Total system power", "group": "Power", "area": "input", "address": 52, "type": "float32", "unit": "W", "access": "R"}, {"name": "Total system volt amps", "group": "Power", "area": "input", "address": 56, "type": "float32", "unit": "VA", "access": "R"}, {"name": "Total system reactive power", "group": "Power", "area": "input", "address": 60, "type": "float32", "unit": "var", "access": "R"}, {"name": "Total system power factor", "group": "Power factor", "area": "input", "address": 62, "type": "float32", "access": "R", "description": "Sign follows the direction of the current: positive = forward, negative = reverse"}, {"name": "Total system phase angle", "group": "Power factor", "area": "input", "address": 66, "type": "float32", "unit": "°", "access": "R"}, {"name": "Frequency", "group": "System", "area": "input", "address": 70, "type": "float32", "unit": "Hz", "access": "R"}, {"name": "Total import kWh", "group": "Energy", "area": "input", "address": 72, "type": "float32", "unit": "kWh", "access": "R"}, {"name": "Total export kWh", "group": "Energy", "area": "input", "address": 74, "type": "float32", "unit": "kWh", "access": "R"}, {"name": "Total import kvarh", "group": "Energy", "area": "input", "address": 76, "type": "float32", "unit": "kvarh", "access": "R"}, {"name": "Total export kvarh", "group": "Energy", "area": "input", "address": 78, "type": "float32", "unit": "kvarh", "access": "R"}, {"name": "Total VAh", "group": "Energy", "area": "input", "address": 80, "type": "float32", "unit": "kVAh", "access": "R"}, {"name": "Ah", "group": "Energy", "area": "input", "address": 82, "type": "float32", "unit": "Ah", "access": "R"}, {"name": "Total system power demand", "group": "Demand", "area": "input", "address": 84, "type": "float32", "unit": "W", "access": "R", "description": "Import minus export"}, {"name": "Maximum total system power demand", "group": "Demand", "area": "input", "address": 86, "type": "float32", "unit": "W", "access": "R", "description": "Import minus export. The protocol table gives the unit as VA"}, {"name": "Total system VA demand", "group": "Demand", "area": "input", "address": 100, "type": "float32", "unit": "VA", "access": "R"}, {"name": "Maximum total system VA demand", "group": "Demand", "area": "input", "address": 102, "type": "float32", "unit": "VA", "access": "R"}, {"name": "Neutral current demand", "group": "Demand", "area": "input", "address": 104, "type": "float32", "unit": "A", "access": "R", "description": "Valid on 3P4W; reads 0 otherwise"}, {"name": "Maximum neutral current demand", "group": "Demand", "area": "input", "address": 106, "type": "float32", "unit": "A", "access": "R", "description": "Valid on 3P4W; reads 0 otherwise"}, {"name": "Line 1 to line 2 volts", "group": "Volts", "area": "input", "address": 200, "type": "float32", "unit": "V", "access": "R", "description": "Valid on 3P4W, 3P3W; reads 0 otherwise"}, {"name": "Line 2 to line 3 volts", "group": "Volts", "area": "input", "address": 202, "type": "float32", "unit": "V", "access": "R", "description": "Valid on 3P4W, 3P3W; reads 0 otherwise"}, {"name": "Line 3 to line 1 volts", "group": "Volts", "area": "input", "address": 204, "type": "float32", "unit": "V", "access": "R", "description": "Valid on 3P4W, 3P3W; reads 0 otherwise"}, {"name": "Average line to line volts", "group": "Volts", "area": "input", "address": 206, "type": "float32", "unit": "V", "access": "R", "description": "Valid on 3P4W, 3P3W; reads 0 otherwise"}, {"name": "Neutral current", "group": "Current", "area": "input", "address": 224, "type": "float32", "unit": "A", "access": "R", "description": "Valid on 3P4W; reads 0 otherwise"}, {"name": "Phase 1 L/N volts THD", "group": "Harmonics", "area": "input", "address": 234, "type": "float32", "unit": "%", "access": "R", "description": "Valid on 3P4W, 1P2W; reads 0 otherwise"}, {"name": "Phase 2 L/N volts THD", "group": "Harmonics", "area": "input", "address": 236, "type": "float32", "unit": "%", "access": "R", "description": "Valid on 3P4W; reads 0 otherwise"}, {"name": "Phase 3 L/N volts THD", "group": "Harmonics", "area": "input", "address": 238, "type": "float32", "unit": "%", "access": "R", "description": "Valid on 3P4W; reads 0 otherwise"}, {"name": "Phase 1 current THD", "group": "Harmonics", "area": "input", "address": 240, "type": "float32", "unit": "%", "access": "R"}, {"name": "Phase 2 current THD", "group": "Harmonics", "area": "input", "address": 242, "type": "float32", "unit": "%", "access": "R", "description": "Valid on 3P4W, 3P3W; reads 0 otherwise"}, {"name": "Phase 3 current THD", "group": "Harmonics", "area": "input", "address": 244, "type": "float32", "unit": "%", "access": "R", "description": "Valid on 3P4W, 3P3W; reads 0 otherwise"}, {"name": "Average line to neutral volts THD", "group": "Harmonics", "area": "input", "address": 248, "type": "float32", "unit": "%", "access": "R", "description": "Valid on 3P4W, 1P2W; reads 0 otherwise"}, {"name": "Average line current THD", "group": "Harmonics", "area": "input", "address": 250, "type": "float32", "unit": "%", "access": "R"}, {"name": "Phase 1 current demand", "group": "Demand", "area": "input", "address": 258, "type": "float32", "unit": "A", "access": "R"}, {"name": "Phase 2 current demand", "group": "Demand", "area": "input", "address": 260, "type": "float32", "unit": "A", "access": "R", "description": "Valid on 3P4W, 3P3W; reads 0 otherwise"}, {"name": "Phase 3 current demand", "group": "Demand", "area": "input", "address": 262, "type": "float32", "unit": "A", "access": "R", "description": "Valid on 3P4W, 3P3W; reads 0 otherwise"}, {"name": "Maximum phase 1 current demand", "group": "Demand", "area": "input", "address": 264, "type": "float32", "unit": "A", "access": "R"}, {"name": "Maximum phase 2 current demand", "group": "Demand", "area": "input", "address": 266, "type": "float32", "unit": "A", "access": "R", "description": "Valid on 3P4W, 3P3W; reads 0 otherwise"}, {"name": "Maximum phase 3 current demand", "group": "Demand", "area": "input", "address": 268, "type": "float32", "unit": "A", "access": "R", "description": "Valid on 3P4W, 3P3W; reads 0 otherwise"}, {"name": "Line 1 to line 2 volts THD", "group": "Harmonics", "area": "input", "address": 334, "type": "float32", "unit": "%", "access": "R", "description": "Valid on 3P4W, 3P3W; reads 0 otherwise"}, {"name": "Line 2 to line 3 volts THD", "group": "Harmonics", "area": "input", "address": 336, "type": "float32", "unit": "%", "access": "R", "description": "Valid on 3P4W, 3P3W; reads 0 otherwise"}, {"name": "Line 3 to line 1 volts THD", "group": "Harmonics", "area": "input", "address": 338, "type": "float32", "unit": "%", "access": "R", "description": "Valid on 3P4W, 3P3W; reads 0 otherwise"}, {"name": "Average line to line volts THD", "group": "Harmonics", "area": "input", "address": 340, "type": "float32", "unit": "%", "access": "R", "description": "Valid on 3P4W, 3P3W; reads 0 otherwise"}, {"name": "Total kWh", "group": "Energy", "area": "input", "address": 342, "type": "float32", "unit": "kWh", "access": "R", "description": "Import plus export"}, {"name": "Total kvarh", "group": "Energy", "area": "input", "address": 344, "type": "float32", "unit": "kvarh", "access": "R", "description": "Import plus export"}, {"name": "L1 import kWh", "group": "Energy by phase", "area": "input", "address": 346, "type": "float32", "unit": "kWh", "access": "R"}, {"name": "L2 import kWh", "group": "Energy by phase", "area": "input", "address": 348, "type": "float32", "unit": "kWh", "access": "R"}, {"name": "L3 import kWh", "group": "Energy by phase", "area": "input", "address": 350, "type": "float32", "unit": "kWh", "access": "R"}, {"name": "L1 export kWh", "group": "Energy by phase", "area": "input", "address": 352, "type": "float32", "unit": "kWh", "access": "R"}, {"name": "L2 export kWh", "group": "Energy by phase", "area": "input", "address": 354, "type": "float32", "unit": "kWh", "access": "R"}, {"name": "L3 export kWh", "group": "Energy by phase", "area": "input", "address": 356, "type": "float32", "unit": "kWh", "access": "R"}, {"name": "L1 total kWh", "group": "Energy by phase", "area": "input", "address": 358, "type": "float32", "unit": "kWh", "access": "R", "description": "Import plus export"}, {"name": "L2 total kWh", "group": "Energy by phase", "area": "input", "address": 360, "type": "float32", "unit": "kWh", "access": "R", "description": "Import plus export"}, {"name": "L3 total kWh", "group": "Energy by phase", "area": "input", "address": 362, "type": "float32", "unit": "kWh", "access": "R", "description": "Import plus export"}, {"name": "L1 import kvarh", "group": "Energy by phase", "area": "input", "address": 364, "type": "float32", "unit": "kvarh", "access": "R"}, {"name": "L2 import kvarh", "group": "Energy by phase", "area": "input", "address": 366, "type": "float32", "unit": "kvarh", "access": "R"}, {"name": "L3 import kvarh", "group": "Energy by phase", "area": "input", "address": 368, "type": "float32", "unit": "kvarh", "access": "R"}, {"name": "L1 export kvarh", "group": "Energy by phase", "area": "input", "address": 370, "type": "float32", "unit": "kvarh", "access": "R"}, {"name": "L2 export kvarh", "group": "Energy by phase", "area": "input", "address": 372, "type": "float32", "unit": "kvarh", "access": "R"}, {"name": "L3 export kvarh", "group": "Energy by phase", "area": "input", "address": 374, "type": "float32", "unit": "kvarh", "access": "R"}, {"name": "L1 total kvarh", "group": "Energy by phase", "area": "input", "address": 376, "type": "float32", "unit": "kvarh", "access": "R", "description": "Import plus export"}, {"name": "L2 total kvarh", "group": "Energy by phase", "area": "input", "address": 378, "type": "float32", "unit": "kvarh", "access": "R", "description": "Import plus export"}, {"name": "L3 total kvarh", "group": "Energy by phase", "area": "input", "address": 380, "type": "float32", "unit": "kvarh", "access": "R", "description": "Import plus export"}, {"name": "Demand period", "group": "Setup", "area": "holding", "address": 2, "type": "float32", "unit": "min", "access": "RW", "description": "0, 5, 8, 10, 15, 20, 30 or 60 minutes, default 60. 0 makes demand show the present value and max demand the maximum since the last reset"}, {"name": "System type", "group": "Setup", "area": "holding", "address": 10, "type": "float32", "access": "RW", "description": "3 = 3P4W, 2 = 3P3W, 1 = 1P2W. Needs the password"}, {"name": "Pulse 1 width", "group": "Setup", "area": "holding", "address": 12, "type": "float32", "unit": "ms", "access": "RW", "description": "60, 100 or 200 ms, default 100"}, {"name": "Password lock", "group": "Setup", "area": "holding", "address": 14, "type": "float32", "access": "RW", "description": "Reads 0 = locked, 1 = unlocked; writing any value locks. Reading also restarts the one-minute password timeout"}, {"name": "Network parity and stop bits", "group": "Setup", "area": "holding", "address": 18, "type": "float32", "access": "RW", "description": "0 = no parity, 1 stop bit (default); 1 = even, 1 stop; 2 = odd, 1 stop; 3 = no parity, 2 stop. Takes effect after a restart"}, {"name": "Network node", "group": "Setup", "area": "holding", "address": 20, "type": "float32", "access": "RW", "description": "Modbus address 1 to 247, default 1. Takes effect after a restart"}, {"name": "Pulse 1 divisor", "group": "Setup", "area": "holding", "address": 22, "type": "float32", "access": "RW", "description": "0 = 0.0025, 1 = 0.01, 2 = 0.1, 3 = 1, 4 = 10, 5 = 100 kWh (kvarh) per pulse"}, {"name": "Password", "group": "Setup", "area": "holding", "address": 24, "type": "float32", "access": "RW", "description": "Write the password (default 0000) to unlock protected registers for one minute"}, {"name": "Network baud rate", "group": "Setup", "area": "holding", "address": 28, "type": "float32", "access": "RW", "description": "0 = 2400, 1 = 4800, 2 = 9600 (default), 3 = 19200, 4 = 38400. Takes effect after a restart"}, {"name": "Pulse 1 energy type", "group": "Setup", "area": "holding", "address": 86, "type": "float32", "access": "RW", "description": "1 = import active, 2 = total active, 4 = export active (default), 5 = import reactive, 6 = total reactive, 8 = export reactive"}, {"name": "Reset maximum demand", "group": "Commands", "area": "holding", "address": 61456, "type": "uint32", "access": "W", "enum": {"0": "Reset"}, "description": "The protocol writes 00 00 here; every Eastron write must cover an even number of registers, so this sends two zero registers with FC16"}, {"name": "Serial number", "group": "Device", "area": "holding", "address": 64512, "type": "uint32", "access": "R", "role": "serial"} ] }