Eastron SDM120CT-M Modbus register map
Also searched as: SDM120CT · SDM120CTM · SDM120CT-Modbus · SDM120CT-MOD
35 Modbus registers of the Eastron SDM120CT-M, with the address on the wire, the 30001-style reference, data type, byte order, unit and scale. Transcribed from Eastron SDM120CTM Smart Meter Modbus Protocol Implementation (V1.3).
Single-phase CT-connected DIN-rail energy meter with RS485 Modbus RTU; every value is a 32-bit float.
- Device type
- Energy meter
- Registers
- 35
- Interfaces
- Modbus RTU
- Default unit ID
- 1
- Byte order (multi-register values)
- ABCD
- Serial settings
- 2400 baud, 8 data bits, no parity, 1 stop bit
Hardware verification
Not yet verified on hardware. The map is transcribed from the vendor document and checked against it by script; check the first readings against the device display.
Connection notes
- Read and write floats in register pairs; an odd start address or count returns an exception.
- Broadcast (address 0) is not supported.
- The example frame reads 43 66 33 34 as 230.2 V, high word first.
- Write holding registers with function 16 (10h).
- The SDM120CT-M 40 mA variant uses a different protocol document; check yours before relying on this map.
Registers
Grouped as in the vendor document.
Voltage 2 registers
| Name and key | Reference | Address | Type | Byte order | Unit | Scale |
|---|---|---|---|---|---|---|
Voltagevoltage | 30001 | 0x0000 | float32 | ABCD | V | |
Frequencyfrequency | 30071 | 0x0046 | float32 | ABCD | Hz |
Current 1 registers
| Name and key | Reference | Address | Type | Byte order | Unit | Scale |
|---|---|---|---|---|---|---|
Currentcurrent | 30007 | 0x0006 | float32 | ABCD | A |
Power 4 registers
| Name and key | Reference | Address | Type | Byte order | Unit | Scale |
|---|---|---|---|---|---|---|
Active poweractive_power | 30013 | 0x000C | float32 | ABCD | W | |
Apparent powerapparent_power | 30019 | 0x0012 | float32 | ABCD | VA | |
Reactive powerreactive_power | 30025 | 0x0018 | float32 | ABCD | var | |
Power factorpower_factor | 30031 | 0x001E | float32 | ABCD |
Energy 6 registers
| Name and key | Reference | Address | Type | Byte order | Unit | Scale |
|---|---|---|---|---|---|---|
Import active energyimport_active_energy | 30073 | 0x0048 | float32 | ABCD | kWh | |
Export active energyexport_active_energy | 30075 | 0x004A | float32 | ABCD | kWh | |
Import reactive energyimport_reactive_energy | 30077 | 0x004C | float32 | ABCD | kvarh | |
Export reactive energyexport_reactive_energy | 30079 | 0x004E | float32 | ABCD | kvarh | |
Total active energytotal_active_energy | 30343 | 0x0156 | float32 | ABCD | kWh | |
Total reactive energytotal_reactive_energy | 30345 | 0x0158 | float32 | ABCD | kvarh |
Demand 8 registers
| Name and key | Reference | Address | Type | Byte order | Unit | Scale |
|---|---|---|---|---|---|---|
Total system power demandactive_power_demand | 30085 | 0x0054 | float32 | ABCD | W | |
Maximum total system power demandactive_power_demand_max | 30087 | 0x0056 | float32 | ABCD | W | |
Import system power demandimport_power_demand | 30089 | 0x0058 | float32 | ABCD | W | |
Maximum import system power demandimport_power_demand_max | 30091 | 0x005A | float32 | ABCD | W | |
Export system power demandexport_power_demand | 30093 | 0x005C | float32 | ABCD | W | |
Maximum export system power demandexport_power_demand_max | 30095 | 0x005E | float32 | ABCD | W | |
Current demandcurrent_demand | 30259 | 0x0102 | float32 | ABCD | A | |
Maximum current demandcurrent_demand_max | 30265 | 0x0108 | float32 | ABCD | A |
Setup 14 registers
| Name and key | Reference | Address | Type | Byte order | Unit | Scale |
|---|---|---|---|---|---|---|
Demand timedemand_time | 40001 | 0x0000 | float32 | ABCD | min | |
Demand perioddemand_period | 40003 | 0x0002 | float32 | ABCD | min | |
Relay pulse widthpulse_width | 40013 | 0x000C | float32 | ABCD | ms | |
Network parity and stop bitsparity_stop | 40019 | 0x0012 | float32 | ABCD | ||
Meter ID (Modbus address)modbus_address | 40021 | 0x0014 | float32 | ABCD | ||
Network baud ratebaud_rate | 40029 | 0x001C | float32 | ABCD | ||
CT primary currentct_primary | 40051 | 0x0032 | float32 | ABCD | A | |
CT secondary currentct_secondary | 40053 | 0x0034 | float32 | ABCD | A | |
Pulse 1 output modepulse1_energy_type | 40087 | 0x0056 | float32 | ABCD | ||
Reset historical datareset_demand | 461457 | 0xF010 | uint16 | |||
Scroll display timescroll_time | 463745 | 0xF900 | raw | s | ||
Pulse 1 output constantpulse1_constant | 463761 | 0xF910 | uint16 | |||
Measurement modemeasurement_mode | 463777 | 0xF920 | uint16 | |||
Serial numberserial_number | 464513 | 0xFC00 | uint32 | ABCD |
Source documents
- Eastron SDM120CTM Smart Meter Modbus Protocol Implementation , Eastron, V1.3 (accessed 2026-11-09) Copy hosted by Fastron Electronics, Eastron's distributor; Eastron publishes no copy that can be downloaded without a login.
Read it by name
Read the SDM120CT-M with an AI assistant
The Proxus Industrial MCP Server includes this map. Set it on the device, and Claude, Cursor or VS Code reads registers by key with the right type, byte order, scale and unit. It only reads.
This device speaks Modbus RTU: reach it through a Modbus TCP gateway and use the gateway’s address with the device’s unit ID.
proxus-mcp.json
{
"devices": {
"sdm120ct-1": {
"protocol": "modbus-tcp",
"host": "192.168.10.40",
"unit_id": 1,
"map": "eastron/sdm120ct-m"
}
}
} Ask your assistant
Read voltage, frequency, current from sdm120ct-1.
The tool call it makes
read_named(device: "sdm120ct-1", keys: ["voltage", "frequency", "current"]) Have this device? Verify the map.
Ask your assistant to run verify_device_map. It reads every register once, read-only, checks that the values are plausible and asks you to compare two values with the display. You get a report and a prefilled GitHub issue to submit; your name goes on this map’s verified list.
Collecting from many devices?
Proxus reads Modbus TCP and RTU devices next to the machines, keeps the history and delivers the values to dashboards, databases and AI.