Carlo Gavazzi EM210 Modbus register map
Also searched as: EM210 AV · EM210_AV
65 Modbus registers of the Carlo Gavazzi EM210, with the address on the wire, the 30001-style reference, data type, byte order, unit and scale. Transcribed from EM210 Communication Protocol (Version 4 Revision 3 (May 10, 2018)).
Three-phase energy meter with RS485 Modbus RTU; scaled integers, low word first.
- Device type
- Energy meter
- Registers
- 65
- Interfaces
- Modbus RTU
- Default unit ID
- 1
- Byte order (multi-register values)
- CDAB
- Serial settings
- 9600 baud, 8 data bits, no parity, 1 stop bit
- Registers per read
- 61
Hardware verification
Not yet verified on hardware. The map is transcribed from the vendor document and checked against it by script; check the first readings against the device display.
Connection notes
- Function codes 03 and 04 return the same values; input registers here can also be read as holding registers.
- 32-bit values are sent low word first (LSW, MSW); bytes inside each word are high byte first.
- Up to 61 registers per read; firmware, lock and identification registers are read one word at a time.
- THD, neutral current and hour counters need firmware A.5 or later; the wrong-connection registers need A.6.
- Phase 2 and 3 values read as 0 when the meter is set to a 1-phase or 2-phase system.
- Frequency (0033h) is left out because the document gives its weight as Hz where sibling meters use Hz*10.
Registers
Grouped as in the vendor document.
Voltage 8 registers
| Name and key | Reference | Address | Type | Byte order | Unit | Scale |
|---|---|---|---|---|---|---|
Phase 1 line to neutral voltagevoltage_l1_n | 30001 | 0x0000 | int32 | CDAB | V | × 0.1 |
Phase 2 line to neutral voltagevoltage_l2_n | 30003 | 0x0002 | int32 | CDAB | V | × 0.1 |
Phase 3 line to neutral voltagevoltage_l3_n | 30005 | 0x0004 | int32 | CDAB | V | × 0.1 |
Line 1 to line 2 voltagevoltage_l1_l2 | 30007 | 0x0006 | int32 | CDAB | V | × 0.1 |
Line 2 to line 3 voltagevoltage_l2_l3 | 30009 | 0x0008 | int32 | CDAB | V | × 0.1 |
Line 3 to line 1 voltagevoltage_l3_l1 | 30011 | 0x000A | int32 | CDAB | V | × 0.1 |
System line to neutral voltagevoltage_l_n_sys | 30037 | 0x0024 | int32 | CDAB | V | × 0.1 |
System line to line voltagevoltage_l_l_sys | 30039 | 0x0026 | int32 | CDAB | V | × 0.1 |
Current 4 registers
| Name and key | Reference | Address | Type | Byte order | Unit | Scale |
|---|---|---|---|---|---|---|
Phase 1 currentcurrent_l1 | 30013 | 0x000C | int32 | CDAB | A | × 0.001 |
Phase 2 currentcurrent_l2 | 30015 | 0x000E | int32 | CDAB | A | × 0.001 |
Phase 3 currentcurrent_l3 | 30017 | 0x0010 | int32 | CDAB | A | × 0.001 |
Neutral current (calculated)current_n | 30153 | 0x0098 | int32 | CDAB | A | × 0.001 |
Power 16 registers
| Name and key | Reference | Address | Type | Byte order | Unit | Scale |
|---|---|---|---|---|---|---|
Phase 1 active poweractive_power_l1 | 30019 | 0x0012 | int32 | CDAB | W | × 0.1 |
Phase 2 active poweractive_power_l2 | 30021 | 0x0014 | int32 | CDAB | W | × 0.1 |
Phase 3 active poweractive_power_l3 | 30023 | 0x0016 | int32 | CDAB | W | × 0.1 |
Phase 1 apparent powerapparent_power_l1 | 30025 | 0x0018 | int32 | CDAB | VA | × 0.1 |
Phase 2 apparent powerapparent_power_l2 | 30027 | 0x001A | int32 | CDAB | VA | × 0.1 |
Phase 3 apparent powerapparent_power_l3 | 30029 | 0x001C | int32 | CDAB | VA | × 0.1 |
Phase 1 reactive powerreactive_power_l1 | 30031 | 0x001E | int32 | CDAB | var | × 0.1 |
Phase 2 reactive powerreactive_power_l2 | 30033 | 0x0020 | int32 | CDAB | var | × 0.1 |
Phase 3 reactive powerreactive_power_l3 | 30035 | 0x0022 | int32 | CDAB | var | × 0.1 |
System active poweractive_power_total | 30041 | 0x0028 | int32 | CDAB | W | × 0.1 |
System apparent powerapparent_power_total | 30043 | 0x002A | int32 | CDAB | VA | × 0.1 |
System reactive powerreactive_power_total | 30045 | 0x002C | int32 | CDAB | var | × 0.1 |
Phase 1 power factorpower_factor_l1 | 30047 | 0x002E | int16 | × 0.001 | ||
Phase 2 power factorpower_factor_l2 | 30048 | 0x002F | int16 | × 0.001 | ||
Phase 3 power factorpower_factor_l3 | 30049 | 0x0030 | int16 | × 0.001 | ||
System power factorpower_factor_total | 30050 | 0x0031 | int16 | × 0.001 |
Energy 5 registers
| Name and key | Reference | Address | Type | Byte order | Unit | Scale |
|---|---|---|---|---|---|---|
Total imported active energyimport_active_energy | 30053 | 0x0034 | int32 | CDAB | kWh | × 0.1 |
Total imported reactive energyimport_reactive_energy | 30055 | 0x0036 | int32 | CDAB | kvarh | × 0.1 |
Total exported active energyexport_active_energy | 30079 | 0x004E | int32 | CDAB | kWh | × 0.1 |
Hour counterrun_hours | 30091 | 0x005A | int32 | CDAB | h | × 0.01 |
Hour counter, negativerun_hours_negative | 30093 | 0x005C | int32 | CDAB | h | × 0.01 |
Status 3 registers
| Name and key | Reference | Address | Type | Byte order | Unit | Scale |
|---|---|---|---|---|---|---|
Phase sequencephase_sequence | 30051 | 0x0032 | int16 | |||
Programming lockprogramming_lock | 30773 | 0x0304 | uint16 | |||
Wrong connection statuswrong_connection_status | 44358 | 0x1105 | bitfield16 |
Harmonics 9 registers
| Name and key | Reference | Address | Type | Byte order | Unit | Scale |
|---|---|---|---|---|---|---|
Phase 1 current THDthd_current_l1 | 30131 | 0x0082 | int32 | CDAB | % | × 0.01 |
Phase 2 current THDthd_current_l2 | 30133 | 0x0084 | int32 | CDAB | % | × 0.01 |
Phase 3 current THDthd_current_l3 | 30135 | 0x0086 | int32 | CDAB | % | × 0.01 |
Phase 1 line to neutral voltage THDthd_voltage_l1_n | 30139 | 0x008A | int32 | CDAB | % | × 0.01 |
Phase 2 line to neutral voltage THDthd_voltage_l2_n | 30141 | 0x008C | int32 | CDAB | % | × 0.01 |
Phase 3 line to neutral voltage THDthd_voltage_l3_n | 30143 | 0x008E | int32 | CDAB | % | × 0.01 |
Line 1 to line 2 voltage THDthd_voltage_l1_l2 | 30147 | 0x0092 | int32 | CDAB | % | × 0.01 |
Line 2 to line 3 voltage THDthd_voltage_l2_l3 | 30149 | 0x0094 | int32 | CDAB | % | × 0.01 |
Line 3 to line 1 voltage THDthd_voltage_l3_l1 | 30151 | 0x0096 | int32 | CDAB | % | × 0.01 |
Info 5 registers
| Name and key | Reference | Address | Type | Byte order | Unit | Scale |
|---|---|---|---|---|---|---|
Version codeversion_code | 30771 | 0x0302 | uint16 | |||
Revision coderevision_code | 30772 | 0x0303 | uint16 | |||
Serial numberserial_number | 320481 | 0x5000 | string | |||
Production yearproduction_year | 320488 | 0x5007 | uint16 | |||
Instrument secondary addresssecondary_address | 320737 | 0x5100 | uint32 | CDAB |
Setup 15 registers
| Name and key | Reference | Address | Type | Byte order | Unit | Scale |
|---|---|---|---|---|---|---|
Passwordpassword | 44097 | 0x1000 | uint16 | |||
Measuring systemmeasuring_system | 44099 | 0x1002 | uint16 | |||
Current transformer ratioct_ratio | 44100 | 0x1003 | uint32 | CDAB | × 0.1 | |
Voltage transformer ratiovt_ratio | 44102 | 0x1005 | uint32 | CDAB | × 0.1 | |
Pulse output durationpulse_duration | 44115 | 0x1012 | uint16 | |||
Energy per pulsepulse_weight | 44129 | 0x1020 | uint16 | kWh | × 0.01 | |
Wrong connection detectionwrong_connection_enable | 44357 | 0x1104 | uint16 | |||
THD calculationthd_enable | 44359 | 0x1106 | uint16 | |||
Start current for hour countinghour_counter_start_current | 44360 | 0x1107 | int32 | CDAB | A | × 0.001 |
Type of applicationapplication | 44865 | 0x1300 | uint16 | |||
RS485 instrument addressmodbus_address | 48193 | 0x2000 | uint16 | |||
RS485 baud ratebaud_rate | 48194 | 0x2001 | uint16 | |||
RS485 parityparity | 48195 | 0x2002 | uint16 | |||
RS485 stop bitsstop_bits | 48196 | 0x2003 | uint16 | |||
Reset energy meters and hour countersreset_meters | 416385 | 0x4000 | uint16 |
Source documents
- EM210 Communication Protocol , Carlo Gavazzi, Version 4 Revision 3 (May 10, 2018) (accessed 2026-11-09)
Read it by name
Read the EM210 with an AI assistant
The Proxus Industrial MCP Server includes this map. Set it on the device, and Claude, Cursor or VS Code reads registers by key with the right type, byte order, scale and unit. It only reads.
This device speaks Modbus RTU: reach it through a Modbus TCP gateway and use the gateway’s address with the device’s unit ID.
proxus-mcp.json
{
"devices": {
"em210-1": {
"protocol": "modbus-tcp",
"host": "192.168.10.40",
"unit_id": 1,
"map": "carlo-gavazzi/em210"
}
}
} Ask your assistant
Read voltage_l1_n, voltage_l2_n, voltage_l3_n from em210-1.
The tool call it makes
read_named(device: "em210-1", keys: ["voltage_l1_n", "voltage_l2_n", "voltage_l3_n"]) Have this device? Verify the map.
Ask your assistant to run verify_device_map. It reads every register once, read-only, checks that the values are plausible and asks you to compare two values with the display. You get a report and a prefilled GitHub issue to submit; your name goes on this map’s verified list.
Collecting from many devices?
Proxus reads Modbus TCP and RTU devices next to the machines, keeps the history and delivers the values to dashboards, databases and AI.