← All Posts

Schneider iEM3000 Series Modbus Register Map and Simulator

Schneider Electric's Acti9 iEM3000 energy meters (iEM3100, iEM3200, iEM3300 ranges) are the default choice for DIN-rail submetering in commercial buildings: MID-compliant billing meters, four-quadrant energy measurement, multi-tariff support, and Modbus RTU on the communication variants. If you are integrating one into an energy dashboard or BMS, you need the register list.

The addresses below come from Schneider's official iEM3000 series user manual (DOCA0005EN), and the second half shows how to simulate the entire map on macOS so your integration is tested before the panel goes live.

Overview: Acti9 iEM3000 Series

The series splits into three ranges: iEM3100 (direct measurement up to 63 A), iEM3300 (direct up to 125 A), and iEM3200 (1 A / 5 A CT-connected meters, class 0.5S). Modbus RTU is available on the iEM3150, iEM3155, iEM3250, iEM3255, iEM3350, and iEM3355 models. All of them share the register list documented in the manual's "Modbus register list" chapter.

Depending on the model you get current, voltage, power, power factor, frequency, total and per-phase energy, four-quadrant energy values, multi-tariff counters, and input metering. Schneider's register address FAQ links the same register list as a PDF if you prefer that format.

Communication Setup

The meters are Modbus RTU slave devices on RS485:

  • Baud rate: 9600, 19200, or 38400 (configured on the meter or via register 6502).
  • Parity: Even, Odd, or None (register 6503); always 1 stop bit.
  • Slave address: 1 to 247 (register 6501).
  • Reads: all parameters and measurement values are read with function code 0x03 (Read Holding Registers); writes use function code 0x10 (Write Multiple Registers), including command blocks sent to register 5250.

The register list in the manual uses plain decimal register addresses (3000, 3020, 3204...), not the 3xxxx or 4xxxx reference numbering some tools display. If your client software insists on a 40001-style base, remember that register 3000 is holding register 3000 in the protocol, not 43001. Our Modbus addressing guide untangles the conventions if this is new.

iEM3000 Register Map: Measurements and Energy

All instantaneous measurements are Float32 values spanning two registers. Energy is available in two encodings: signed 64-bit integers spanning four registers (3204 onward), and Float32 values spanning two registers in a separate high block (45100 onward). Both are preserved through power failures per the manual.

Register Address
Size (registers)
Type
Unit
Description
3000
2
Float32
A
I1: phase 1 current
3002
2
Float32
A
I2: phase 2 current
3004
2
Float32
A
I3: phase 3 current
3010
2
Float32
A
Current Avg
3020
2
Float32
V
Voltage L1-L2
3022
2
Float32
V
Voltage L2-L3
3024
2
Float32
V
Voltage L3-L1
3028
2
Float32
V
Voltage L1-N
3030
2
Float32
V
Voltage L2-N
3032
2
Float32
V
Voltage L3-N
3036
2
Float32
V
Voltage L-N Avg
3054
2
Float32
kW
Active Power Phase 1
3056
2
Float32
kW
Active Power Phase 2
3058
2
Float32
kW
Active Power Phase 3
3060
2
Float32
kW
Total Active Power
3068
2
Float32
kVAR
Total Reactive Power
3076
2
Float32
kVA
Total Apparent Power
3084
2
Float32
Total Power Factor (quadrant-coded)
3110
2
Float32
Hz
Frequency
3204
4
Int64
Wh
Total Active Energy Import
3208
4
Int64
Wh
Total Active Energy Export
3220
4
Int64
VARh
Total Reactive Energy Import
3224
4
Int64
VARh
Total Reactive Energy Export
45100
2
Float32
Wh
Total Active Energy Import (float)
45102
2
Float32
Wh
Total Active Energy Export (float)
45104
2
Float32
VARh
Total Reactive Energy Import (float)

Two blocks the table compresses are worth knowing about. The Float32 energy block continues to 45126 with partial energy, per-phase energy (45112 to 45116), and tariff counters A to D on the iEM3155/iEM3255/iEM3355. The Int64 energy block mirrors the same structure from 3204 to 4208, including phase energy at 3518 to 3526.

A practical note on the total power factor at 3084: it is quadrant-coded, where values between -2 and -1 mean quadrant 2 (active power negative, capacitive), -1 to 0 quadrant 3 (negative, inductive), 0 to 1 quadrant 1 (positive, inductive), and 1 to 2 quadrant 4 (positive, capacitive). Decode it against the manual's chapter 11 table rather than displaying the raw float.

Data Types: Float32 and 64-Bit Integers

Instantaneous values are straightforward: each Float32 occupies registers N and N+1. Combine the two 16-bit words high-first to get the IEEE 754 value; 230.5 V reads as 0x4366 8000 across the pair. If decoded values come out as tiny fractions or enormous numbers, the word order is the first thing to check; see our floating point byte order guide.

The 64-bit energy values deserve one decision early in your project: they span four registers each, and the Float32 duplicates in the 45100 block only carry about 7 significant digits. For billing-grade accumulation over years, prefer the Int64 registers at 3204+ (0 to about 1.8e19 Wh); the float block is convenient for dashboards that poll loosely and care little about the last digit of a gigawatt-hour counter. Our 32-bit integer data types guide explains why float energy counters eventually lose resolution.

Tip: Read energy as whole 4-register groups aligned to the manual's addresses (3204, 3208, 3220, 3224). Mixing 2-register float reads and 4-register integer reads in one request range is how you end up decoding half a counter.

Testing Without Hardware: Simulating the iEM3000

iEM3000 projects are usually metering rollouts: dozens of DIN-rail meters on a shared RS485 loop feeding a BMS or energy dashboard. Commissioning that against real panels is slow; testing the integration against a simulated slave with the exact register list is fast.

  • Manual register entry: a generic Modbus slave can answer on the addresses above, but you would hand-enter around 30 registers and encode every energy value as four register halves yourself.
  • Custom device template: MacTools Modbus Poll runs a Modbus RTU/TCP slave on macOS where you build a template from the register list and it fills everything with auto-drifting values. Voltage tracks around 230 V, current varies with load, and the energy counters accumulate so your tariff logic and daily-total calculations see believable data. The app has no INT64 type, so model the 64-bit energy counters with the Float32 versions in the 45100 block.

Because the series addresses registers as plain protocol addresses, the template you build doubles as an executable spec of DOCA0005EN's register list chapter.

Quick Start: Reading an iEM3000 Meter

  1. Configure the meter. Set the slave address, baud rate, and parity on the front panel (or registers 6501-6503). Note the meter's wiring mode, since 3PH3W systems leave some phase registers at zero.
  2. Build your slave template. In MacTools Modbus Poll, enter the register map above: Float32 for 3000-3110, Int64 (4 registers) for 3204-3224, Float32 for the 45100 energy block, and start the slave.
  3. Poll measurements. Read holding registers 3000 for 112 registers to capture currents, voltages, powers, power factor, and frequency in one request.
  4. Poll energy separately. Read 3204 for 24 registers to get the four total energy counters as 64-bit integers, or 45100 for 8 registers for the float versions.
  5. Decode. Floats high-word first; 64-bit energy values as signed integers; power factor 3084 via the quadrant table.

Swap localhost for the RS485 loop's gateway IP and the same code runs against the physical meters during commissioning.

Frequently Asked Questions

Which iEM3000 models support Modbus?

The iEM3150, iEM3155, iEM3250, iEM3255, iEM3350, and iEM3355 support Modbus RTU over RS485. Other models in the series communicate via M-Bus, LonWorks, or BACnet instead, so check the model suffix before planning the network.

What are the Modbus registers for voltage on an iEM3000 meter?

Line-to-line voltages are at registers 3020 (L1-L2), 3022 (L2-L3), and 3024 (L3-L1); line-to-neutral at 3028, 3030, and 3032; averages at 3026 and 3036. Each value is a Float32 spanning two registers.

Where is total active energy stored on an iEM3000?

Total active energy import is at register 3204 and export at 3208, both as signed 64-bit integers spanning four registers in Wh. A Float32 version of the same counters is available at registers 45100 and 45102, spanning two registers each.

What serial settings does the iEM3000 use?

Baud rate is selectable between 9600, 19200, and 38400; parity is Even, Odd, or None; the frame is always 1 stop bit. The slave address range is 1 to 247. Settings are configurable on the meter and via communication registers 6501 to 6503.

How is power factor encoded on an iEM3000?

The total power factor register 3084 is a Float32 with quadrant coding: -2 to -1 is quadrant 2 (negative active power, capacitive), -1 to 0 quadrant 3 (negative, inductive), 0 to 1 quadrant 1 (positive, inductive), and 1 to 2 quadrant 4 (positive, capacitive).

Simulate the iEM3000 on macOS

MacTools Modbus Poll runs a Modbus slave with custom device templates, so you can rehearse the full iEM3000 register map without hardware. Native macOS app. $19 one-time.

Get MacTools Modbus Poll

Related: Full SCADA System

Need continuous monitoring with dashboards, alarms, and trending across all your devices? Voltrus SCADA supports Modbus, OPC-UA, Siemens S7, Allen-Bradley, DNP3, BACnet, MQTT, and more. Free open source core (AGPL-3.0).

Further Reading