Electron do Brasil EPU Modbus register map
Thermal protection unit with 16 temperature sensors, alarm, trip, fault and two fan relays, analog outputs and Modbus RTU
- Official
- 252 registers
- Modbus RTU
- Revision 1 · 2026-11-10
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
- 1-based · wire address = address − 1
Connection values are defaults: the device may be configured differently.
Map
- Registers
- 252 holding registers
- Groups
- 7
- Translation tables
- 8
- Revision
- 1 · 2026-11-10
- Added
- ()
- File
- maps/electron/epu.mbmap.json · 46 KB · history
- SHA-256
- 821ffb9c60bfda09548c00499307752eb74f6726072a2c56d0b283f2e69b79af
- Manufacturer
- electron.com.br
Sources and notes
- Mapa de Registradores MODBUS RTU, EPU · version 4.0 linked in issue #130
Source: Electron do Brasil, Mapa de Registradores MODBUS RTU, EPU, v4.0
- All registers are holding registers. The document numbers them from 1 and calls the type Holding Register (40.000), so the addresses are 1-based (address on the wire = number minus 1). The document does not say so explicitly: if a read fails, try address_base 0.
- The document allows 2400 to 57600 bps with automatic baud rate detection and 8 data bits, 1 stop bit. It gives no default baud rate or slave address: 9600 N and 1 are placeholders; the slave address is in register 205.
- Temperatures have the scale -1000:10 in the document. It is read here as: value = raw / 10 - 100, which fits the stated range of -50 to 250 with raw values from 500 to 3500. This reading is not confirmed by the document: check one value against the display.
- The document has 16 temperature sensors. Register 169 (sensor 10) is printed as 196 in the document; the sequence 160 to 175 is used.
- Left out because the document is unclear or inconsistent: the sensor offset registers 80 to 95 (called OF7), the current output range registers 100 to 135 (register 105 is missing and 135 repeats S15), the output correction registers 148 to 152, register 153 (commands, no detail), the minimum temperatures 211 to 226 (no scale given) and the latitude, longitude and serial number registers 228 to 231 and 235 to 237.
- Registers 77, 78, 155, 156, 198 to 204 are bit fields, one entry per bit.
- Written from the manufacturer's document; not tested on a device.
| Area | Address | Name | Type | Access | Unit | Scale | Description |
|---|---|---|---|---|---|---|---|
| HR | 1 | uint16 | RW | °C | ×0.1 −100 | ||
| HR | 2 | uint16 | RW | °C | ×0.1 −100 | ||
| HR | 3 | uint16 | RW | °C | ×0.1 −100 | ||
| HR | 4 | uint16 | RW | °C | ×0.1 −100 | ||
| HR | 5 | uint16 | RW | °C | ×0.1 −100 | ||
| HR | 6 | uint16 | RW | °C | ×0.1 −100 | ||
| HR | 7 | uint16 | RW | °C | ×0.1 −100 | ||
| HR | 8 | uint16 | RW | °C | ×0.1 −100 | ||
| HR | 9 | uint16 | RW | °C | ×0.1 −100 | ||
| HR | 10 | uint16 | RW | °C | ×0.1 −100 | ||
| HR | 11 | uint16 | RW | °C | ×0.1 −100 | ||
| HR | 12 | uint16 | RW | °C | ×0.1 −100 | ||
| HR | 13 | uint16 | RW | °C | ×0.1 −100 | ||
| HR | 14 | uint16 | RW | °C | ×0.1 −100 | ||
| HR | 15 | uint16 | RW | °C | ×0.1 −100 | ||
| HR | 16 | uint16 | RW | °C | ×0.1 −100 | ||
| HR | 20 | uint16 | RW | °C | ×0.1 | ||
| HR | 21 | uint16 | RW | °C | ×0.1 −100 | ||
| HR | 22 | uint16 | RW | °C | ×0.1 −100 | ||
| HR | 23 | uint16 | RW | °C | ×0.1 −100 | ||
| HR | 24 | uint16 | RW | °C | ×0.1 −100 | ||
| HR | 25 | uint16 | RW | °C | ×0.1 −100 | ||
| HR | 26 | uint16 | RW | °C | ×0.1 −100 | ||
| HR | 27 | uint16 | RW | °C | ×0.1 −100 | ||
| HR | 28 | uint16 | RW | °C | ×0.1 −100 | ||
| HR | 29 | uint16 | RW | °C | ×0.1 −100 | ||
| HR | 30 | uint16 | RW | °C | ×0.1 −100 | ||
| HR | 31 | uint16 | RW | °C | ×0.1 −100 | ||
| HR | 32 | uint16 | RW | °C | ×0.1 −100 | ||
| HR | 33 | uint16 | RW | °C | ×0.1 −100 | ||
| HR | 34 | uint16 | RW | °C | ×0.1 −100 | ||
| HR | 35 | uint16 | RW | °C | ×0.1 −100 | ||
| HR | 36 | uint16 | RW | °C | ×0.1 −100 | ||
| HR | 40 | uint16 | RW | min | |||
| HR | 41 | uint16 | RW | °C | ×0.1 −100 | ||
| HR | 42 | uint16 | RW | °C | ×0.1 −100 | ||
| HR | 43 | uint16 | RW | °C | ×0.1 −100 | ||
| HR | 44 | uint16 | RW | °C | ×0.1 −100 | ||
| HR | 45 | uint16 | RW | °C | ×0.1 −100 | ||
| HR | 46 | uint16 | RW | °C | ×0.1 −100 | ||
| HR | 47 | uint16 | RW | °C | ×0.1 −100 | ||
| HR | 48 | uint16 | RW | °C | ×0.1 −100 | ||
| HR | 49 | uint16 | RW | °C | ×0.1 −100 | ||
| HR | 50 | uint16 | RW | °C | ×0.1 −100 | ||
| HR | 51 | uint16 | RW | °C | ×0.1 −100 | ||
| HR | 52 | uint16 | RW | °C | ×0.1 −100 | ||
| HR | 53 | uint16 | RW | °C | ×0.1 −100 | ||
| HR | 54 | uint16 | RW | °C | ×0.1 −100 | ||
| HR | 55 | uint16 | RW | °C | ×0.1 −100 | ||
| HR | 56 | uint16 | RW | °C | ×0.1 −100 | ||
| HR | 57 | uint16 | RW | ||||
| HR | 61 | uint16 | RW | °C | ×0.1 −100 | ||
| HR | 62 | uint16 | RW | °C | ×0.1 −100 | ||
| HR | 63 | uint16 | RW | °C | ×0.1 −100 | ||
| HR | 64 | uint16 | RW | °C | ×0.1 −100 | ||
| HR | 65 | uint16 | RW | °C | ×0.1 −100 | ||
| HR | 66 | uint16 | RW | °C | ×0.1 −100 | ||
| HR | 67 | uint16 | RW | °C | ×0.1 −100 | ||
| HR | 68 | uint16 | RW | °C | ×0.1 −100 | ||
| HR | 69 | uint16 | RW | °C | ×0.1 −100 | ||
| HR | 70 | uint16 | RW | °C | ×0.1 −100 | ||
| HR | 71 | uint16 | RW | °C | ×0.1 −100 | ||
| HR | 72 | uint16 | RW | °C | ×0.1 −100 | ||
| HR | 73 | uint16 | RW | °C | ×0.1 −100 | ||
| HR | 74 | uint16 | RW | °C | ×0.1 −100 | ||
| HR | 75 | uint16 | RW | °C | ×0.1 −100 | ||
| HR | 76 | uint16 | RW | °C | ×0.1 −100 | ||
| HR | 77 | bool bit 0 | RW | 0 = automatic, 1 = forced on | |||
| HR | 77 | bool bit 1 | RW | 0 = automatic, 1 = forced on | |||
| HR | 78 | bool bit 0 | RW | ||||
| HR | 79 | uint16 | RW | °C | ×0.1 | ||
| HR | 136 | uint16 | RW | ||||
| HR | 137 | uint16 | RW | ||||
| HR | 138 | uint16 | RW | ||||
| HR | 139 | uint16 | RW | ||||
| HR | 140 | uint16 | RW | ||||
| HR | 141 | uint16 | RW | ||||
| HR | 142 | uint16 | RW | Bit mask of the sensors that feed the output: bit 0 is sensor 1, bit 15 is sensor 16, 1 = enabled | |||
| HR | 143 | uint16 | RW | Bit mask of the sensors that feed the output: bit 0 is sensor 1, bit 15 is sensor 16, 1 = enabled | |||
| HR | 144 | uint16 | RW | Bit mask of the sensors that feed the output: bit 0 is sensor 1, bit 15 is sensor 16, 1 = enabled | |||
| HR | 145 | uint16 | RW | Bit mask of the sensors that feed the output: bit 0 is sensor 1, bit 15 is sensor 16, 1 = enabled | |||
| HR | 146 | uint16 | RW | Bit mask of the sensors that feed the output: bit 0 is sensor 1, bit 15 is sensor 16, 1 = enabled | |||
| HR | 147 | uint16 | RW | Time between sensors in scan mode; the document gives no unit or range | |||
| HR | 154 | uint16 | RW | ||||
| HR | 155 | bool bit 0 | RW | The document describes only the disabled state (0); 1 is taken to be enabled | |||
| HR | 155 | bool bit 1 | RW | The document describes only the disabled state (0); 1 is taken to be enabled | |||
| HR | 155 | bool bit 2 | RW | The document describes only the disabled state (0); 1 is taken to be enabled | |||
| HR | 155 | bool bit 3 | RW | The document describes only the disabled state (0); 1 is taken to be enabled | |||
| HR | 155 | bool bit 4 | RW | The document describes only the disabled state (0); 1 is taken to be enabled | |||
| HR | 155 | bool bit 5 | RW | The document describes only the disabled state (0); 1 is taken to be enabled | |||
| HR | 155 | bool bit 6 | RW | The document describes only the disabled state (0); 1 is taken to be enabled | |||
| HR | 155 | bool bit 7 | RW | The document describes only the disabled state (0); 1 is taken to be enabled | |||
| HR | 155 | bool bit 8 | RW | The document describes only the disabled state (0); 1 is taken to be enabled | |||
| HR | 155 | bool bit 9 | RW | The document describes only the disabled state (0); 1 is taken to be enabled | |||
| HR | 155 | bool bit 10 | RW | The document describes only the disabled state (0); 1 is taken to be enabled | |||
| HR | 155 | bool bit 11 | RW | The document describes only the disabled state (0); 1 is taken to be enabled | |||
| HR | 155 | bool bit 12 | RW | The document describes only the disabled state (0); 1 is taken to be enabled | |||
| HR | 155 | bool bit 13 | RW | The document describes only the disabled state (0); 1 is taken to be enabled | |||
| HR | 155 | bool bit 14 | RW | The document describes only the disabled state (0); 1 is taken to be enabled | |||
| HR | 155 | bool bit 15 | RW | The document describes only the disabled state (0); 1 is taken to be enabled |
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).