Carlo Gavazzi · Energy meter
EM24 Ethernet (EM24_E1) Modbus register map
Default configuration
- Protocol
- Modbus TCP
- Port
- 502
- Unit ID
- 1
- Addressing
- 0-based
- Byte order
- Big endian
- Word order
- Low word first
Register map
| Address | Count | Name | Type | Unit | Scale | Access |
|---|---|---|---|---|---|---|
| 0 | 2 | Voltage L1-N Raw value = voltage x 10. | Int32 | V | 0.1 | R |
| 2 | 2 | Voltage L2-N | Int32 | V | 0.1 | R |
| 4 | 2 | Voltage L3-N | Int32 | V | 0.1 | R |
| 6 | 2 | Voltage L1-L2 | Int32 | V | 0.1 | R |
| 8 | 2 | Voltage L2-L3 | Int32 | V | 0.1 | R |
| 10 | 2 | Voltage L3-L1 | Int32 | V | 0.1 | R |
| 12 | 2 | Current L1 Raw value = current x 1000. | Int32 | A | 0.001 | R |
| 14 | 2 | Current L2 | Int32 | A | 0.001 | R |
| 16 | 2 | Current L3 | Int32 | A | 0.001 | R |
| 18 | 2 | Active power L1 Raw value = power x 10; negative when the phase exports. | Int32 | W | 0.1 | R |
| 20 | 2 | Active power L2 | Int32 | W | 0.1 | R |
| 22 | 2 | Active power L3 | Int32 | W | 0.1 | R |
| 24 | 2 | Apparent power L1 | Int32 | VA | 0.1 | R |
| 26 | 2 | Apparent power L2 | Int32 | VA | 0.1 | R |
| 28 | 2 | Apparent power L3 | Int32 | VA | 0.1 | R |
| 30 | 2 | Reactive power L1 | Int32 | var | 0.1 | R |
| 32 | 2 | Reactive power L2 | Int32 | var | 0.1 | R |
| 34 | 2 | Reactive power L3 | Int32 | var | 0.1 | R |
| 36 | 2 | Voltage L-N, average | Int32 | V | 0.1 | R |
| 38 | 2 | Voltage L-L, average | Int32 | V | 0.1 | R |
| 40 | 2 | Active power, total | Int32 | W | 0.1 | R |
| 42 | 2 | Apparent power, total | Int32 | VA | 0.1 | R |
| 44 | 2 | Reactive power, total | Int32 | var | 0.1 | R |
| 46 | 1 | Power factor L1 Negative = leading (capacitive), positive = lagging (inductive). | Int16 | - | 0.001 | R |
| 47 | 1 | Power factor L2 | Int16 | - | 0.001 | R |
| 48 | 1 | Power factor L3 | Int16 | - | 0.001 | R |
| 49 | 1 | Power factor, total | Int16 | - | 0.001 | R |
| 50 | 1 | Phase sequence -1 = L1-L3-L2, 0 = L1-L2-L3. Only meaningful in three-phase systems. | Int16 | - | 1 | R |
| 51 | 1 | Frequency | UInt16 | Hz | 0.1 | R |
| 52 | 2 | Active energy imported, total kWh(+) TOT; raw value = kWh x 10. | Int32 | kWh | 0.1 | R |
| 54 | 2 | Reactive energy imported, total | Int32 | kvarh | 0.1 | R |
| 56 | 2 | Active power demand | Int32 | W | 0.1 | R |
| 58 | 2 | Active power demand, maximum | Int32 | W | 0.1 | R |
| 60 | 2 | Active energy imported, partial Resettable partial counter. | Int32 | kWh | 0.1 | R |
| 62 | 2 | Reactive energy imported, partial | Int32 | kvarh | 0.1 | R |
| 64 | 2 | Active energy imported L1 | Int32 | kWh | 0.1 | R |
| 66 | 2 | Active energy imported L2 | Int32 | kWh | 0.1 | R |
| 68 | 2 | Active energy imported L3 | Int32 | kWh | 0.1 | R |
| 70 | 2 | Active energy imported, tariff 1 | Int32 | kWh | 0.1 | R |
| 72 | 2 | Active energy imported, tariff 2 | Int32 | kWh | 0.1 | R |
| 74 | 2 | Active energy imported, tariff 3 | Int32 | kWh | 0.1 | R |
| 76 | 2 | Active energy imported, tariff 4 | Int32 | kWh | 0.1 | R |
| 78 | 2 | Active energy exported, total kWh(-) TOT. | Int32 | kWh | 0.1 | R |
| 80 | 2 | Reactive energy exported, total | Int32 | kvarh | 0.1 | R |
| 90 | 2 | Hour counter Operating hours; raw value = hours x 100. | Int32 | h | 0.01 | R |
| 118 | 2 | Apparent power demand | Int32 | VA | 0.1 | R |
| 120 | 2 | Apparent power demand, maximum | Int32 | VA | 0.1 | R |
| 122 | 2 | Current demand, maximum | Int32 | A | 0.001 | R |
| 770 | 1 | Measurement module firmware version Format: high byte holds the version, upper nibble = major and lower nibble = minor; low byte = revision (e.g. 0x101E is version 1.0.30). | UInt16 | - | 1 | R |
| 772 | 1 | Communication module firmware version | UInt16 | - | 1 | R |
| 41216 | 1 | Front selector status 3 = locked (LOCK position), 2 = unlocked (position 1), 1 = unlocked (position 2), 0 = unlocked (kVARh position). | UInt16 | - | 1 | R |
Combined registers
- Active power L1 + L2 (calculated)Input registers 18 + Input registers 20 (W)
- Active power, all phases (calculated)Active power L1 + L2 (calculated) + Input registers 22 (W)Sum of the three phases, next to the device's own total at 40.
- Active energy, imported minus exported (calculated)Input registers 52 - Input registers 78 (kWh)Net metering value for a grid connection with export.
Notes
Addresses are the physical (wire) addresses of the EM24_E1 Ethernet communication protocol document; the document also lists them as Modicon 300001-300123, and both function code 03 and function code 04 read the same values. Word order for the 32-bit integers is LSW first (word order LowFirst here), byte order inside a word is MSB first. The protocol gives fixed value weights instead of a floating point format (Volt x 10, Ampere x 1000, Watt x 10, kWh x 10), so the raw registers are signed 32-bit integers and the scale factors below apply those weights. The same values are repeated in a second, per-phase block at 0x00FE to 0x017E (254-382). Address 0x000B returns the Carlo Gavazzi identification code when read as a single register, but it overlaps the last word of the voltage at 0x000A, so it is not listed as a separate row. The EM24 with RS-485 (and the older EM24 firmware below 1.8.3) uses a different register layout, so do not mix the two maps. Settings in the 0x1000 range are written with function code 06 and are ignored while the front selector is in the LOCK position.