Eastron SDM230-Modbus Modbus register map
Single phase two-module DIN rail energy meter with an RS485 Modbus RTU port. It reports voltage, current, active, apparent and reactive power, power factor, frequency, import and export energy and demand values.
- Protocol
- Modbus RTU
- Defaults
- Per the protocol document: node address 1, 2400 baud, no parity and one stop bit. Address range 1 to 247.
- Addresses in the manual
- Modicon style numbers (for example 40001 is holding register 0)
- 32 and 64-bit values
- High word first (AB CD)
- Registers listed
- 33
- Checked against
- Eastron SDM230Modbus Protocol V1.3 (page footer), Implementation V1.4 (section heading)
Address base. The tables print 5-digit Modicon style numbers (3xxxx for input registers read with function 04, 4xxxx for holding registers) next to the hex start address used on the wire, for example 30001 is wire 0x0000 and 40013 is 0x000C (pp. 2-5 of the PDF). The 6-digit holding numbers map to wire addresses such as 0xF010 and 0xFC00. For example 30001 in the manual (Line to neutral voltage) is address 0 on the wire.
Word order. Values are 32-bit IEEE 754 floats in two registers, most significant register first by default (p. 1). The manual refers to a Register Order setting that can change this, but no address for it appears in the tables I read.
Modbus Poll and the Modbus protocol itself count from 0. The "Wire address" column is the number to type into Modbus Poll.
Downloads
The register table has every column on this page. The blocks file imports into Modbus Poll. The template JSON holds the same blocks plus unit, scale and access for scripts.
Registers
| Manual | Wire | Register | Type | Regs | Unit | Scale | Access | Area |
|---|---|---|---|---|---|---|---|---|
| 30001 | 0 | Line to neutral voltageVoltage |
float32 | 2 | V | 1 | R | Input (FC04) |
| 30007 | 6 | CurrentCurrent |
float32 | 2 | A | 1 | R | Input (FC04) |
| 30013 | 12 | Active powerActivePower |
float32 | 2 | W | 1 | R | Input (FC04) |
| 30019 | 18 | Apparent powerApparentPower |
float32 | 2 | VA | 1 | R | Input (FC04) |
| 30025 | 24 | Reactive powerReactivePower |
float32 | 2 | VAr | 1 | R | Input (FC04) |
| 30031 | 30 | Power factorPowerFactor |
float32 | 2 | 1 | R | Input (FC04) | |
| 30037 | 36 | Phase anglePhaseAngle |
float32 | 2 | ° | 1 | R | Input (FC04) |
| 30071 | 70 | Supply frequencyFrequency |
float32 | 2 | Hz | 1 | R | Input (FC04) |
| 30073 | 72 | Imported active energyEnergyImport_kWh |
float32 | 2 | kWh | 1 | R | Input (FC04) |
| 30075 | 74 | Exported active energyEnergyExport_kWh |
float32 | 2 | kWh | 1 | R | Input (FC04) |
| 30077 | 76 | Imported reactive energyEnergyImport_kvarh |
float32 | 2 | kvarh | 1 | R | Input (FC04) |
| 30079 | 78 | Exported reactive energyEnergyExport_kvarh |
float32 | 2 | kvarh | 1 | R | Input (FC04) |
| 30085 | 84 | Total system power demandPowerDemand_Total |
float32 | 2 | W | 1 | R | Input (FC04) |
| 30087 | 86 | Maximum total system power demandPowerDemand_TotalMax |
float32 | 2 | W | 1 | R | Input (FC04) |
| 30089 | 88 | Current system positive power demandPowerDemand_Import |
float32 | 2 | W | 1 | R | Input (FC04) |
| 30091 | 90 | Maximum system positive power demandPowerDemand_ImportMax |
float32 | 2 | W | 1 | R | Input (FC04) |
| 30093 | 92 | Current system reverse power demandPowerDemand_Export |
float32 | 2 | W | 1 | R | Input (FC04) |
| 30095 | 94 | Maximum system reverse power demandPowerDemand_ExportMax |
float32 | 2 | W | 1 | R | Input (FC04) |
| 30259 | 258 | Current demandCurrentDemand |
float32 | 2 | A | 1 | R | Input (FC04) |
| 30265 | 264 | Maximum current demandCurrentDemandMax |
float32 | 2 | A | 1 | R | Input (FC04) |
| 30343 | 342 | Total active energyEnergyTotal_kWh · Meaning depends on the measurement mode setting at 463777 (import, import plus export, or import minus export). |
float32 | 2 | kWh | 1 | R | Input (FC04) |
| 30345 | 344 | Total reactive energyEnergyTotal_kvarh |
float32 | 2 | kvarh | 1 | R | Input (FC04) |
| 30385 | 384 | Resettable total active energyEnergyResettable_kWh · Cleared by writing 0x0003 to the reset register 461457. |
float32 | 2 | kWh | 1 | R | Input (FC04) |
| 30387 | 386 | Resettable total reactive energyEnergyResettable_kvarh |
float32 | 2 | kvarh | 1 | R | Input (FC04) |
| 40013 | 12 | Pulse output 1 on-timePulse1Width · 60, 100 or 200, default 100. |
float32 | 2 | ms | 1 | RW | Holding (FC03) |
| 40019 | 18 | Serial parity and stop bitsNetworkParityStop · 0 = no parity, 1 stop bit (default); 1 = even parity; 2 = odd parity; 3 = no parity, 2 stop bits. |
float32 | 2 | 1 | RW | Holding (FC03) | |
| 40021 | 20 | Modbus node addressNetworkNode · 1 to 247, default 1. |
float32 | 2 | 1 | RW | Holding (FC03) | |
| 40029 | 28 | Serial baud rate indexNetworkBaud · 0 = 2400 (default), 1 = 4800, 2 = 9600, 5 = 1200. |
float32 | 2 | 1 | RW | Holding (FC03) | |
| 40087 | 86 | Pulse output 1 energy sourcePulse1EnergyType · 1 import active, 2 import plus export active, 4 export active (default), 5 import reactive, 6 import plus export reactive, 8 export reactive. |
float32 | 2 | 1 | RW | Holding (FC03) | |
| 461457 | 61456 | Reset maximum demand or resettable energyReset · Write 0x0000 to reset maximum demand, 0x0003 to reset the resettable energy. Wire address 0xF010 (6-digit printed number). |
uint16 | 1 | 1 | W | Holding (FC03) | |
| 463761 | 63760 | Pulse output 1 energy per pulse indexPulse1Constant · 0 = 0.001 (default), 1 = 0.01, 2 = 0.1, 3 = 1 kWh (kvarh) per pulse. Wire address 0xF910. |
uint16 | 1 | 1 | RW | Holding (FC03) | |
| 463777 | 63776 | Measurement modeMeasurementMode · 1 = total is import, 2 = total is import plus export (default), 3 = total is import minus export. The SDM230 document prints this as 463776 but gives the hex start address 0xF920, which is 463777 under the 6-digit convention. The SDM120 document prints 463777 for the same hex address F920. Listed as 463777 so that the wire address is 0xF920. |
uint16 | 1 | 1 | RW | Holding (FC03) | |
| 464513 | 64512 | Meter serial numberSerialNumber · Unsigned 32-bit, read only. Wire address 0xFC00. |
uint32 | 2 | 1 | R | Holding (FC03) |
Scale is the number to multiply the raw value by to get the unit. Types with more than one register (32 and 64-bit) follow the word order above.
Open in Modbus Poll
- Download the Modbus Poll blocks file.
- Open Modbus Poll, connect to the device and set its unit ID. In Modbus Poll set Word order to AB CD.
- In the blocks panel on the right, click Import CSV and pick the file. CSV import is a Pro feature. Without Pro, Modbus Poll polls the first 20 values of your blocks.
- The wire addresses are already in the file, so there is no 0-based or 1-based conversion to do.
Once the values look right, export the tag list to Ignition, Kepware, Node-RED, Home Assistant or Voltrus SCADA.
Source and accuracy
Manufacturer document: Eastron SDM230-Modbus Smart Meter Modbus Protocol (www.eastroneurope.com)
Eastron SDM230Modbus Protocol V1.3 (page footer), Implementation V1.4 (section heading), PDF pp. 1-5. Read on 2026-10-24.
Also used: Eastron SDM230 series datasheet (www.eastrongroup.com)
Addresses, types, units and scale are taken from the document above. Names and descriptions are written by Voltrus. Firmware versions can differ, so confirm a value on your own device before you rely on it.
Found a mistake? Report it by email with the register address and the manual page.