Skip to content
Proxus 2.0.1 Licence and sign-in fixes after the 2.0 upgrade Release notes

Carlo Gavazzi EM330/ET330 Modbus register map

Also searched as: EM330 · ET330 · EM330-DIN · ET330-DIN

74 Modbus registers of the Carlo Gavazzi EM330 and ET330, 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 EM330 and ET330 energy meters with RS485 Modbus RTU; scaled integers, low word first.

Device type
Energy meter
Registers
74
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
EM330, ET330

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.

Verify it on your device What the levels mean

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 64-bit totalizers at 0500h (EM330 from October 2018) are left out; their LSW-first word order has no byte_order code here.
  • Run hour meter and neutral current are available on the EM330 and the ET330.

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
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

View this map on GitHub (YAML)

Read it by name

Read the EM330/ET330 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": {
    "em330-1": {
      "protocol": "modbus-tcp",
      "host": "192.168.10.40",
      "unit_id": 1,
      "map": "carlo-gavazzi/em330-et330"
    }
  }
}

Ask your assistant

Read voltage_l1_n, voltage_l2_n, voltage_l3_n from em330-1.

The tool call it makes

read_named(device: "em330-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.

Modbus in Proxus Industrial connectivity