Eastron SDM630-Modbus Modbus register map
Three-phase multifunction DIN rail energy meter, direct connection (SDM630-Modbus and SDM630-Modbus V2). Values a wiring system does not use read 0
- Official
- 97 registers
- Modbus RTU
- Revision 3 · 2026-11-10
- 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
- 9600 8N1 · 9600 baud, 8 data bits, none parity, 1 stop bit
- Byte / word order
- ABCD · bytes big-endian, words high first
- Addresses
- 0-based
- Max read
- 80 registers per request
Connection values are defaults: the device may be configured differently.
Map
- Registers
- 12 holding registers, 85 input registers
- Groups
- 12
- Revision
- 3 · 2026-11-10
- Added
- ()
- File
- maps/eastron/sdm630-modbus.mbmap.json · 19 KB · history
- SHA-256
- 71b8491656e1c7fbae33d55c06acae0337e03e36f789cc05195ee829f287def1
- 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
Source: Eastron Europe, "Eastron SDM630Modbus Smart Meter Modbus Protocol Implementation V1.8"; https://www.eastroneurope.com/images/uploads/products/protocol/SDM630_MODBUS_Protocol.pdf
- 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.
| Area | Address | Name | Type | Access | Unit | Scale | Description |
|---|---|---|---|---|---|---|---|
| IR | 0 | float32 ABCD | R | V | Valid on 3P4W, 1P2W; reads 0 otherwise | ||
| IR | 2 | float32 ABCD | R | V | Valid on 3P4W; reads 0 otherwise | ||
| IR | 4 | float32 ABCD | R | V | Valid on 3P4W; reads 0 otherwise | ||
| IR | 6 | float32 ABCD | R | A | |||
| IR | 8 | float32 ABCD | R | A | Valid on 3P4W, 3P3W; reads 0 otherwise | ||
| IR | 10 | float32 ABCD | R | A | Valid on 3P4W, 3P3W; reads 0 otherwise | ||
| IR | 12 | float32 ABCD | R | W | Valid on 3P4W, 1P2W; reads 0 otherwise | ||
| IR | 14 | float32 ABCD | R | W | Valid on 3P4W, 1P2W; reads 0 otherwise | ||
| IR | 16 | float32 ABCD | R | W | Valid on 3P4W; reads 0 otherwise | ||
| IR | 18 | float32 ABCD | R | VA | Valid on 3P4W, 1P2W; reads 0 otherwise | ||
| IR | 20 | float32 ABCD | R | VA | Valid on 3P4W; reads 0 otherwise | ||
| IR | 22 | float32 ABCD | R | VA | Valid on 3P4W; reads 0 otherwise | ||
| IR | 24 | float32 ABCD | R | var | Valid on 3P4W, 1P2W; reads 0 otherwise | ||
| IR | 26 | float32 ABCD | R | var | Valid on 3P4W; reads 0 otherwise | ||
| IR | 28 | float32 ABCD | R | var | Valid on 3P4W; reads 0 otherwise | ||
| IR | 30 | float32 ABCD | R | Sign follows the direction of the current: positive = forward, negative = reverse; Valid on 3P4W, 1P2W; reads 0 otherwise | |||
| IR | 32 | float32 ABCD | R | Sign follows the direction of the current: positive = forward, negative = reverse; Valid on 3P4W; reads 0 otherwise | |||
| IR | 34 | float32 ABCD | R | Sign follows the direction of the current: positive = forward, negative = reverse; Valid on 3P4W; reads 0 otherwise | |||
| IR | 36 | float32 ABCD | R | ° | Valid on 3P4W, 1P2W; reads 0 otherwise | ||
| IR | 38 | float32 ABCD | R | ° | Valid on 3P4W; reads 0 otherwise | ||
| IR | 40 | float32 ABCD | R | ° | Valid on 3P4W; reads 0 otherwise | ||
| IR | 42 | float32 ABCD | R | V | Valid on 3P4W; reads 0 otherwise | ||
| IR | 46 | float32 ABCD | R | A | |||
| IR | 48 | float32 ABCD | R | A | |||
| IR | 52 | float32 ABCD | R | W | |||
| IR | 56 | float32 ABCD | R | VA | |||
| IR | 60 | float32 ABCD | R | var | |||
| IR | 62 | float32 ABCD | R | Sign follows the direction of the current: positive = forward, negative = reverse | |||
| IR | 66 | 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 | 80 | float32 ABCD | R | kVAh | |||
| IR | 82 | float32 ABCD | R | Ah | |||
| IR | 84 | float32 ABCD | R | W | Import minus export | ||
| IR | 86 | float32 ABCD | R | W | Import minus export. The protocol table gives the unit as VA | ||
| IR | 100 | float32 ABCD | R | VA | |||
| IR | 102 | float32 ABCD | R | VA | |||
| IR | 104 | float32 ABCD | R | A | Valid on 3P4W; reads 0 otherwise | ||
| IR | 106 | float32 ABCD | R | A | Valid on 3P4W; reads 0 otherwise | ||
| IR | 200 | float32 ABCD | R | V | Valid on 3P4W, 3P3W; reads 0 otherwise | ||
| IR | 202 | float32 ABCD | R | V | Valid on 3P4W, 3P3W; reads 0 otherwise | ||
| IR | 204 | float32 ABCD | R | V | Valid on 3P4W, 3P3W; reads 0 otherwise | ||
| IR | 206 | float32 ABCD | R | V | Valid on 3P4W, 3P3W; reads 0 otherwise | ||
| IR | 224 | float32 ABCD | R | A | Valid on 3P4W; reads 0 otherwise | ||
| IR | 234 | float32 ABCD | R | % | Valid on 3P4W, 1P2W; reads 0 otherwise | ||
| IR | 236 | float32 ABCD | R | % | Valid on 3P4W; reads 0 otherwise | ||
| IR | 238 | float32 ABCD | R | % | Valid on 3P4W; reads 0 otherwise | ||
| IR | 240 | float32 ABCD | R | % | |||
| IR | 242 | float32 ABCD | R | % | Valid on 3P4W, 3P3W; reads 0 otherwise | ||
| IR | 244 | float32 ABCD | R | % | Valid on 3P4W, 3P3W; reads 0 otherwise | ||
| IR | 248 | float32 ABCD | R | % | Valid on 3P4W, 1P2W; reads 0 otherwise | ||
| IR | 250 | float32 ABCD | R | % | |||
| IR | 258 | float32 ABCD | R | A | |||
| IR | 260 | float32 ABCD | R | A | Valid on 3P4W, 3P3W; reads 0 otherwise | ||
| IR | 262 | float32 ABCD | R | A | Valid on 3P4W, 3P3W; reads 0 otherwise | ||
| IR | 264 | float32 ABCD | R | A | |||
| IR | 266 | float32 ABCD | R | A | Valid on 3P4W, 3P3W; reads 0 otherwise | ||
| IR | 268 | float32 ABCD | R | A | Valid on 3P4W, 3P3W; reads 0 otherwise | ||
| IR | 334 | float32 ABCD | R | % | Valid on 3P4W, 3P3W; reads 0 otherwise | ||
| IR | 336 | float32 ABCD | R | % | Valid on 3P4W, 3P3W; reads 0 otherwise | ||
| IR | 338 | float32 ABCD | R | % | Valid on 3P4W, 3P3W; reads 0 otherwise | ||
| IR | 340 | float32 ABCD | R | % | Valid on 3P4W, 3P3W; reads 0 otherwise | ||
| IR | 342 | float32 ABCD | R | kWh | Import plus export | ||
| IR | 344 | float32 ABCD | R | kvarh | Import plus export | ||
| IR | 346 | float32 ABCD | R | kWh | |||
| IR | 348 | float32 ABCD | R | kWh | |||
| IR | 350 | float32 ABCD | R | kWh | |||
| IR | 352 | float32 ABCD | R | kWh | |||
| IR | 354 | float32 ABCD | R | kWh | |||
| IR | 356 | float32 ABCD | R | kWh | |||
| IR | 358 | float32 ABCD | R | kWh | Import plus export | ||
| IR | 360 | float32 ABCD | R | kWh | Import plus export | ||
| IR | 362 | float32 ABCD | R | kWh | Import plus export | ||
| IR | 364 | float32 ABCD | R | kvarh | |||
| IR | 366 | float32 ABCD | R | kvarh | |||
| IR | 368 | float32 ABCD | R | kvarh | |||
| IR | 370 | float32 ABCD | R | kvarh | |||
| IR | 372 | float32 ABCD | R | kvarh | |||
| IR | 374 | float32 ABCD | R | kvarh | |||
| IR | 376 | float32 ABCD | R | kvarh | Import plus export | ||
| IR | 378 | float32 ABCD | R | kvarh | Import plus export | ||
| IR | 380 | float32 ABCD | R | kvarh | Import plus export | ||
| HR | 2 | float32 ABCD | RW | min | 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 | ||
| HR | 10 | float32 ABCD | RW | 3 = 3P4W, 2 = 3P3W, 1 = 1P2W. Needs the password | |||
| HR | 12 | float32 ABCD | RW | ms | 60, 100 or 200 ms, default 100 | ||
| HR | 14 | float32 ABCD | RW | Reads 0 = locked, 1 = unlocked; writing any value locks. Reading also restarts the one-minute password timeout | |||
| HR | 18 | float32 ABCD | RW | 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 | |||
| HR | 20 | float32 ABCD | RW | Modbus address 1 to 247, default 1. Takes effect after a restart | |||
| HR | 22 | float32 ABCD | RW | 0 = 0.0025, 1 = 0.01, 2 = 0.1, 3 = 1, 4 = 10, 5 = 100 kWh (kvarh) per pulse | |||
| HR | 24 | float32 ABCD | RW | Write the password (default 0000) to unlock protected registers for one minute | |||
| HR | 28 | float32 ABCD | RW | 0 = 2400, 1 = 4800, 2 = 9600 (default), 3 = 19200, 4 = 38400. Takes effect after a restart | |||
| HR | 86 | float32 ABCD | RW | 1 = import active, 2 = total active, 4 = export active (default), 5 = import reactive, 6 = total reactive, 8 = export reactive | |||
| HR | 61456 | uint32 ABCD | W | The protocol writes 00 00 here; every Eastron write must cover an even number of registers, so this sends two zero registers with FC16 | |||
| HR | 64512 | uint32 ABCD | R |
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).