Schneider Electric EM1200 / EM1220 Modbus register map
Conzerv power and energy meters with RS485 Modbus RTU: per-phase power, power factor and energy (EM1200, EM1220), current, voltage and frequency (EM1220), setup, diagnostics and identity
- Official
- 70 registers
- Modbus RTU
- Revision 3 · 2026-10-31
- Identity: model, firmware
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
- 19200 8E1 · 19200 baud, 8 data bits, even parity, 1 stop bit
- Byte / word order
- CDAB · bytes big-endian, words low first (word swap)
- Addresses
- 1-based · wire address = address − 1
Connection values are defaults: the device may be configured differently.
Map
- Registers
- 70 holding registers
- Groups
- 10
- Translation tables
- 1
- Revision
- 3 · 2026-10-31
- Added
- ()
- File
- maps/schneider-electric/em1000-em1100-em1200.mbmap.json · 16 KB · history
- SHA-256
- 279e72b1e2128df334ea025c78f80bd61f19807d71cd9a677355e5ff74356616
- Manufacturer
- se.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 |
|---|---|---|---|---|
| Firmware | Firmware version | holding 21 | string[5] | |
| Model | Model | holding 27 | uint16 | 403 = EM1000, 404 = EM1200, 405 = EM1220 |
Sources and notes
- Conzerv EM1000/EM1200/EM1220 Power and Energy Meters - User Manual · version EAV95462-01, 2014-06 chapter 6, tables 6-1 and 6-3 to 6-11
Source: Schneider Electric Conzerv EM1000/EM1200/EM1220 power and energy meter user manual EAV95462-01, chapter 6
- Only the EM1200 and EM1220 have the RS485 port; the EM1000 has a pulse output and no Modbus. The file keeps its old name.
- Function 03 to read, 16 to write. Defaults: unit ID 1, 19200 bit/s, even parity, 1 stop bit.
- Addresses are the manual's absolute addresses (3049 is 43049), so this map is 1-based. Every reading is 32 bits in two registers; floats have the word order that Modscan calls swapped (low word first).
- No scaling: the meter sends the full value. The manual does not give the units of power and energy.
- Power, power factor and energy readings return 0 unless the parameter is selected in the setup (Wh/VAh selection). Current, voltage and frequency are only on the EM1220.
- The factory TURBO block (2501-2599) holds the same readings at other addresses and can be reconfigured; it is not listed.
- The setup block (1001-1040) can only be read and written as a whole block, so its registers are read-only in this map.
- Written from the manufacturer's manual; not tested on a device.
| Area | Address | Name | Type | Access | Unit | Scale | Description |
|---|---|---|---|---|---|---|---|
| HR | 3057 | float32 CDAB | R | A | EM1220 only | ||
| HR | 3009 | float32 CDAB | R | A | EM1220 only | ||
| HR | 3025 | float32 CDAB | R | A | EM1220 only | ||
| HR | 3041 | float32 CDAB | R | A | EM1220 only | ||
| HR | 3059 | float32 CDAB | R | V | EM1220 only | ||
| HR | 3011 | float32 CDAB | R | V | EM1220 only | ||
| HR | 3027 | float32 CDAB | R | V | EM1220 only | ||
| HR | 3043 | float32 CDAB | R | V | EM1220 only | ||
| HR | 3061 | float32 CDAB | R | V | EM1220 only | ||
| HR | 3013 | float32 CDAB | R | V | EM1220 only | ||
| HR | 3029 | float32 CDAB | R | V | EM1220 only | ||
| HR | 3045 | float32 CDAB | R | V | EM1220 only | ||
| HR | 3063 | float32 CDAB | R | Hz | EM1220 only | ||
| HR | 3051 | float32 CDAB | R | Returns 0 unless the parameter is selected in the meter setup | |||
| HR | 3003 | float32 CDAB | R | Returns 0 unless the parameter is selected in the meter setup | |||
| HR | 3019 | float32 CDAB | R | Returns 0 unless the parameter is selected in the meter setup | |||
| HR | 3035 | float32 CDAB | R | Returns 0 unless the parameter is selected in the meter setup | |||
| HR | 3053 | float32 CDAB | R | Returns 0 unless the parameter is selected in the meter setup | |||
| HR | 3005 | float32 CDAB | R | Returns 0 unless the parameter is selected in the meter setup | |||
| HR | 3021 | float32 CDAB | R | Returns 0 unless the parameter is selected in the meter setup | |||
| HR | 3037 | float32 CDAB | R | Returns 0 unless the parameter is selected in the meter setup | |||
| HR | 3049 | float32 CDAB | R | Returns 0 unless the parameter is selected in the meter setup | |||
| HR | 3001 | float32 CDAB | R | Returns 0 unless the parameter is selected in the meter setup | |||
| HR | 3017 | float32 CDAB | R | Returns 0 unless the parameter is selected in the meter setup | |||
| HR | 3033 | float32 CDAB | R | Returns 0 unless the parameter is selected in the meter setup | |||
| HR | 3055 | float32 CDAB | R | Returns 0 unless the parameter is selected in the meter setup | |||
| HR | 3007 | float32 CDAB | R | Returns 0 unless the parameter is selected in the meter setup | |||
| HR | 3023 | float32 CDAB | R | Returns 0 unless the parameter is selected in the meter setup | |||
| HR | 3039 | float32 CDAB | R | Returns 0 unless the parameter is selected in the meter setup | |||
| HR | 3201 | float32 CDAB | R | Returns 0 unless the parameter is selected in the meter setup | |||
| HR | 3203 | float32 CDAB | R | Returns 0 unless the parameter is selected in the meter setup | |||
| HR | 3205 | float32 CDAB | R | Returns 0 unless the parameter is selected in the meter setup | |||
| HR | 3265 | uint32 CDAB | R | s | |||
| HR | 3267 | uint32 CDAB | R | s | |||
| HR | 3269 | uint32 CDAB | R | Number of input voltage interruptions | |||
| HR | 7001 | float32 CDAB | R | Energy stored at the last integrator reset or overflow | |||
| HR | 7003 | float32 CDAB | R | Energy stored at the last integrator reset or overflow | |||
| HR | 7005 | float32 CDAB | R | Energy stored at the last integrator reset or overflow | |||
| HR | 7065 | uint32 CDAB | R | s | |||
| HR | 7067 | uint32 CDAB | R | s | |||
| HR | 7069 | uint32 CDAB | R | ||||
| HR | 1001 | float32 CDAB | R | A | Setup block: read and write the 40 registers from 1001 as one block | ||
| HR | 1003 | float32 CDAB | R | A | Setup block: read and write the 40 registers from 1001 as one block | ||
| HR | 1005 | float32 CDAB | R | V | Setup block: read and write the 40 registers from 1001 as one block | ||
| HR | 1007 | float32 CDAB | R | V | Setup block: read and write the 40 registers from 1001 as one block | ||
| HR | 1009 | uint16 | R | Setup block: read and write the 40 registers from 1001 as one block | |||
| HR | 1010 | uint16 | R | Setup block: read and write the 40 registers from 1001 as one block; 0-200 mA | |||
| HR | 1011 | uint16 | R | Setup block: read and write the 40 registers from 1001 as one block | |||
| HR | 1012 | uint16 | R | Setup block: read and write the 40 registers from 1001 as one block | |||
| HR | 1013 | uint16 | R | Setup block: read and write the 40 registers from 1001 as one block | |||
| HR | 1017 | uint16 | R | Setup block: read and write the 40 registers from 1001 as one block | |||
| HR | 1018 | uint16 | R | Setup block: read and write the 40 registers from 1001 as one block | |||
| HR | 1019 | uint16 | R | Setup block: read and write the 40 registers from 1001 as one block; 1-247 | |||
| HR | 2001 | uint32 CDAB | W | Write 1 (function 16, both registers) to clear the energy integrator | |||
| HR | 2003 | uint32 CDAB | W | Write 1 (function 16, both registers) to restore the default setup | |||
| HR | 2005 | uint32 CDAB | RW | Read and write both registers together | |||
| HR | 2701 | uint32 CDAB | R | ||||
| HR | 2703 | uint32 CDAB | R | ||||
| HR | 2705 | uint32 CDAB | R | ||||
| HR | 2707 | uint32 CDAB | R | ||||
| HR | 2709 | uint32 CDAB | R | ||||
| HR | 2723 | uint32 CDAB | R | ||||
| HR | 2725 | uint32 CDAB | R | ||||
| HR | 2727 | uint32 CDAB | R | ||||
| HR | 1 | string[10] | R | ||||
| HR | 11 | string[10] | R | EM1200 or EM1220 | |||
| HR | 21 | string[5] | R | e.g. V01.02.02 | |||
| HR | 26 | uint16 | R | e.g. 10202 for V01.02.02 | |||
| HR | 27 | uint16 | R | ||||
| HR | 28 | string[3] | 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).