All devices

Carlo Gavazzi · Energy meter

EM24 Ethernet (EM24_E1) Modbus register map

Download JSONSupplier documentationSuggest an edit

Default configuration

Protocol
Modbus TCP
Port
502
Unit ID
1
Addressing
0-based
Byte order
Big endian
Word order
Low word first

Register map

AddressCountNameTypeUnitScaleAccess
02
Voltage L1-N
Raw value = voltage x 10.
Int32V0.1R
22
Voltage L2-N
Int32V0.1R
42
Voltage L3-N
Int32V0.1R
62
Voltage L1-L2
Int32V0.1R
82
Voltage L2-L3
Int32V0.1R
102
Voltage L3-L1
Int32V0.1R
122
Current L1
Raw value = current x 1000.
Int32A0.001R
142
Current L2
Int32A0.001R
162
Current L3
Int32A0.001R
182
Active power L1
Raw value = power x 10; negative when the phase exports.
Int32W0.1R
202
Active power L2
Int32W0.1R
222
Active power L3
Int32W0.1R
242
Apparent power L1
Int32VA0.1R
262
Apparent power L2
Int32VA0.1R
282
Apparent power L3
Int32VA0.1R
302
Reactive power L1
Int32var0.1R
322
Reactive power L2
Int32var0.1R
342
Reactive power L3
Int32var0.1R
362
Voltage L-N, average
Int32V0.1R
382
Voltage L-L, average
Int32V0.1R
402
Active power, total
Int32W0.1R
422
Apparent power, total
Int32VA0.1R
442
Reactive power, total
Int32var0.1R
461
Power factor L1
Negative = leading (capacitive), positive = lagging (inductive).
Int16-0.001R
471
Power factor L2
Int16-0.001R
481
Power factor L3
Int16-0.001R
491
Power factor, total
Int16-0.001R
501
Phase sequence
-1 = L1-L3-L2, 0 = L1-L2-L3. Only meaningful in three-phase systems.
Int16-1R
511
Frequency
UInt16Hz0.1R
522
Active energy imported, total
kWh(+) TOT; raw value = kWh x 10.
Int32kWh0.1R
542
Reactive energy imported, total
Int32kvarh0.1R
562
Active power demand
Int32W0.1R
582
Active power demand, maximum
Int32W0.1R
602
Active energy imported, partial
Resettable partial counter.
Int32kWh0.1R
622
Reactive energy imported, partial
Int32kvarh0.1R
642
Active energy imported L1
Int32kWh0.1R
662
Active energy imported L2
Int32kWh0.1R
682
Active energy imported L3
Int32kWh0.1R
702
Active energy imported, tariff 1
Int32kWh0.1R
722
Active energy imported, tariff 2
Int32kWh0.1R
742
Active energy imported, tariff 3
Int32kWh0.1R
762
Active energy imported, tariff 4
Int32kWh0.1R
782
Active energy exported, total
kWh(-) TOT.
Int32kWh0.1R
802
Reactive energy exported, total
Int32kvarh0.1R
902
Hour counter
Operating hours; raw value = hours x 100.
Int32h0.01R
1182
Apparent power demand
Int32VA0.1R
1202
Apparent power demand, maximum
Int32VA0.1R
1222
Current demand, maximum
Int32A0.001R
7701
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-1R
7721
Communication module firmware version
UInt16-1R
412161
Front selector status
3 = locked (LOCK position), 2 = unlocked (position 1), 1 = unlocked (position 2), 0 = unlocked (kVARh position).
UInt16-1R

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.