Contrel EMC series Modbus register map
Also covers EMM-µD3h-485
Multifunction electrical meter
- Verified
- 86 registers
- Modbus RTU
- Revision 3 · 2026-11-10
Verified: Tested on a real device.
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
- Max read
- 32 registers per request
Connection values are defaults: the device may be configured differently.
Map
- Registers
- 86 holding registers
- Groups
- 6
- Translation tables
- 3
- Revision
- 3 · 2026-11-10
- Added
- ()
- File
- maps/contrel/emc.mbmap.json · 18 KB · history
- SHA-256
- 29587a5e4ee4b15d813a90bdb6919dd70cd690d5858a47d4d8aab242bcf1b07d
- Manufacturer
- contrel.it
Sources and notes
- EMC series electrical multifunction meter communication protocol · version IM154-U v0.94 register tables, pages 8-11
Source: Contrel EMC series communication protocol, instruction manual IM154-U v0.94
- Every value is a 32-bit integer in two registers, high word first.
- A value the meter cannot measure reads 0.
- The meter answers at most 32 registers (16 values) per read; a read must not split a value.
- Energy T1 is the total or time band 1 counter and T2 the partial or time band 2 counter, depending on the energy mode. Meters without these functions only have T1.
- The model and firmware are reported by Report Slave ID (FC17), not by a register: slave ID 0x50, firmware in data bytes 19-20, options in bytes 17-18.
- The manual does not give the scale of the power factor and cos phi registers. On a device they read as thousandths (574 = 0.574, equal to active / apparent power), so the map scales them by 0.001.
- Tested on an EMM-µD3h-485 (EMM-µD3), read over a Modbus TCP gateway, November 2026: all 80 registers read without errors. Checked: voltages, currents, power, energy (T1, T2 empty), frequency, status, settings and the 32-bit word order (big). The Max voltage L1-L3 registers (0x1072-0x1076) read 105145, 1009514 and 675279 with 226 V on the line, so they do not fit any scale and were not verified. Temperature, hour counter and neutral current read 0 on this meter.
| Area | Address | Name | Type | Access | Unit | Scale | Description |
|---|---|---|---|---|---|---|---|
| HR | 4096 | uint32 ABCD | R | V | Three-phase system voltage | ||
| HR | 4098 | uint32 ABCD | R | V | |||
| HR | 4100 | uint32 ABCD | R | V | |||
| HR | 4102 | uint32 ABCD | R | V | |||
| HR | 4104 | uint32 ABCD | R | V | |||
| HR | 4106 | uint32 ABCD | R | V | |||
| HR | 4108 | uint32 ABCD | R | V | |||
| HR | 4110 | uint32 ABCD | R | A | ×0.001 | Three-phase system current (sent in mA) | |
| HR | 4112 | uint32 ABCD | R | A | ×0.001 | Sent in mA | |
| HR | 4114 | uint32 ABCD | R | A | ×0.001 | Sent in mA | |
| HR | 4116 | uint32 ABCD | R | A | ×0.001 | Sent in mA | |
| HR | 4118 | int32 ABCD | R | ×0.001 | Raw value divided by 1000 (574 = 0.574); the manual does not give the scale, checked against active / apparent power on a device | ||
| HR | 4120 | int32 ABCD | R | ×0.001 | Raw value divided by 1000 (574 = 0.574); the manual does not give the scale, checked against active / apparent power on a device | ||
| HR | 4122 | int32 ABCD | R | ×0.001 | Raw value divided by 1000 (574 = 0.574); the manual does not give the scale, checked against active / apparent power on a device | ||
| HR | 4124 | int32 ABCD | R | ×0.001 | Raw value divided by 1000 (574 = 0.574); the manual does not give the scale, checked against active / apparent power on a device | ||
| HR | 4126 | int32 ABCD | R | ×0.001 | Raw value divided by 1000 (574 = 0.574); the manual does not give the scale, checked against active / apparent power on a device | ||
| HR | 4128 | int32 ABCD | R | ×0.001 | Raw value divided by 1000 (574 = 0.574); the manual does not give the scale, checked against active / apparent power on a device | ||
| HR | 4130 | int32 ABCD | R | ×0.001 | Raw value divided by 1000 (574 = 0.574); the manual does not give the scale, checked against active / apparent power on a device | ||
| HR | 4132 | int32 ABCD | R | ×0.001 | Raw value divided by 1000 (574 = 0.574); the manual does not give the scale, checked against active / apparent power on a device | ||
| HR | 4134 | uint32 ABCD | R | VA | |||
| HR | 4136 | uint32 ABCD | R | VA | |||
| HR | 4138 | uint32 ABCD | R | VA | |||
| HR | 4140 | uint32 ABCD | R | VA | |||
| HR | 4142 | uint32 ABCD | R | W | |||
| HR | 4144 | uint32 ABCD | R | W | |||
| HR | 4146 | uint32 ABCD | R | W | |||
| HR | 4148 | uint32 ABCD | R | W | |||
| HR | 4150 | uint32 ABCD | R | var | |||
| HR | 4152 | uint32 ABCD | R | var | |||
| HR | 4154 | uint32 ABCD | R | var | |||
| HR | 4156 | uint32 ABCD | R | var | |||
| HR | 4158 | uint32 ABCD | R | kWh | ×0.1 | Three-phase, in units of 100 Wh | |
| HR | 4160 | uint32 ABCD | R | kvarh | ×0.1 | Three-phase, in units of 100 varh | |
| HR | 4162 | uint32 ABCD | R | kWh | ×0.1 | Three-phase, in units of 100 Wh | |
| HR | 4164 | uint32 ABCD | R | kvarh | ×0.1 | Three-phase, in units of 100 varh | |
| HR | 4166 | uint32 ABCD | R | Hz | ×0.001 | Sent in mHz | |
| HR | 4168 | uint32 ABCD | R | A | ×0.001 | Sent in mA | |
| HR | 4170 | uint32 ABCD | R | kVAh | ×0.1 | Three-phase, in units of 100 VAh | |
| HR | 4172 | uint32 ABCD | R | kVAh | ×0.1 | Three-phase, in units of 100 VAh | |
| HR | 4192 | uint32 ABCD | R | A | ×0.001 | Maximum instantaneous value | |
| HR | 4194 | uint32 ABCD | R | A | ×0.001 | Maximum instantaneous value | |
| HR | 4196 | uint32 ABCD | R | A | ×0.001 | Maximum instantaneous value | |
| HR | 4198 | uint32 ABCD | R | W | Maximum instantaneous value | ||
| HR | 4200 | uint32 ABCD | R | VA | Maximum instantaneous value | ||
| HR | 4202 | uint32 ABCD | R | A | ×0.001 | Highest average value | |
| HR | 4204 | uint32 ABCD | R | A | ×0.001 | Highest average value | |
| HR | 4206 | uint32 ABCD | R | A | ×0.001 | Highest average value | |
| HR | 4208 | uint32 ABCD | R | W | Highest average value | ||
| HR | 4210 | uint32 ABCD | R | V | Maximum instantaneous value | ||
| HR | 4212 | uint32 ABCD | R | V | Maximum instantaneous value | ||
| HR | 4214 | uint32 ABCD | R | V | Maximum instantaneous value | ||
| HR | 4216 | uint32 ABCD | R | var | Maximum instantaneous value | ||
| HR | 4218 | uint32 ABCD | R | var | Highest average value | ||
| HR | 4220 | uint32 ABCD | R | VA | Highest average value | ||
| HR | 4222 | uint32 ABCD | R | W | |||
| HR | 4224 | uint32 ABCD | R | var | |||
| HR | 4226 | uint32 ABCD | R | VA | |||
| HR | 4228 | uint32 ABCD | R | A | ×0.001 | Maximum instantaneous value | |
| HR | 4230 | uint32 ABCD | R | A | ×0.001 | Highest average value | |
| HR | 4232 | uint32 ABCD | R | A | ×0.001 | ||
| HR | 4234 | uint32 ABCD | R | A | ×0.001 | ||
| HR | 4236 | uint32 ABCD | R | A | ×0.001 | ||
| HR | 4238 | uint32 ABCD | R | A | ×0.001 | ||
| HR | 4246 | uint32 ABCD | R | °C | |||
| HR | 4248 | uint32 ABCD | R | h | ×0.1 | Sent in tenths of an hour | |
| HR | 4250 | uint16 bits 8–15 | R | High byte of the DO1 settings | |||
| HR | 4250 | uint16 bits 0–7 | R | Low byte of the DO1 settings: index of the measure in table A (three-phase alarm) or table B (max/min alarm) of the manual | |||
| HR | 4251 | uint16 bits 8–15 | R | High byte of the DO2 settings | |||
| HR | 4251 | uint16 bits 0–7 | R | Low byte of the DO2 settings: index of the measure in table A (three-phase alarm) or table B (max/min alarm) of the manual | |||
| HR | 4252 | uint16 bits 8–15 | R | ||||
| HR | 4252 | uint16 bits 0–7 | R | ||||
| HR | 4253 | uint16 bits 0–7 | R | ||||
| HR | 4254 | uint16 bits 8–15 | R | ||||
| HR | 4254 | uint16 bits 0–7 | R | ||||
| HR | 4255 | uint16 bits 8–15 | R | ||||
| HR | 4255 | uint16 bits 0–7 | R | ||||
| HR | 4512 | uint32 ABCD | RW | Current transformer ratio for L1-L2-L3 | |||
| HR | 4514 | uint32 ABCD | RW | ×0.1 | Voltage transformer ratio | ||
| HR | 4516 | uint32 ABCD | RW | ||||
| HR | 4518 | uint32 ABCD | RW | Current transformer ratio for the neutral | |||
| HR | 4520 | uint32 ABCD | W | Output state in the high word, enable code 0x55AA in the low word. Only when DO1 is set to remote control | |||
| HR | 4522 | uint32 ABCD | W | Output state in the high word, enable code 0x55AA in the low word. Only when DO2 is set to remote control | |||
| HR | 4528 | uint32 ABCD | W | Write 0x11B055AA | |||
| HR | 4530 | uint32 ABCD | W | Write 0x11B255AA | |||
| HR | 4532 | uint32 ABCD | W | Write 0x11B455AA | |||
| HR | 4534 | uint32 ABCD | W | Write 0x11B655AA: max values and counters |
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).