Electron do Brasil MoniTemp Plus Modbus register map
Digital temperature monitor for transformers (ANSI 49I / 49): oil and two winding sensors, thermal image, two fan groups, alarm, shutdown and fault relays, analog output and Modbus RTU
- Official
- 104 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
- 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
- 104 holding registers
- Groups
- 7
- Translation tables
- 10
- Revision
- 1 · 2026-11-10
- Added
- ()
- File
- maps/electron/monitemp-plus.mbmap.json · 24 KB · history
- SHA-256
- 9c04e090d89ec7add6db76fbe4445d1cf2cb3356ba2187ed877b9bdb92180aa9
- Manufacturer
- electron.com.br
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 83 | uint32 CDAB |
Sources and notes
- Mapa de Registradores Modbus RTU, MoniTemp Plus · version 3.2 linked in issue #137
Source: Electron do Brasil, Mapa de Registradores Modbus RTU, MoniTemp Plus, v3.2
- All registers are holding registers. The document numbers them 2 to 89 and calls the type Read 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 1200 to 57600 bps with automatic baud rate detection, 8 data bits, 1 stop bit and no, even or odd parity. It gives no default baud rate or slave address: 9600 N and 1 are placeholders; the slave address is in register 78.
- Temperatures are shown in the document with one decimal and a scale of -1000:10, which it does not explain. They are given as raw values: check against the display before applying a scale. Registers with a scale of 1:10, 1:100 or 1:1000 are scaled as written.
- Registers 17, 19, 23, 30, 48, 66, 67, 68 and 71 are bit fields, one entry per bit. The command bits 3 to 5 of register 19 are write-only. Registers 1, 44, 45, 49, 53, 54, 72, 73 and the fan state registers 69 and 70 (their labels repeat the shutdown labels) are not mapped.
- The document has several copy-and-paste slips; where a label is clearly wrong the register description says how it was read (winding 2 alarm bit, oil shutdown bit, the fan drive bits).
- Written from the manufacturer's document; not tested on a device.
| Area | Address | Name | Type | Access | Unit | Scale | Description |
|---|---|---|---|---|---|---|---|
| HR | 2 | int16 | RW | Range -50.0 to 250.0; the document's scale column (-1000:10) is not explained, so the value is raw (check against the display) | |||
| HR | 3 | int16 | RW | Range -50.0 to 250.0; the document's scale column (-1000:10) is not explained, so the value is raw (check against the display) | |||
| HR | 4 | int16 | RW | Range -50.0 to 250.0; the document's scale column (-1000:10) is not explained, so the value is raw (check against the display) | |||
| HR | 5 | int16 | RW | The document calls it "desligamento por carregamento habitado" with a temperature range; its meaning is not clear. Range -50.0 to 250.0; the document's scale column (-1000:10) is not explained, so the value is raw (check against the display) | |||
| HR | 6 | int16 | RW | Range -50.0 to 250.0; the document's scale column (-1000:10) is not explained, so the value is raw (check against the display) | |||
| HR | 7 | int16 | RW | Range -50.0 to 250.0; the document's scale column (-1000:10) is not explained, so the value is raw (check against the display) | |||
| HR | 8 | int16 | RW | Range -50.0 to 250.0; the document's scale column (-1000:10) is not explained, so the value is raw (check against the display) | |||
| HR | 9 | int16 | RW | Range -50.0 to 250.0; the document's scale column (-1000:10) is not explained, so the value is raw (check against the display) | |||
| HR | 10 | int16 | RW | Range -50.0 to 250.0; the document's scale column (-1000:10) is not explained, so the value is raw (check against the display) | |||
| HR | 11 | int16 | RW | Range -50.0 to 250.0; the document's scale column (-1000:10) is not explained, so the value is raw (check against the display) | |||
| HR | 12 | int16 | RW | Range -50.0 to 250.0; the document's scale column (-1000:10) is not explained, so the value is raw (check against the display) | |||
| HR | 13 | int16 | RW | Range -50.0 to 250.0; the document's scale column (-1000:10) is not explained, so the value is raw (check against the display) | |||
| HR | 14 | int16 | RW | Range -50.0 to 250.0; the document's scale column (-1000:10) is not explained, so the value is raw (check against the display) | |||
| HR | 15 | int16 | RW | Range -50.0 to 250.0; the document's scale column (-1000:10) is not explained, so the value is raw (check against the display) | |||
| HR | 16 | int16 | RW | min | The document gives a temperature range and scale for it | ||
| HR | 17 | bool bit 0 | RW | ||||
| HR | 17 | bool bit 1 | RW | Bit 1 set: fan group drive activated | |||
| HR | 18 | uint16 | RW | ||||
| HR | 19 | bool bit 0 | RW | 0 = automatic, 1 = forced on | |||
| HR | 19 | bool bit 1 | RW | 0 = automatic, 1 = forced on; the document writes "when 3" for the on state | |||
| HR | 19 | bool bit 2 | RW | Write 1 | |||
| HR | 19 | bool bit 3 | W | Write 1 | |||
| HR | 19 | bool bit 4 | W | Write 1 | |||
| HR | 19 | bool bit 5 | W | Write 1 | |||
| HR | 20 | uint16 | RW | ||||
| HR | 23 | bool bit 0 | RW | ||||
| HR | 23 | bool bit 1 | RW | ||||
| HR | 23 | bool bit 2 | RW | The document describes both states as automatic | |||
| HR | 23 | bool bit 3 | RW | ||||
| HR | 23 | bool bit 4 | RW | ||||
| HR | 23 | bool bit 5 | RW | ||||
| HR | 24 | int16 | RW | Range -50.0 to 250.0; the document's scale column (-1000:10) is not explained, so the value is raw (check against the display) | |||
| HR | 25 | int16 | RW | Range -50.0 to 250.0; the document's scale column (-1000:10) is not explained, so the value is raw (check against the display) | |||
| HR | 26 | int16 | RW | Range -50.0 to 250.0; the document's scale column (-1000:10) is not explained, so the value is raw (check against the display) | |||
| HR | 27 | int16 | RW | Range -50.0 to 250.0; the document's scale column (-1000:10) is not explained, so the value is raw (check against the display) | |||
| HR | 28 | int16 | RW | Range -50.0 to 250.0; the document's scale column (-1000:10) is not explained, so the value is raw (check against the display) | |||
| HR | 29 | int16 | RW | Range -50.0 to 250.0; the document's scale column (-1000:10) is not explained, so the value is raw (check against the display) | |||
| HR | 30 | bool bit 0 | R | Read only in the document | |||
| HR | 30 | bool bit 1 | RW | ||||
| HR | 30 | bool bit 2 | RW | ||||
| HR | 31 | uint16 | R | ||||
| HR | 32 | uint16 | RW | ×0.1 | |||
| HR | 33 | uint16 | RW | ×0.1 | |||
| HR | 34 | uint16 | RW | ×0.1 | |||
| HR | 35 | uint16 | RW | ×0.1 | |||
| HR | 36 | uint16 | RW | ×0.1 | |||
| HR | 37 | uint16 | RW | ||||
| HR | 38 | uint16 | RW | ||||
| HR | 39 | uint16 | RW | ×0.001 | Range 1 to 9999, scale 1:1000 | ||
| HR | 40 | uint16 | RW | ×0.001 | Range 1 to 9999, scale 1:1000 | ||
| HR | 41 | uint16 | RW | ||||
| HR | 42 | uint16 | RW | ||||
| HR | 43 | int16 | RW | Range -10.0 to 10.0; the document's scale column (-1000:10) is not explained, so the value is raw (check against the display) | |||
| HR | 46 | int16 | RW | Range -1.00 to 1.00; the document's scale column (-1000:10) is not explained, so the value is raw (check against the display) | |||
| HR | 47 | int16 | RW | Range -1.00 to 1.00; the document's scale column (-1000:10) is not explained, so the value is raw (check against the display) | |||
| HR | 48 | bool bit 0 | RW | ||||
| HR | 48 | bool bit 1 | RW | ||||
| HR | 48 | bool bit 2 | RW | ||||
| HR | 48 | bool bit 3 | RW | ||||
| HR | 48 | bool bit 4 | RW | ||||
| HR | 48 | bool bit 5 | RW | ||||
| HR | 48 | bool bit 6 | RW | ||||
| HR | 48 | bool bit 7 | RW | ||||
| HR | 50 | int16 | R | Range -50.0 to 250.0; the document's scale column (-1000:10) is not explained, so the value is raw (check against the display) | |||
| HR | 51 | int16 | R | Range -50.0 to 250.0; the document's scale column (-1000:10) is not explained, so the value is raw (check against the display) | |||
| HR | 52 | int16 | R | Range -50.0 to 250.0; the document's scale column (-1000:10) is not explained, so the value is raw (check against the display) | |||
| HR | 55 | int16 | RW | Range -50.0 to 250.0; the document's scale column (-1000:10) is not explained, so the value is raw (check against the display) | |||
| HR | 56 | int16 | RW | Range -50.0 to 250.0; the document's scale column (-1000:10) is not explained, so the value is raw (check against the display) | |||
| HR | 57 | int16 | RW | Range -50.0 to 250.0; the document's scale column (-1000:10) is not explained, so the value is raw (check against the display) | |||
| HR | 58 | uint16 | R | ×0.1 | Range 0 to 2000, scale 1:10 | ||
| HR | 59 | uint16 | R | ×0.1 | Range 0 to 2000, scale 1:10 | ||
| HR | 60 | uint16 | R | ×0.1 | Range 0 to 9999, scale 1:10 | ||
| HR | 61 | uint16 | R | ×0.01 | Range 0 to 9999, scale 1:100 (as printed; register 60 is 1:10) | ||
| HR | 62 | uint16 | R | ×0.01 | Range 0 to 9999, scale 1:100 | ||
| HR | 63 | uint16 | R | ×0.01 | Range 0 to 9999, scale 1:100 | ||
| HR | 64 | uint16 | R | ×0.01 | Range 0 to 9999, scale 1:100 | ||
| HR | 65 | uint16 | R | ×0.01 | Range 0 to 9999, scale 1:100 | ||
| HR | 66 | bool bit 0 | R | ||||
| HR | 66 | bool bit 1 | R | ||||
| HR | 66 | bool bit 2 | R | The document labels this bit winding 1, like bit 1; taken to be winding 2 | |||
| HR | 67 | bool bit 0 | R | ||||
| HR | 67 | bool bit 1 | R | ||||
| HR | 67 | bool bit 2 | R | ||||
| HR | 68 | bool bit 0 | R | The document labels this bit fan/pump of the oil; taken to be the oil shutdown | |||
| HR | 68 | bool bit 1 | R | ||||
| HR | 68 | bool bit 2 | R | ||||
| HR | 71 | bool bit 0 | R | ||||
| HR | 71 | bool bit 1 | R | ||||
| HR | 71 | bool bit 2 | R | ||||
| HR | 74 | uint16 | R | ||||
| HR | 75 | uint16 | R | ||||
| HR | 76 | uint16 | R | ||||
| HR | 77 | uint16 | R | ||||
| HR | 78 | uint16 | R | Range 1 to 254 | |||
| HR | 79 | uint16 | R | Range 0 to 9999 | |||
| HR | 80 | uint16 | R | ||||
| HR | 81 | uint16 | R | ||||
| HR | 82 | uint16 | R | Range 2017 to 2099 | |||
| HR | 83 | uint32 CDAB | R | Registers 83 (LSB) and 84 (MSB), up to 0xFFFFFF | |||
| HR | 85 | 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).