Carlo Gavazzi EM270 Modbus register map
Also covers EM270 X, EM270 W, EM280
Dual three-phase energy meter with split-core current sensors (TCD), RS485 Modbus RTU
- Official
- 112 registers
- Modbus RTU
- Revision 2 · 2026-10-17
- Identity: model, firmware
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
- 1
- Serial
- 9600 8N1 · 9600 baud, 8 data bits, none parity, 1 stop bit
- Byte / word order
- CDAB · bytes big-endian, words low first (word swap)
- Addresses
- 0-based
- Max read
- 18 registers per request
Connection values are defaults: the device may be configured differently.
Map
- Registers
- 27 holding registers, 85 input registers
- Groups
- 8
- Revision
- 2 · 2026-10-17
- Added
- ()
- File
- maps/carlo-gavazzi/em270.mbmap.json · 21 KB · history
- SHA-256
- 6e6a801f85c8bfa80efc346cdb12d63ff15da94f838a5d222a7237cafea76109
- Manufacturer
- gavazziautomation.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 | Carlo Gavazzi identification code | input 11 | uint16 | 270 = EM270 MV5 (2 pulse outputs), 271 = EM270 MV5 (open collector), 272 = EM270 MV6 (2 pulse outputs), +5 more |
| Firmware | Revision code | input 771 | uint16 |
Sources and notes
- EM270 X & W, EM280 Communication Protocol · version Version 5 Revision 1, 2018-01-29
Source: Carlo Gavazzi, "EM270 X & W, EM280 Communication Protocol", version 5 revision 1 (2018-01-29)
- FC03 or FC04 read (the same values), FC06 writes one register; at most 18 registers per read.
- 32-bit values are low word first (bytes high first in each word).
- Which variables exist depends on the measuring system (0x1002) and on SUM/virtual (0x1007); see table 2.3-1 of the protocol.
- Firmware: EM270 X from r.b0, EM270 W from r.C0, EM280 from r.E0 unless a register says otherwise.
| Area | Address | Name | Type | Access | Unit | Scale | Description |
|---|---|---|---|---|---|---|---|
| IR | 0 | int32 CDAB | R | V | ×0.1 | Also the L-N voltage in single-phase systems | |
| IR | 2 | int32 CDAB | R | V | ×0.1 | ||
| IR | 4 | int32 CDAB | R | V | ×0.1 | ||
| IR | 6 | int32 CDAB | R | V | ×0.1 | ||
| IR | 8 | int32 CDAB | R | V | ×0.1 | ||
| IR | 10 | int32 CDAB | R | V | ×0.1 | ||
| IR | 12 | int32 CDAB | R | A | ×0.001 | Only with SUM/virtual on and both TCDs in the same phase order | |
| IR | 14 | int32 CDAB | R | A | ×0.001 | ||
| IR | 16 | int32 CDAB | R | A | ×0.001 | ||
| IR | 18 | int32 CDAB | R | W | ×0.1 | Only with SUM/virtual on | |
| IR | 20 | int32 CDAB | R | VA | ×0.1 | ||
| IR | 22 | int32 CDAB | R | var | ×0.1 | ||
| IR | 24 | int32 CDAB | R | kWh | ×0.1 | ||
| IR | 26 | int32 CDAB | R | kvarh | ×0.1 | ||
| IR | 28 | int32 CDAB | R | W | ×0.1 | ||
| IR | 30 | int32 CDAB | R | VA | ×0.1 | ||
| IR | 32 | int32 CDAB | R | W | ×0.1 | ||
| IR | 34 | int32 CDAB | R | VA | ×0.1 | ||
| IR | 36 | int32 CDAB | R | ×0.001 | EM270 X from firmware r.b4, EM280 from r.E3; sign per the power quadrant | ||
| IR | 268 | int32 CDAB | R | A | ×0.001 | ||
| IR | 270 | int32 CDAB | R | A | ×0.001 | ||
| IR | 272 | int32 CDAB | R | A | ×0.001 | ||
| IR | 274 | int32 CDAB | R | W | ×0.1 | ||
| IR | 276 | int32 CDAB | R | W | ×0.1 | ||
| IR | 278 | int32 CDAB | R | W | ×0.1 | ||
| IR | 280 | int32 CDAB | R | W | ×0.1 | ||
| IR | 282 | int32 CDAB | R | VA | ×0.1 | ||
| IR | 284 | int32 CDAB | R | var | ×0.1 | ||
| IR | 286 | int32 CDAB | R | kWh | ×0.1 | ||
| IR | 288 | int32 CDAB | R | kvarh | ×0.1 | ||
| IR | 290 | int32 CDAB | R | W | ×0.1 | ||
| IR | 292 | int32 CDAB | R | VA | ×0.1 | ||
| IR | 294 | int32 CDAB | R | W | ×0.1 | ||
| IR | 296 | int32 CDAB | R | VA | ×0.1 | ||
| IR | 298 | int32 CDAB | R | kWh | ×0.1 | ||
| IR | 300 | int32 CDAB | R | kWh | ×0.1 | ||
| IR | 302 | int32 CDAB | R | kWh | ×0.1 | ||
| IR | 304 | int32 CDAB | R | W | ×0.1 | ||
| IR | 306 | int32 CDAB | R | W | ×0.1 | ||
| IR | 308 | int32 CDAB | R | W | ×0.1 | ||
| IR | 310 | int32 CDAB | R | W | ×0.1 | ||
| IR | 312 | int32 CDAB | R | W | ×0.1 | ||
| IR | 314 | int32 CDAB | R | W | ×0.1 | ||
| IR | 316 | int32 CDAB | R | var | ×0.1 | EM270 X from firmware r.b4, EM280 from r.E3 | |
| IR | 318 | int32 CDAB | R | var | ×0.1 | ||
| IR | 320 | int32 CDAB | R | var | ×0.1 | ||
| IR | 322 | int32 CDAB | R | ×0.001 | EM270 X from firmware r.b4, EM280 from r.E3 | ||
| IR | 324 | int32 CDAB | R | ×0.001 | |||
| IR | 326 | int32 CDAB | R | ×0.001 | |||
| IR | 328 | int32 CDAB | R | ×0.001 | |||
| IR | 524 | int32 CDAB | R | A | ×0.001 | ||
| IR | 526 | int32 CDAB | R | A | ×0.001 | ||
| IR | 528 | int32 CDAB | R | A | ×0.001 | ||
| IR | 530 | int32 CDAB | R | W | ×0.1 | ||
| IR | 532 | int32 CDAB | R | W | ×0.1 | ||
| IR | 534 | int32 CDAB | R | W | ×0.1 | ||
| IR | 536 | int32 CDAB | R | W | ×0.1 | ||
| IR | 538 | int32 CDAB | R | VA | ×0.1 | ||
| IR | 540 | int32 CDAB | R | var | ×0.1 | ||
| IR | 542 | int32 CDAB | R | kWh | ×0.1 | ||
| IR | 544 | int32 CDAB | R | kvarh | ×0.1 | ||
| IR | 546 | int32 CDAB | R | W | ×0.1 | ||
| IR | 548 | int32 CDAB | R | VA | ×0.1 | ||
| IR | 550 | int32 CDAB | R | W | ×0.1 | ||
| IR | 552 | int32 CDAB | R | VA | ×0.1 | ||
| IR | 554 | int32 CDAB | R | kWh | ×0.1 | ||
| IR | 556 | int32 CDAB | R | kWh | ×0.1 | ||
| IR | 558 | int32 CDAB | R | kWh | ×0.1 | ||
| IR | 560 | int32 CDAB | R | W | ×0.1 | ||
| IR | 562 | int32 CDAB | R | W | ×0.1 | ||
| IR | 564 | int32 CDAB | R | W | ×0.1 | ||
| IR | 566 | int32 CDAB | R | W | ×0.1 | ||
| IR | 568 | int32 CDAB | R | W | ×0.1 | ||
| IR | 570 | int32 CDAB | R | W | ×0.1 | ||
| IR | 572 | int32 CDAB | R | var | ×0.1 | EM270 X from firmware r.b4, EM280 from r.E3 | |
| IR | 574 | int32 CDAB | R | var | ×0.1 | ||
| IR | 576 | int32 CDAB | R | var | ×0.1 | ||
| IR | 578 | int32 CDAB | R | ×0.001 | EM270 X from firmware r.b4, EM280 from r.E3 | ||
| IR | 580 | int32 CDAB | R | ×0.001 | |||
| IR | 582 | int32 CDAB | R | ×0.001 | |||
| IR | 584 | int32 CDAB | R | ×0.001 | |||
| IR | 11 | uint16 | R | Same codes for EM270 X and W; read alone, one word at a time (the address is inside Voltage L3-L1) | |||
| IR | 770 | uint16 | R | 0 = A, 1 = B … | |||
| IR | 771 | uint16 | R | ||||
| IR | 772 | uint16 | R | ||||
| HR | 4096 | uint16 | RW | ||||
| HR | 4098 | uint16 | RW | 1P systems on EM270 X from r.b4 (and EM270 W, EM280) | |||
| HR | 4099 | uint16 | R | EM280: 0 = TCD06Bx, 1 = TCD06Sx, 4 = none. EM270 X before r.b4: 3 = none | |||
| HR | 4100 | uint16 | R | EM270 X from r.b4 | |||
| HR | 4101 | uint16 | RW | ×0.1 | Maximum depends on the model and the TCDs; read only on EM280 (fixed 1.0) | ||
| HR | 4103 | uint16 | RW | DIF on EM270 X from r.b4; the other models only 0/1 | |||
| HR | 4112 | uint16 | RW | min | |||
| HR | 4114 | uint16 | RW | ||||
| HR | 4128 | uint16 | RW | kWh | ×0.01 | ||
| HR | 4130 | uint16 | RW | kWh | ×0.01 | ||
| HR | 4355 | uint16 | RW | ||||
| HR | 4864 | uint16 | RW | ||||
| HR | 4866 | uint16 | RW | Read only on EM280 (copy of 0x1300) | |||
| HR | 8192 | uint16 | RW | ||||
| HR | 8193 | uint16 | RW |
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).