Circutor CEM-C31 Modbus register map
Also covers CEM-C31-485-T1, CEM-C31-485-DS, CEM-C31-485-T1-MID, CEM-C31-485-DS-MID
Three-phase energy meter for current transformers, DIN rail, with RS-485 (Modbus RTU) on the -485 models
- Official
- 85 registers
- Modbus RTU
- Revision 2 · 2026-10-17
- Identity: 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
- 1
- Serial
- 9600 8N1 · 9600 baud, 8 data bits, none parity, 1 stop bit
- 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
- 84 holding registers, 1 coil
- Groups
- 8
- Revision
- 2 · 2026-10-17
- Added
- ()
- File
- maps/circutor/cem-c31.mbmap.json · 15 KB · history
- SHA-256
- 072c1ecbc788f087ad3b3ee8eb8619291b64a710562e62f60b14ed5c72c991be
- Manufacturer
- circutor.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 |
|---|---|---|---|---|
| Serial number | Serial number | holding 96 | uint32 ABCD | |
| Firmware | Firmware version major | holding 80 | uint16 | |
| Firmware | Firmware version minor | holding 81 | uint16 | |
| Firmware | Firmware version revision | holding 82 | uint16 |
Sources and notes
- CEM-C31 Energy meter, Instruction manual · version M017B01-03-23A section 7.2.3, tables 17-25
Source: Circutor, "CEM-C31 energy meter instruction manual", M017B01-03-23A
- Read with FC03 or FC04 and write with FC10; a request must cover the full size of each variable.
- Energies per tariff (0x0100-0x0137), the digital input and impulse counters are only on the CEM-C31-485-DS with the matching digital input type.
| Area | Address | Name | Type | Access | Unit | Scale | Description |
|---|---|---|---|---|---|---|---|
| HR | 0 | uint32 ABCD | R | Wh | |||
| HR | 2 | uint32 ABCD | R | Wh | |||
| HR | 4 | uint32 ABCD | R | varh | |||
| HR | 6 | uint32 ABCD | R | varh | |||
| HR | 8 | uint32 ABCD | R | varh | |||
| HR | 10 | uint32 ABCD | R | varh | |||
| HR | 48 | uint32 ABCD | R | Wh | |||
| HR | 50 | uint32 ABCD | R | Wh | |||
| HR | 52 | uint32 ABCD | R | varh | |||
| HR | 54 | uint32 ABCD | R | varh | |||
| HR | 56 | uint32 ABCD | R | varh | |||
| HR | 58 | uint32 ABCD | R | varh | |||
| HR | 256 | uint32 ABCD | R | Wh | |||
| HR | 258 | uint32 ABCD | R | Wh | |||
| HR | 260 | uint32 ABCD | R | varh | |||
| HR | 262 | uint32 ABCD | R | varh | |||
| HR | 264 | uint32 ABCD | R | varh | |||
| HR | 266 | uint32 ABCD | R | varh | |||
| HR | 268 | uint32 ABCD | R | Wh | |||
| HR | 270 | uint32 ABCD | R | Wh | |||
| HR | 272 | uint32 ABCD | R | varh | |||
| HR | 274 | uint32 ABCD | R | varh | |||
| HR | 276 | uint32 ABCD | R | varh | |||
| HR | 278 | uint32 ABCD | R | varh | |||
| HR | 288 | uint32 ABCD | R | Wh | |||
| HR | 290 | uint32 ABCD | R | Wh | |||
| HR | 292 | uint32 ABCD | R | varh | |||
| HR | 294 | uint32 ABCD | R | varh | |||
| HR | 296 | uint32 ABCD | R | varh | |||
| HR | 298 | uint32 ABCD | R | varh | |||
| HR | 300 | uint32 ABCD | R | Wh | |||
| HR | 302 | uint32 ABCD | R | Wh | |||
| HR | 304 | uint32 ABCD | R | varh | |||
| HR | 306 | uint32 ABCD | R | varh | |||
| HR | 308 | uint32 ABCD | R | varh | |||
| HR | 310 | uint32 ABCD | R | varh | |||
| CO | 2048 | bool | W | Write ON (0xFF00) with FC05 | |||
| HR | 1842 | int32 ABCD | R | V | ×0.1 | Primary value | |
| HR | 1844 | int32 ABCD | R | V | ×0.1 | Primary value | |
| HR | 1846 | int32 ABCD | R | V | ×0.1 | Primary value | |
| HR | 1848 | int32 ABCD | R | A | ×0.01 | Primary value | |
| HR | 1850 | int32 ABCD | R | A | ×0.01 | Primary value | |
| HR | 1852 | int32 ABCD | R | A | ×0.01 | Primary value | |
| HR | 1854 | int32 ABCD | R | ×0.01 | |||
| HR | 1856 | int32 ABCD | R | ×0.01 | |||
| HR | 1858 | int32 ABCD | R | ×0.01 | |||
| HR | 1862 | int32 ABCD | R | W | |||
| HR | 1864 | int32 ABCD | R | W | |||
| HR | 1866 | int32 ABCD | R | W | |||
| HR | 1868 | int32 ABCD | R | W | |||
| HR | 1870 | int32 ABCD | R | var | |||
| HR | 1872 | int32 ABCD | R | var | |||
| HR | 1874 | int32 ABCD | R | var | |||
| HR | 1876 | int32 ABCD | R | var | |||
| HR | 1878 | int32 ABCD | R | VA | |||
| HR | 1880 | int32 ABCD | R | VA | |||
| HR | 1882 | int32 ABCD | R | VA | |||
| HR | 1884 | int32 ABCD | R | VA | |||
| HR | 32 | uint16 | R | ||||
| HR | 384 | uint32 ABCD | R | ||||
| HR | 386 | uint32 ABCD | R | ||||
| HR | 192 | uint32 ABCD | R | ||||
| HR | 194 | uint32 ABCD | R | kg | |||
| HR | 196 | uint32 ABCD | R | s | |||
| HR | 198 | uint32 ABCD | R | s | |||
| HR | 61456 | string[6] | R | 12 ASCII characters coding the options (manual table 24) | |||
| HR | 96 | uint32 ABCD | R | ||||
| HR | 104 | uint32 ABCD | R | ||||
| HR | 80 | uint16 | R | ||||
| HR | 81 | uint16 | R | ||||
| HR | 82 | uint16 | R | ||||
| HR | 1100 | uint32 ABCD | RW | V | |||
| HR | 1102 | uint32 ABCD | RW | V | |||
| HR | 1104 | uint32 ABCD | RW | A | |||
| HR | 1106 | uint32 ABCD | RW | A | |||
| HR | 128 | uint16 | RW | ||||
| HR | 129 | uint16 | RW | Wh | Wh per impulse | ||
| HR | 1108 | uint16 | RW | ||||
| HR | 1000 | uint16 | RW | Default 1 | |||
| HR | 1001 | uint16 | RW | Default 0 | |||
| HR | 1002 | uint16 | RW | Default 0 | |||
| HR | 176 | uint32 ABCD | RW | ×0.0001 | |||
| HR | 178 | uint32 ABCD | RW | kg | ×0.0001 | ||
| HR | 180 | uint16 | RW | Bit 0 partial energies, bit 1 tariffs, bit 2 reactive energy, bit 3 impulse, bit 4 efficiency factors | |||
| HR | 181 | uint16 | RW | s | Default 60 |
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).