// Device guide — Eastron

Eastron SDM120
Modbus Guide

Read voltage, current, power, power factor, frequency and energy from an Eastron SDM120 single-phase energy meter over Modbus RTU. This guide gives the full register map, FLOAT32 decoding, the FC04 input-register detail that trips people up, the default 2400-baud settings — and how to get live data with ModbusManager on Windows. Covers the SDM120M, SDM120CT and the closely related SDM220 and SDM230.

Download demo workspace Get ModbusManager Pro

Windows 10/11 · Modbus RTU & TCP · one-time license

The everywhere single-phase meter

The Eastron SDM120 is probably the most installed single-phase DIN-rail Modbus energy meter in the world — one module wide, MID-certified variants, 45 A direct connection (or CT-operated as the SDM120CT) and a compact register map covering voltage, current, power and bidirectional energy. EV charger installations, solar export limiting, tenant sub-metering and heat-pump monitoring all lean on it. Its bigger siblings SDM220 and SDM230 share the same protocol style, and if you can read an SDM120 you can read the three-phase SDM630 too — same FLOAT32, two-registers-per-value pattern.

Ready-made SDM120 workspace

A free ModbusManager workspace that polls the whole SDM120 measurement block over FC04, decodes every value as FLOAT32 and shows a live dashboard — voltage, power and current gauges, power factor, frequency, import/export and total energy, plus a live power trend. Load it, set your meter’s slave ID and serial settings, and you are reading in under a minute.

Download SDM120 workspace

Open via File › Open Workspace. The dashboard uses the tag engine, which is a Pro feature — the poll windows and register grid work in Standard too. ⚠ Default poll assumes slave ID 1; adjust in the poll window if your meter uses another address.

Modbus settings

The SDM120 talks Modbus RTU over its 2-wire RS-485 terminals. Factory defaults below — all of them can be changed from the front-button set-up menu or by writing the holding registers.

SettingDefault / options
ProtocolModbus RTU, 2-wire RS-485
Slave address1 (range 1–247)
Baud rate2400 default · options 1200–38400 depending on variant
Frame8 data bits, no parity · 1 stop bit on most units, 2 stop bits on some batches — check the set-up menu if you get CRC errors
Read measurementsFC04 (input registers), values as FLOAT32 register pairs
Read / write settingsFC03 read, FC16 write (holding registers)
Request limitsStart address and quantity must be even; max 40 values (80 registers) per request

SDM120 measurement registers

Every value is an IEEE 754 FLOAT32 held in two consecutive input registers, read with FC04. Addresses below are the documentation form (3xxxx) with the on-wire hex offset — ModbusManager accepts either with the Base 0/1 selector.

RegisterHex offsetParameterUnit
300010x0000VoltageV
300070x0006CurrentA
300130x000CActive powerW
300190x0012Apparent powerVA
300250x0018Reactive powerVAr
300310x001EPower factor
300710x0046FrequencyHz
300730x0048Import active energykWh
300750x004AExport active energykWh
300770x004CImport reactive energykvarh
300790x004EExport reactive energykvarh
303430x0156Total active energykWh
303450x0158Total reactive energykvarh

Set-up lives in holding registers (FC03/FC16, also FLOAT32 pairs): 40021 / 0x0014 meter address, 40029 / 0x001C baud rate, plus relay-pulse and display options depending on variant. Write one parameter per message; some changes need a power cycle.

Read an SDM120 in three steps

1

Connect RS-485

Wire A/B from your USB-RS485 adapter to terminals 9 (B-) and 10 (A+), open ModbusManager › Connect › RTU, pick the COM port and set 2400 baud, 8N1, slave ID 1 (or your meter’s settings).

2

Poll FC04

Create a poll window: function code 04, start address 30001 (Base 1) or 0 (Base 0), quantity 80. The grid fills with raw registers — select the Float32 display column and real voltages and watts appear.

3

Or load the workspace

Skip the setup: open the free SDM120 workspace above. Polls, FLOAT32 tags and a live dashboard with gauges and a power trend are pre-configured — just match the slave ID and serial settings.

// why modbusmanager

A practical tool for energy meters

ModbusManager reads any SDM120 register directly, with built-in FLOAT32 decoding so you do not combine register pairs by hand, and a serial monitor to see every frame. The Standard edition ($49) covers polling, scaling and the serial monitor. The Pro edition ($119) adds drag-and-drop Modbus HMI software, a data logging Historian with CSV export for energy and load profiling, and an alarm system — all running locally on Windows, with no SCADA server or cloud account.

SDM120 Modbus — FAQ

I get garbage values like 1.4e-42 instead of 230 V — why?+
Your word order is inverted. The SDM120 sends FLOAT32 values high-word-first (big-endian, ABCD). If your master combines the two registers low-word-first you get nonsense. In ModbusManager select the Float32 column with big-endian byte order (the default) — or use the swap button if your gateway reorders words.
Do the SDM120CT, SDM220 and SDM230 use the same registers?+
Essentially yes. The core measurement block — voltage 30001, current 30007, power 30013, frequency 30071, energies 30073+ — is the same FLOAT32 layout across the SDM120 family, the CT-operated SDM120CT, and the SDM220/SDM230. Some variants add extra registers (demand values, CT ratio on CT models); verify extras against your variant’s protocol PDF.
Why does reading a single register return an error?+
Every value is a two-register FLOAT32, and the meter requires the start address and the quantity to be even. Reading one register — or starting mid-pair — returns an exception on most firmware. Always poll pairs: start 0x0000, quantity 2, 4, … up to 80.
How do I change the slave address or baud rate over Modbus?+
Write the holding registers with FC16 as FLOAT32: address 0x0014 sets the meter ID (e.g. float 2.0 for ID 2), address 0x001C sets the baud-rate code. One parameter per write. You can also do both from the front button’s set-up menu — hold it ~3 seconds until -SET- appears.
The meter doesn’t answer at all — what should I check?+
In order: A/B swapped (the most common one — just swap the wires), wrong baud (factory is 2400, not 9600), wrong stop bits (some batches ship 8N2), wrong slave ID, or a missing ground/termination on longer buses. ModbusManager’s Serial Monitor shows raw TX/RX so you can see whether anything comes back at all.
Is there a Modbus TCP version?+
The SDM120 itself is RS-485 only, but any Modbus TCP→RTU gateway exposes it over TCP with the same register map. ModbusManager’s “RTU over TCP” and plain TCP modes both work for gateway setups.