Hager ECR / ECA energy meters Modbus register map
Also covers ECR140D, ECR180D, ECR181D, ECA180D, ECA181D, ECR380D, ECR381D, ECR382D, ECA380D, ECA381D, ECA382D, ECR310D, ECR311D, ECR312D, ECA310D, ECA311D, ECA312D, ECR300C, ECR301C, ECR302C, ECA300C, ECA301C, ECA302C
Hager single- and three-phase MID energy meters with Modbus RTU (ECR, screw terminals) or Agardio RJ45 (ECA)
- Official
- 134 registers
- Modbus RTU
- Revision 2 · 2026-10-17
- 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 RTU
- Unit ID
- 1default
- Serial
- 9600 8E1 · 9600 baud, 8 data bits, even parity, 1 stop bit defaults
- Byte / word order
- ABCD · bytes big-endian, words high first
- Addresses
- 0-based
Connection values are defaults: the device may be configured differently.
Map
- Registers
- 134 holding registers
- Groups
- 8
- Revision
- 2 · 2026-10-17
- Added
- ()
- File
- maps/hager/ecn-ecp-ect-ecm-ecr-eca.mbmap.json · 24 KB · history
- SHA-256
- 83504c74c752fe37b6a392204dbef7f245d5db6d6e07c0219d1fa56f8a548aca
- Manufacturer
- hager.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 | Product code | holding 4112 | string[16] | |
| Firmware | Software version | holding 4128 | uint32 ABCD | |
| Serial number | Serial number | holding 4196 | string[16] |
Sources and notes
- Modbus Tables Summary · version rev. 1.14 linked from the ECR380D and ECA380D product pages
Source: Hager Electro / Herholdt Controls, "Modbus Tables Summary", rev. 1.14 (October 2022)
- All registers are holding registers read with FC03; the writable ones use FC06.
- 32-bit values are big-endian, high word first. Strings carry two characters per register, first character in the high byte.
- Values a model does not provide read as all ones (0xFFFF, 0xFFFFFFFF, or 0x7FFF/0x7FFFFFFF for signed values). Single-phase meters have no L2/L3 values; the 1P 40 A meter has no partial energies.
- On CT-connected meters (ECx30xC) currents, powers and energies are primary values.
- The table gives no communication defaults; address, baud rate and parity are set on the meter and can be read at 0xC040-0xC041.
- Not in this map: the triple single-phase meters (ECx180T, ECx300T) energy tables, secondary-side values of CT meters, overflow details and the Read Device Identification and user block functions.
| Area | Address | Name | Type | Access | Unit | Scale | Description |
|---|---|---|---|---|---|---|---|
| HR | 4096 | string[16] | R | ||||
| HR | 4112 | string[16] | R | Commercial reference, e.g. ECR380D | |||
| HR | 4128 | uint32 ABCD | R | Version a.b.c coded as 0xaabbcc00 | |||
| HR | 4130 | string[16] | R | ||||
| HR | 4146 | string[16] | R | ||||
| HR | 4162 | string[16] | R | ||||
| HR | 4178 | string[16] | R | ||||
| HR | 4194 | uint32 ABCD | R | Version a.b.c coded as 0xaabbcc00 | |||
| HR | 4196 | string[16] | R | RRYYWWNNNN: reference, year, week, number | |||
| HR | 4212 | string[2] | R | ||||
| HR | 4214 | uint16 | R | ||||
| HR | 4215 | uint16 | R | ||||
| HR | 45056 | uint16 | R | V | ×0.01 | ||
| HR | 45057 | uint16 | R | V | ×0.01 | ||
| HR | 45058 | uint16 | R | V | ×0.01 | ||
| HR | 45059 | uint16 | R | V | ×0.01 | ||
| HR | 45060 | uint16 | R | V | ×0.01 | ||
| HR | 45061 | uint16 | R | V | ×0.01 | ||
| HR | 45062 | uint16 | R | Hz | ×0.01 | ||
| HR | 45065 | uint32 ABCD | R | A | ×0.001 | ||
| HR | 45067 | uint32 ABCD | R | A | ×0.001 | ||
| HR | 45069 | uint32 ABCD | R | A | ×0.001 | ||
| HR | 45071 | uint32 ABCD | R | A | ×0.001 | ||
| HR | 45073 | int32 ABCD | R | kW | ×0.01 | ||
| HR | 45075 | int32 ABCD | R | kvar | ×0.01 | ||
| HR | 45077 | uint32 ABCD | R | kVA | ×0.01 | ||
| HR | 45079 | int16 | R | ×0.001 | P/S; 1.000 when no power flows | ||
| HR | 45080 | int16 | R | ×0.001 | P/S; 1.000 when no power flows | ||
| HR | 45081 | int32 ABCD | R | kW | ×0.01 | ||
| HR | 45083 | int32 ABCD | R | kW | ×0.01 | ||
| HR | 45085 | int32 ABCD | R | kW | ×0.01 | ||
| HR | 45087 | int32 ABCD | R | kvar | ×0.01 | ||
| HR | 45089 | int32 ABCD | R | kvar | ×0.01 | ||
| HR | 45091 | int32 ABCD | R | kvar | ×0.01 | ||
| HR | 45093 | uint32 ABCD | R | kVA | ×0.01 | ||
| HR | 45095 | uint32 ABCD | R | kVA | ×0.01 | ||
| HR | 45097 | uint32 ABCD | R | kVA | ×0.01 | ||
| HR | 45099 | int16 | R | ×0.001 | |||
| HR | 45100 | int16 | R | ×0.001 | |||
| HR | 45101 | int16 | R | ×0.001 | |||
| HR | 45102 | int16 | R | ×0.001 | |||
| HR | 45103 | int16 | R | ×0.001 | |||
| HR | 45104 | int16 | R | ×0.001 | |||
| HR | 45152 | uint32 ABCD | R | kWh | |||
| HR | 45154 | uint32 ABCD | R | kvarh | |||
| HR | 45156 | uint32 ABCD | R | kWh | |||
| HR | 45158 | uint32 ABCD | R | kvarh | |||
| HR | 45160 | uint32 ABCD | R | kWh | |||
| HR | 45162 | uint32 ABCD | R | kWh | |||
| HR | 45164 | uint32 ABCD | R | Wh | Firmware 1.2 and later; wraps at the 32-bit limit | ||
| HR | 45166 | uint32 ABCD | R | Wh | Firmware 1.2 and later; wraps at the 32-bit limit | ||
| HR | 45168 | uint32 ABCD | R | kWh | Three-phase meters, firmware 1.2 and later: net (vector) summation of the phases | ||
| HR | 45170 | uint32 ABCD | R | kWh | Three-phase meters, firmware 1.2 and later | ||
| HR | 45172 | uint32 ABCD | R | Wh | Three-phase meters, firmware 1.2 and later | ||
| HR | 45174 | uint32 ABCD | R | Wh | Three-phase meters, firmware 1.2 and later | ||
| HR | 45248 | uint32 ABCD | R | kWh | |||
| HR | 45250 | uint32 ABCD | R | kWh | |||
| HR | 45252 | uint32 ABCD | R | kWh | |||
| HR | 45254 | uint32 ABCD | R | kWh | |||
| HR | 45256 | uint32 ABCD | R | kWh | |||
| HR | 45258 | uint32 ABCD | R | kWh | |||
| HR | 45260 | uint32 ABCD | R | kWh | |||
| HR | 45262 | uint32 ABCD | R | kWh | |||
| HR | 45264 | uint32 ABCD | R | kWh | |||
| HR | 45266 | uint32 ABCD | R | kWh | |||
| HR | 45268 | uint32 ABCD | R | kWh | |||
| HR | 45270 | uint32 ABCD | R | kWh | |||
| HR | 45272 | uint32 ABCD | R | kWh | |||
| HR | 45274 | uint32 ABCD | R | kWh | |||
| HR | 45276 | uint32 ABCD | R | kWh | |||
| HR | 45278 | uint32 ABCD | R | kWh | |||
| HR | 45280 | uint32 ABCD | R | kvarh | |||
| HR | 45282 | uint32 ABCD | R | kvarh | |||
| HR | 45284 | uint32 ABCD | R | kvarh | |||
| HR | 45286 | uint32 ABCD | R | kvarh | |||
| HR | 45288 | uint32 ABCD | R | kvarh | |||
| HR | 45290 | uint32 ABCD | R | kvarh | |||
| HR | 45292 | uint32 ABCD | R | kvarh | |||
| HR | 45294 | uint32 ABCD | R | kvarh | |||
| HR | 45296 | uint32 ABCD | R | kvarh | |||
| HR | 45298 | uint32 ABCD | R | kvarh | |||
| HR | 45300 | uint32 ABCD | R | kvarh | |||
| HR | 45302 | uint32 ABCD | R | kvarh | |||
| HR | 45304 | uint32 ABCD | R | kvarh | |||
| HR | 45306 | uint32 ABCD | R | kvarh | |||
| HR | 45308 | uint32 ABCD | R | kvarh | |||
| HR | 45310 | uint32 ABCD | R | kvarh | |||
| HR | 45376 | uint32 ABCD | R | kWh | |||
| HR | 45378 | uint32 ABCD | R | kWh | |||
| HR | 45380 | uint32 ABCD | R | kWh | |||
| HR | 45382 | uint32 ABCD | R | kWh | |||
| HR | 45384 | uint32 ABCD | R | kWh | |||
| HR | 45386 | uint32 ABCD | R | kWh | |||
| HR | 45388 | uint32 ABCD | R | kWh | |||
| HR | 45390 | uint32 ABCD | R | kWh | |||
| HR | 45392 | uint32 ABCD | R | kWh | |||
| HR | 45394 | uint32 ABCD | R | kWh | |||
| HR | 45396 | uint32 ABCD | R | kWh | |||
| HR | 45398 | uint32 ABCD | R | kWh | |||
| HR | 45400 | uint32 ABCD | R | kWh |
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).