Eastron SDM120CT Modbus register map
Also covers SDM120CTM, SDM120CT-M
Single-phase DIN rail energy meter for an external current transformer (1 A or 5 A secondary)
- Official
- 35 registers
- Modbus RTU
- Revision 2 · 2026-10-17
- Identity: serial number
Official: Written from the manufacturer's documentation, but not tested on a device yet. Check the map against the manufacturer's documentation before you write to a live device. Tested it? Report a test.
Communication
- Protocol
- Modbus RTU
- Unit ID
- 1
- Serial
- 2400 8N1 · 2400 baud, 8 data bits, none parity, 1 stop bit
- Byte / word order
- ABCD · bytes big-endian, words high first
- Addresses
- 0-based
Connection values are defaults: the device may be configured differently.
Map
- Registers
- 14 holding registers, 21 input registers
- Groups
- 6
- Revision
- 2 · 2026-10-17
- Added
- ()
- File
- maps/eastron/sdm120ct.mbmap.json · 8 KB · history
- SHA-256
- e61973b9b69eb93ad393bf7a0a276ff6b103ccde8847a7dbb9ab8a3c514772e6
- Manufacturer
- eastroneurope.com
Device identity
What a tool can read to check that this map fits the connected device (SPEC.md section 4.7). Registers with a role are read like any other register.
| Role | Register | Address | Type | Values |
|---|---|---|---|---|
| Serial number | Serial number | holding 64512 | uint32 ABCD |
Sources and notes
- Eastron SDM120CTM Smart Meter Modbus Protocol Implementation · version V1.3
Source: Eastron, "Eastron SDM120CTM Smart Meter Modbus Protocol Implementation", V1.3
- Measurements are float32 input registers (FC04); settings are float32 holding registers (FC03 read, FC10 write). The meter also answers FC08.
- Requests must start at an even address and cover an even number of registers, so a single float32 is read or written as two registers. Only one float can be written per request.
- The settings at F900h-F920h are 16-bit values in the protocol; read them together with the next register if the meter rejects a one-register read.
| Area | Address | Name | Type | Access | Unit | Scale | Description |
|---|---|---|---|---|---|---|---|
| IR | 0 | float32 ABCD | R | V | |||
| IR | 6 | float32 ABCD | R | A | |||
| IR | 12 | float32 ABCD | R | W | |||
| IR | 18 | float32 ABCD | R | VA | |||
| IR | 24 | float32 ABCD | R | var | |||
| IR | 30 | float32 ABCD | R | ||||
| IR | 70 | float32 ABCD | R | Hz | |||
| IR | 72 | float32 ABCD | R | kWh | |||
| IR | 74 | float32 ABCD | R | kWh | |||
| IR | 76 | float32 ABCD | R | kvarh | |||
| IR | 78 | float32 ABCD | R | kvarh | |||
| IR | 84 | float32 ABCD | R | W | |||
| IR | 86 | float32 ABCD | R | W | |||
| IR | 88 | float32 ABCD | R | W | |||
| IR | 90 | float32 ABCD | R | W | |||
| IR | 92 | float32 ABCD | R | W | |||
| IR | 94 | float32 ABCD | R | W | |||
| IR | 258 | float32 ABCD | R | A | |||
| IR | 264 | float32 ABCD | R | A | |||
| IR | 342 | float32 ABCD | R | kWh | |||
| IR | 344 | float32 ABCD | R | kvarh | |||
| HR | 0 | float32 ABCD | R | min | Minutes into the first demand calculation; demand values are valid once it reaches the demand period | ||
| HR | 2 | float32 ABCD | RW | min | Default 60; 0 turns demand off | ||
| HR | 12 | float32 ABCD | RW | ms | 60, 100 or 200 ms, default 100 | ||
| HR | 18 | float32 ABCD | RW | Default 0. Takes effect after a restart | |||
| HR | 20 | float32 ABCD | RW | Modbus address, default 1 | |||
| HR | 28 | float32 ABCD | RW | Default 0 (2400) | |||
| HR | 50 | float32 ABCD | RW | A | Default 5 | ||
| HR | 52 | float32 ABCD | RW | A | 1 or 5, default 5 | ||
| HR | 86 | float32 ABCD | RW | Default 4 | |||
| HR | 61456 | uint32 ABCD | W | The protocol writes 00 00 here; requests must cover an even number of registers, so this sends two zero registers with FC10 | |||
| HR | 63744 | uint16 | RW | s | BCD, 0 to 30 s; 0 (default) = no automatic scrolling | ||
| HR | 63760 | uint16 | RW | Default 1 | |||
| HR | 63776 | uint16 | RW | Default 2 | |||
| HR | 64512 | uint32 ABCD | R |
No registers match
Try part of the name, an address (decimal or 0x hex) or clear the filters.
Help improve this map
- I tested it on a deviceReport whether it worked, even if you did not write the map.
- Suggest a correctionEdit the file on GitHub; it opens a pull request.
- Report a problemA wrong address, type, scale or byte order.
- Read the formatWhat each key of the file means (SPEC.md).