Carlo Gavazzi EM340/ET340 Modbus register map
Also searched as: EM340 · ET340 · EM340-DIN · ET340-DIN
82 Modbus registers of the Carlo Gavazzi EM340 and ET340, with the address on the wire, the 30001-style reference, data type, byte order, unit and scale. Transcribed from EM300 Series and ET300 Series Communication Protocol (Version 2 Revision 17 (July 5, 2021)).
Three-phase EM340 and ET340 energy meters with RS485 Modbus RTU; scaled integers, low word first.
- Device type
- Energy meter
- Registers
- 82
- 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
- 50
- Models covered
- EM340, ET340
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 50 registers per read.
- Registers 00F6h to 01A9h repeat the same values grouped by phase and are not listed.
- The THD registers are marked not available and are left out.
- Reading a setup address not listed in the document returns an illegal data address exception.
- The 1 Wh totalizers at 0400h exist on EM340 meters made from October 2018 on.
- An EM340 engineering sample (ID code 340) used high word first; production meters use low word first.
Registers
Grouped as in the vendor document.
Voltage 9 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 |
Frequencyfrequency | 30052 | 0x0033 | int16 | Hz | × 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 currentcurrent_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 13 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 |
Partial imported active energyimport_active_energy_partial | 30061 | 0x003C | int32 | CDAB | kWh | × 0.1 |
Partial imported reactive energyimport_reactive_energy_partial | 30063 | 0x003E | int32 | CDAB | kvarh | × 0.1 |
Phase 1 imported active energyimport_active_energy_l1 | 30065 | 0x0040 | int32 | CDAB | kWh | × 0.1 |
Phase 2 imported active energyimport_active_energy_l2 | 30067 | 0x0042 | int32 | CDAB | kWh | × 0.1 |
Phase 3 imported active energyimport_active_energy_l3 | 30069 | 0x0044 | int32 | CDAB | kWh | × 0.1 |
Total exported active energyexport_active_energy | 30079 | 0x004E | int32 | CDAB | kWh | × 0.1 |
Total exported reactive energyexport_reactive_energy | 30081 | 0x0050 | int32 | CDAB | kvarh | × 0.1 |
Run hour meterrun_hours | 30091 | 0x005A | int32 | CDAB | h | × 0.01 |
Phase 1 exported active energyexport_active_energy_l1 | 30097 | 0x0060 | int32 | CDAB | kWh | × 0.1 |
Phase 2 exported active energyexport_active_energy_l2 | 30099 | 0x0062 | int32 | CDAB | kWh | × 0.1 |
Phase 3 exported active energyexport_active_energy_l3 | 30101 | 0x0064 | int32 | CDAB | kWh | × 0.1 |
Status 2 registers
| Name and key | Reference | Address | Type | Byte order | Unit | Scale |
|---|---|---|---|---|---|---|
Phase sequencephase_sequence | 30051 | 0x0032 | int16 | |||
Wrong connection statuswrong_connection_status | 44358 | 0x1105 | bitfield16 |
Demand 2 registers
| Name and key | Reference | Address | Type | Byte order | Unit | Scale |
|---|---|---|---|---|---|---|
Active power demandactive_power_demand | 30057 | 0x0038 | int32 | CDAB | W | × 0.1 |
Peak active power demandactive_power_demand_max | 30059 | 0x003A | int32 | CDAB | W | × 0.1 |
Tariff energy 2 registers
| Name and key | Reference | Address | Type | Byte order | Unit | Scale |
|---|---|---|---|---|---|---|
Imported active energy, tariff 1import_active_energy_t1 | 30071 | 0x0046 | int32 | CDAB | kWh | × 0.1 |
Imported active energy, tariff 2import_active_energy_t2 | 30073 | 0x0048 | int32 | CDAB | kWh | × 0.1 |
Energy hr 8 registers
| Name and key | Reference | Address | Type | Byte order | Unit | Scale |
|---|---|---|---|---|---|---|
Total imported active energy, integer partimport_active_energy_int | 31025 | 0x0400 | int32 | CDAB | kWh | |
Total imported active energy, decimal partimport_active_energy_dec | 31027 | 0x0402 | int32 | CDAB | kWh | × 0.001 |
Total imported reactive energy, integer partimport_reactive_energy_int | 31029 | 0x0404 | int32 | CDAB | kvarh | |
Total imported reactive energy, decimal partimport_reactive_energy_dec | 31031 | 0x0406 | int32 | CDAB | kvarh | × 0.001 |
Total exported active energy, integer partexport_active_energy_int | 31033 | 0x0408 | int32 | CDAB | kWh | |
Total exported active energy, decimal partexport_active_energy_dec | 31035 | 0x040A | int32 | CDAB | kWh | × 0.001 |
Total exported reactive energy, integer partexport_reactive_energy_int | 31037 | 0x040C | int32 | CDAB | kvarh | |
Total exported reactive energy, decimal partexport_reactive_energy_dec | 31039 | 0x040E | int32 | CDAB | kvarh | × 0.001 |
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 | |||
Maximum words per readmax_read_words | 48197 | 0x2004 | uint16 | |||
Serial numberserial_number | 320481 | 0x5000 | raw | |||
Production yearproduction_year | 320497 | 0x5010 | uint16 |
Setup 21 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 | |
Demand integration timedemand_interval | 44113 | 0x1010 | uint32 | CDAB | min | |
Pulse output on timepulse_duration | 44115 | 0x1012 | uint32 | CDAB | ||
Display modedisplay_mode | 44353 | 0x1100 | uint16 | |||
Tariff managementtariff_enable | 44354 | 0x1101 | uint16 | |||
Home pagehome_page | 44355 | 0x1102 | uint16 | |||
Measurement modemeasurement_mode | 44356 | 0x1103 | uint16 | |||
Wrong connection detectionwrong_connection_enable | 44357 | 0x1104 | uint16 | |||
THD calculationthd_enable | 44359 | 0x1106 | uint16 | |||
Run hour meter start current (secondary)hour_counter_start_current | 44360 | 0x1107 | uint32 | CDAB | A | × 0.001 |
Tariff selection sourcetariff_mode | 44609 | 0x1200 | uint16 | |||
Active tariff (serial selection)tariff_select | 44610 | 0x1201 | uint16 | |||
RS485 instrument addressmodbus_address | 48193 | 0x2000 | uint16 | |||
RS485 baud ratebaud_rate | 48194 | 0x2001 | uint16 | |||
RS485 parityparity | 48195 | 0x2002 | uint16 | |||
Reset partial and tariff meters and demand peakreset_partial | 416385 | 0x4000 | uint16 | |||
Reset total energy metersreset_totals | 416386 | 0x4001 | uint16 | |||
Reset run hour meterreset_hour_counter | 416387 | 0x4002 | uint16 |
Source documents
- EM300 Series and ET300 Series Communication Protocol , Carlo Gavazzi, Version 2 Revision 17 (July 5, 2021) (accessed 2026-11-09) One document for EM330, EM340, ET330 and ET340.
Read it by name
Read the EM340/ET340 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": {
"em340-1": {
"protocol": "modbus-tcp",
"host": "192.168.10.40",
"unit_id": 1,
"map": "carlo-gavazzi/em340-et340"
}
}
} Ask your assistant
Read voltage_l1_n, voltage_l2_n, voltage_l3_n from em340-1.
The tool call it makes
read_named(device: "em340-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.