Circutor ReadWatt Modbus register map
Optical pulse sensor that sticks onto the pulse LED of an energy meter and totalises its pulses over Modbus RTU (RS-485 and RS-232)
- Official
- 13 registers
- Modbus RTU
- Revision 1 · 2026-11-10
- Identity: 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
- 10
- 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
- 13 holding registers
- Groups
- 3
- Translation tables
- 1
- Revision
- 1 · 2026-11-10
- Added
- ()
- File
- maps/circutor/readwatt.mbmap.json · 4 KB · history
- SHA-256
- 878094c88f4fc625df4d26741395e1b0589464d44d4048cdbb758c5ec3b2a6b3
- 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 |
Sources and notes
- ReadWatt Pulse sensor, Instruction manual · version M018B01-10-22A, 2022-01 section 4.3, tables 4 and 5
Source: Circutor, "ReadWatt pulse sensor, Instruction manual", M018B01-10-22A
- Read with FC03 or FC04 and write with FC10; a request must cover the full size of each variable.
- Both ports share one baud rate (9600, 19200 or 38400, 8N1). At start-up the LED flashes 1, 2 or 3 times to show 9600, 19200 or 38400.
- The manual does not give the unit of the pulse and count registers, the word order of the 64-bit values or the format of the firmware version, so those are left as plain counts with the usual big-endian layout.
- A broadcast write (address 0) to 0x0BBA changes the address and baud rate of a unit whose address is unknown. It needs the serial number and is not mapped here (manual 4.3.5).
| Area | Address | Name | Type | Access | Unit | Scale | Description |
|---|---|---|---|---|---|---|---|
| HR | 1536 | uint64 ABCD | R | Total pulses read from the meter LED | |||
| HR | 1540 | uint64 ABCD | R | Counter totalised with the output pulse weight | |||
| HR | 2000 | uint64 ABCD | RW | Same kind of counter, which can be written to preset it | |||
| HR | 8 | uint16 | RW | Default 10 | |||
| HR | 268 | uint16 | RW | Default 0 (9600); shared by RS-232 and RS-485 | |||
| HR | 262 | uint16 | RW | ms | Default 250 ms | ||
| HR | 263 | uint16 | RW | ms | Default 2 ms | ||
| HR | 264 | uint16 | RW | Value added to the count register for each output pulse. Default 10 | |||
| HR | 265 | uint16 | RW | Ratio between the optical pulses and the count register. Default 1000 | |||
| HR | 266 | uint16 | RW | Voltage ratio times current ratio of a medium-voltage installation; 1 for direct measurement. Default 1 | |||
| HR | 267 | uint16 | RW | ms | Width of the pulse on the open-collector output. Default 100 ms; 2 to 250 ms | ||
| HR | 96 | uint32 ABCD | R | Printed in decimal on the label | |||
| HR | 80 | string[3] | R | Three registers (6 bytes); the format is not documented |
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).