Carlo Gavazzi EM24 Ethernet Modbus register map
Also covers EM24DINAV23XE1X, EM24DINAV23XE1PFA, EM24DINAV23XE1PFB, EM24DINAV53XE1X, EM24DINAV53XE1PFA, EM24DINAV53XE1PFB
Three-phase energy analyzer, Modbus TCP version (EM24-DIN E1)
- Official
- 75 registers
- Modbus TCP
- Revision 1 · 2026-10-14
- Identity: model, firmware, 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 TCP
- Unit ID
- 1default
- TCP port
- 502
- Byte / word order
- CDAB · bytes big-endian, words low first (word swap)
- Addresses
- 0-based
Connection values are defaults: the device may be configured differently.
Map
- Registers
- 14 holding registers, 61 input registers
- Groups
- 9
- Revision
- 1 · 2026-10-14
- Added
- ()
- File
- maps/carlo-gavazzi/em24-ethernet.mbmap.json · 13 KB · history
- SHA-256
- 1b671b37ac3f79e4da1834e5ccef558062f48df3a06988cf9bfc4768329f6a66
- Manufacturer
- gavazziautomation.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 |
|---|---|---|---|---|
| Model | Carlo Gavazzi identification code | input 11 | uint16 | 0x0670 = EM24DINAV23XE1X, 0x0671 = EM24DINAV23XE1PFA, 0x0672 = EM24DINAV23XE1PFB, +3 more |
| Firmware | Measurement firmware major | input 770 | uint16 bits 12–15 | |
| Firmware | Measurement firmware minor | input 770 | uint16 bits 8–11 | |
| Firmware | Measurement firmware revision | input 770 | uint16 bits 0–7 | |
| Serial number | Serial number | input 20480 | string[7] |
Sources and notes
- EM24_E1 (Ethernet) communication protocol · version 0 rev 1.3 sections 2.3.1, 2.4 and 2.5
Source: Carlo Gavazzi EM24_E1 (Ethernet) communication protocol, version 0 revision 1.3
- Measurements can be read with FC04 (input) or FC03 (holding): both return the same values.
- 32-bit values are sent low word first.
- The same measurements are also available grouped by phase from 0x00FE to 0x017E; this map uses the table grouped by variable type.
- The RS-485 EM24-DIN models use a different protocol document and are not covered here.
| Area | Address | Name | Type | Access | Unit | Scale | Description |
|---|---|---|---|---|---|---|---|
| IR | 0 | int32 CDAB | R | V | ×0.1 | ||
| IR | 2 | int32 CDAB | R | V | ×0.1 | ||
| IR | 4 | int32 CDAB | R | V | ×0.1 | ||
| IR | 6 | int32 CDAB | R | V | ×0.1 | ||
| IR | 8 | int32 CDAB | R | V | ×0.1 | ||
| IR | 10 | int32 CDAB | R | V | ×0.1 | ||
| IR | 12 | int32 CDAB | R | A | ×0.001 | ||
| IR | 14 | int32 CDAB | R | A | ×0.001 | ||
| IR | 16 | int32 CDAB | R | A | ×0.001 | ||
| IR | 18 | int32 CDAB | R | W | ×0.1 | ||
| IR | 20 | int32 CDAB | R | W | ×0.1 | ||
| IR | 22 | int32 CDAB | R | W | ×0.1 | ||
| IR | 24 | int32 CDAB | R | VA | ×0.1 | ||
| IR | 26 | int32 CDAB | R | VA | ×0.1 | ||
| IR | 28 | int32 CDAB | R | VA | ×0.1 | ||
| IR | 30 | int32 CDAB | R | var | ×0.1 | ||
| IR | 32 | int32 CDAB | R | var | ×0.1 | ||
| IR | 34 | int32 CDAB | R | var | ×0.1 | ||
| IR | 36 | int32 CDAB | R | V | ×0.1 | ||
| IR | 38 | int32 CDAB | R | V | ×0.1 | ||
| IR | 40 | int32 CDAB | R | W | ×0.1 | ||
| IR | 42 | int32 CDAB | R | VA | ×0.1 | ||
| IR | 44 | int32 CDAB | R | var | ×0.1 | ||
| IR | 46 | int16 | R | ×0.001 | Negative = leading (capacitive), positive = lagging (inductive) | ||
| IR | 47 | int16 | R | ×0.001 | Negative = leading (capacitive), positive = lagging (inductive) | ||
| IR | 48 | int16 | R | ×0.001 | Negative = leading (capacitive), positive = lagging (inductive) | ||
| IR | 49 | int16 | R | ×0.001 | Negative = leading (capacitive), positive = lagging (inductive) | ||
| IR | 50 | int16 | R | Meaningful on three-phase systems only | |||
| IR | 51 | uint16 | R | Hz | ×0.1 | ||
| IR | 52 | int32 CDAB | R | kWh | ×0.1 | ||
| IR | 54 | int32 CDAB | R | kvarh | ×0.1 | ||
| IR | 56 | int32 CDAB | R | W | ×0.1 | ||
| IR | 58 | int32 CDAB | R | W | ×0.1 | ||
| IR | 60 | int32 CDAB | R | kWh | ×0.1 | Partial counter | |
| IR | 62 | int32 CDAB | R | kvarh | ×0.1 | Partial counter | |
| IR | 64 | int32 CDAB | R | kWh | ×0.1 | ||
| IR | 66 | int32 CDAB | R | kWh | ×0.1 | ||
| IR | 68 | int32 CDAB | R | kWh | ×0.1 | ||
| IR | 70 | int32 CDAB | R | kWh | ×0.1 | Tariff 1 | |
| IR | 72 | int32 CDAB | R | kWh | ×0.1 | Tariff 2 | |
| IR | 74 | int32 CDAB | R | kWh | ×0.1 | Tariff 3 | |
| IR | 76 | int32 CDAB | R | kWh | ×0.1 | Tariff 4 | |
| IR | 78 | int32 CDAB | R | kWh | ×0.1 | ||
| IR | 80 | int32 CDAB | R | kvarh | ×0.1 | ||
| IR | 90 | int32 CDAB | R | h | ×0.01 | ||
| IR | 110 | int32 CDAB | R | kvarh | ×0.1 | Tariff 1 | |
| IR | 112 | int32 CDAB | R | kvarh | ×0.1 | Tariff 2 | |
| IR | 114 | int32 CDAB | R | kvarh | ×0.1 | Tariff 3 | |
| IR | 116 | int32 CDAB | R | kvarh | ×0.1 | Tariff 4 | |
| IR | 118 | int32 CDAB | R | VA | ×0.1 | ||
| IR | 120 | int32 CDAB | R | VA | ×0.1 | ||
| IR | 122 | int32 CDAB | R | A | ×0.001 | ||
| IR | 11 | uint16 | R | Must be read on its own (length 1) | |||
| IR | 770 | uint16 bits 12–15 | R | ||||
| IR | 770 | uint16 bits 8–11 | R | ||||
| IR | 770 | uint16 bits 0–7 | R | ||||
| IR | 772 | uint16 bits 12–15 | R | ||||
| IR | 772 | uint16 bits 8–11 | R | ||||
| IR | 772 | uint16 bits 0–7 | R | ||||
| IR | 20480 | string[7] | R | ||||
| IR | 41216 | uint16 | R | ||||
| HR | 4096 | uint16 | RW | ||||
| HR | 4098 | uint16 | RW | Writable only when the selector is not in LOCK; PFA and PFB models support 3P.n only | |||
| HR | 4099 | uint32 CDAB | RW | ×0.1 | Max 2615.0 on MID models, and CT x VT must stay within that limit; read-only on AV2 models | ||
| HR | 4101 | uint32 CDAB | RW | ×0.1 | Read-only on AV2 and MID models; CT x VT must stay within the limit | ||
| HR | 4112 | uint32 CDAB | RW | min | |||
| HR | 4360 | uint16 | RW | ||||
| HR | 4361 | uint16 | RW | ||||
| HR | 4609 | uint16 | RW | To change it, write 0x5A00 + tariff (e.g. 0x5A03 for tariff 3); a change resets the demand values | |||
| HR | 40960 | uint16 | RW | PFA models: A, B, C, G; PFB models: E, F, H | |||
| HR | 16385 | uint16 | W | Write 1; not in LOCK position | |||
| HR | 16386 | uint16 | W | Write 1 | |||
| HR | 16387 | uint16 | W | Write 1; not in LOCK position | |||
| HR | 16388 | uint16 | W | Write 1 | |||
| HR | 16389 | uint16 | W | Write 1 |
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).