Treetech TM Modbus register map
Transformer temperature monitor: RTD, oil, winding and OLTC temperatures, load and current per winding, cooling stage, alarms, relay states and identity
- Official
- 113 registers
- Modbus RTU
- Revision 1 · 2026-11-08
- 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
- 0-based
Connection values are defaults: the device may be configured differently.
Map
- Registers
- 14 holding registers, 52 input registers, 6 coils, 41 discrete inputs
- Groups
- 16
- Translation tables
- 8
- Revision
- 1 · 2026-11-08
- Firmware
- 1.03 r1
- Added
- ()
- File
- maps/treetech/tm.mbmap.json · 18 KB · history
- SHA-256
- 96b4a1fefcdca3a8db997b0d04914267c1a4ceb51f0e27e6a88507be3bf41d22
- Manufacturer
- treetech.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 | input 45000 | uint32 ABCD |
Sources and notes
- TM - Monitor de Temperaturas: Mapa de Protocolos de Comunicação (MAP-088) · version 1.01, 2024-07-18 section 2 (Modbus); linked in issue #151
Source: Treetech TM Mapa de Protocolos de Comunicação MAP-088, rev. 1.01
- Modbus RTU on RS-485, FC01-FC06, FC15 and FC16. Addresses are 0-based, as sent on the wire.
- Baud rate is selectable (4800 to 115200 bit/s), 8 data bits, no parity, 1 or 2 stop bits (detected automatically). The document gives no factory default for the baud rate or the address; 9600 and 1 are assumed here.
- The document lists every value as a 16-bit word without stating a scale. Scales here are read from the documented ranges: temperatures and load are whole numbers, the winding current (0 to 655.35 kA) is in hundredths. The secondary current, the 48-bit timestamps and most settings are left out because their scale is not clear.
- Winding 2 and 3 values only apply when the device is set for three windings (input register 1).
- The document was written for firmware 1.03 r1. Written from that document; this map has not been tested on a device.
| Area | Address | Name | Type | Access | Unit | Scale | Description |
|---|---|---|---|---|---|---|---|
| IR | 0 | uint16 | R | ||||
| IR | 1 | uint16 | R | One or three windings | |||
| IR | 10000 | int16 | R | °C | |||
| IR | 10001 | int16 | R | °C | |||
| IR | 10002 | int16 | R | °C | |||
| IR | 10003 | int16 | R | °C | |||
| IR | 10100 | int16 | R | °C | |||
| IR | 10101 | int16 | R | °C | |||
| IR | 10105 | uint16 | R | min | Time left before the oil temperature trip | ||
| IR | 10200 | int16 | R | °C | |||
| IR | 10201 | int16 | R | °C | |||
| IR | 10205 | uint16 | R | min | |||
| IR | 10206 | int16 | R | °C | Final winding-to-oil temperature gradient | ||
| IR | 10207 | uint16 | R | % | |||
| IR | 10208 | uint16 | R | kA | ×0.01 | ||
| IR | 10300 | int16 | R | °C | |||
| IR | 10301 | int16 | R | °C | |||
| IR | 10305 | uint16 | R | min | |||
| IR | 10306 | int16 | R | °C | |||
| IR | 10307 | uint16 | R | % | |||
| IR | 10308 | uint16 | R | kA | ×0.01 | ||
| IR | 10400 | int16 | R | °C | |||
| IR | 10401 | int16 | R | °C | |||
| IR | 10405 | uint16 | R | min | |||
| IR | 10406 | int16 | R | °C | |||
| IR | 10407 | uint16 | R | % | |||
| IR | 10408 | uint16 | R | kA | ×0.01 | ||
| IR | 10500 | uint16 | R | ||||
| IR | 10501 | uint16 | R | s | |||
| DI | 10700 | bool | R | ||||
| DI | 10701 | bool | R | ||||
| DI | 10702 | bool | R | ||||
| DI | 10703 | bool | R | ||||
| IR | 10600 | uint16 | R | min | Time left in the automatic learning of the differential alarms | ||
| IR | 10601 | int16 | R | °C | |||
| IR | 10602 | int16 | R | °C | |||
| IR | 10603 | int16 | R | °C | |||
| IR | 10604 | int16 | R | °C | |||
| IR | 10605 | int16 | R | °C | |||
| IR | 10606 | int16 | R | °C | |||
| IR | 10607 | int16 | R | °C | |||
| IR | 10608 | int16 | R | °C | |||
| IR | 10609 | int16 | R | °C | |||
| DI | 10104 | bool | R | ||||
| DI | 10105 | bool | R | ||||
| DI | 10106 | bool | R | ||||
| DI | 10107 | bool | R | ||||
| DI | 10108 | bool | R | The trip delay is counting | |||
| DI | 10202 | bool | R | ||||
| DI | 10204 | bool | R | ||||
| DI | 10206 | bool | R | ||||
| DI | 10302 | bool | R | ||||
| DI | 10304 | bool | R | ||||
| DI | 10306 | bool | R | ||||
| DI | 10402 | bool | R | ||||
| DI | 10404 | bool | R | ||||
| DI | 10406 | bool | R | ||||
| DI | 10503 | bool | R | ||||
| DI | 10505 | bool | R | ||||
| DI | 10000 | bool | R | ||||
| DI | 10002 | bool | R | ||||
| DI | 10012 | bool | R | ||||
| DI | 10100 | bool | R | The two oil sensors differ by more than the set maximum | |||
| DI | 0 | bool | R | ||||
| DI | 2 | bool | R | ||||
| DI | 4 | bool | R | ||||
| DI | 5 | bool | R | ||||
| DI | 10110 | bool | R | ||||
| DI | 10208 | bool | R | ||||
| DI | 10308 | bool | R | ||||
| DI | 10408 | bool | R | ||||
| DI | 29 | bool | R | ||||
| DI | 21 | bool | R | ||||
| DI | 22 | bool | R | ||||
| DI | 23 | bool | R | ||||
| DI | 24 | bool | R | ||||
| DI | 25 | bool | R | ||||
| DI | 26 | bool | R | ||||
| DI | 27 | bool | R | ||||
| DI | 28 | bool | R | ||||
| CO | 4 | bool | W | Write 1 to clear the alarm memory (part 1) | |||
| CO | 5 | bool | W | Write 1 to reset | |||
| CO | 6 | bool | W | Write 1 to reset | |||
| CO | 7 | bool | W | Write 1 to reset | |||
| CO | 8 | bool | W | Write 1 to reset | |||
| CO | 15 | bool | W | Write 1 to reset | |||
| HR | 10100 | int16 | RW | °C | |||
| HR | 10101 | int16 | RW | °C | |||
| HR | 10102 | uint16 | RW | min | |||
| HR | 10200 | int16 | RW | °C | |||
| HR | 10201 | int16 | RW | °C | |||
| HR | 400 | uint16 | RW | ||||
| HR | 401 | uint16 | RW | ||||
| HR | 402 | uint16 | RW | ||||
| HR | 500 | uint16 | RW | ||||
| HR | 501 | uint16 | RW | ||||
| HR | 502 | uint16 | RW | Applied with the key in register 505 | |||
| HR | 506 | uint16 | RW | ||||
| HR | 507 | uint16 | RW | ||||
| HR | 508 | uint16 | RW | Applied with the key in register 511 |
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).