Treetech TMV Modbus register map
Also covers SDV, SDT
Transformer temperature monitor and tap changer voltage regulator: oil and winding temperatures, ageing, cooling, OLTC differential, tap position, regulation sets, alarms and tap changer maintenance
- Official
- 850 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
- 0-based
Connection values are defaults: the device may be configured differently.
Map
- Registers
- 367 holding registers, 107 input registers, 93 coils, 283 discrete inputs
- Groups
- 36
- Translation tables
- 38
- Revision
- 1 · 2026-11-10
- Firmware
- 1.11 R22
- Added
- ()
- File
- maps/treetech/tmv-sdv-sdt.mbmap.json · 148 KB · history
- SHA-256
- 5fbb6eb33142012bc0aef88b79fe9d2d24f196d018e3c40e5303b23da935a08b
- Manufacturer
- treetech.com.br
Sources and notes
- TMV / SDV / SDT: Mapa de Protocolos de Comunicação (MAP-013, planilha) · version 1.10, 2023-01-03 sheet Full Map (Modbus); linked in issue #155
Source: Treetech TMV / SDV / SDT Mapa de Protocolos de Comunicação MAP-013, rev. 1.10
- Modbus RTU on RS-485, FC01 to 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 is a spreadsheet that lists engineering ranges, not raw ranges. Scales are taken from ranges that have decimals (for example -99.9 to 999.9 is tenths). For the VT voltage, CT current, frequency, power factor and load percentage the range is whole numbers, and the scale is taken from the AVR document, which lists the same registers with larger raw ranges; check these against the display.
- Left out: the SPS node blocks (holding 600 to 2313, discrete 600 to 2310), the relay association coils, the hot-spot factor and 2M exponent settings and the paper moisture settings (their scales are not clear), the 48-bit timestamps, the tap changer rated current (21305) and the squared-current limits in 21404 to 21408.
- Registers 500 to 507 and the bank/transformer blocks only apply when the device is set up as a parallelism concentrator. Winding 2 and 3 values only apply when the device has that many windings (holding 10202).
- The document applies to firmware 1.11 R22. Written from that document; this map has not been tested on a device.
| Area | Address | Name | Type | Access | Unit | Scale | Description |
|---|---|---|---|---|---|---|---|
| HR | 0 | uint16 | RW | ||||
| HR | 1 | uint16 | RW | min | |||
| HR | 3 | uint16 | RW | min | |||
| HR | 4 | uint16 | RW | °C | Oil temperature change that triggers a mass memory record | ||
| HR | 100 | int16 | RW | ×0.1 | Range -99.9 to 999.9, read as tenths | ||
| HR | 101 | int16 | RW | ×0.1 | Range -99.9 to 999.9, read as tenths | ||
| HR | 108 | uint16 | RW | ||||
| HR | 109 | uint16 | RW | ||||
| HR | 102 | int16 | RW | ×0.1 | Range -99.9 to 999.9, read as tenths | ||
| HR | 103 | int16 | RW | ×0.1 | Range -99.9 to 999.9, read as tenths | ||
| HR | 110 | uint16 | RW | ||||
| HR | 111 | uint16 | RW | ||||
| HR | 104 | int16 | RW | ×0.1 | Range -99.9 to 999.9, read as tenths | ||
| HR | 105 | int16 | RW | ×0.1 | Range -99.9 to 999.9, read as tenths | ||
| HR | 112 | uint16 | RW | ||||
| HR | 113 | uint16 | RW | ||||
| HR | 106 | int16 | RW | ×0.1 | Range -99.9 to 999.9, read as tenths | ||
| HR | 107 | int16 | RW | ×0.1 | Range -99.9 to 999.9, read as tenths | ||
| HR | 114 | uint16 | RW | ||||
| HR | 115 | uint16 | RW | ||||
| HR | 200 | uint16 | RW | ||||
| HR | 201 | uint16 | RW | ||||
| HR | 202 | uint16 | RW | ms | |||
| HR | 300 | uint16 | RW | Number of taps the tap changer has | |||
| HR | 301 | uint16 | RW | ||||
| HR | 302 | uint16 | RW | ohm | ×0.1 | Range 4.7 to 20, read as tenths | |
| HR | 303 | uint16 | RW | s | Time the tap changer takes for a complete tap change | ||
| HR | 304 | uint16 | RW | Counted from the start of the measuring range | |||
| HR | 305 | uint16 | RW | ||||
| HR | 306 | uint16 | RW | ||||
| HR | 307 | uint16 | RW | ||||
| HR | 308 | uint16 | RW | ||||
| HR | 309 | uint16 | RW | ||||
| HR | 310 | uint16 | RW | ||||
| HR | 311 | uint16 | RW | ||||
| HR | 312 | uint16 | RW | ||||
| HR | 313 | uint16 | RW | ||||
| HR | 314 | uint16 | RW | ||||
| HR | 315 | uint16 | RW | ||||
| HR | 316 | uint16 | RW | ||||
| HR | 317 | int16 | RW | °C | |||
| HR | 318 | int16 | RW | °C | |||
| HR | 319 | uint16 | RW | ohm | The document gives the range as whole ohms | ||
| HR | 320 | uint16 | RW | ||||
| HR | 400 | uint16 | RW | ||||
| HR | 401 | uint16 | RW | ||||
| HR | 402 | uint16 | RW | ||||
| HR | 500 | uint16 | RW | ||||
| HR | 10000 | uint16 | RW | Sensor used for the oil temperature | |||
| HR | 10001 | uint16 | RW | ||||
| HR | 10002 | uint16 | RW | °C | |||
| HR | 10100 | int16 | RW | °C | |||
| HR | 10101 | int16 | RW | °C | |||
| HR | 10102 | uint16 | RW | min | |||
| HR | 10103 | uint16 | RW | ||||
| HR | 10104 | uint16 | RW | ||||
| HR | 10105 | uint16 | RW | ||||
| HR | 10202 | uint16 | RW | ||||
| HR | 10200 | int16 | RW | °C | |||
| HR | 10201 | int16 | RW | °C | |||
| HR | 10203 | uint16 | RW | s | |||
| HR | 10205 | uint16 | RW | ||||
| HR | 10206 | uint16 | RW | ||||
| HR | 10207 | uint16 | RW | ||||
| HR | 10214 | uint16 | RW | °C | |||
| HR | 10215 | uint16 | RW | °C | |||
| HR | 10216 | uint16 | RW | °C | |||
| HR | 10217 | uint16 | RW | ||||
| HR | 10300 | uint32 ABCD | RW | kA | ×0.01 | Range 0 to 99.99 kA, read as hundredths | |
| HR | 10302 | uint32 ABCD | RW | kA | ×0.01 | Range 0 to 99.99 kA, read as hundredths | |
| HR | 10304 | uint32 ABCD | RW | kA | ×0.01 | Range 0 to 99.99 kA, read as hundredths | |
| HR | 10400 | int16 | RW | °C | |||
| HR | 10401 | int16 | RW | °C | |||
| HR | 10402 | uint16 | RW | s | |||
| HR | 10404 | uint16 | RW | ||||
| HR | 10405 | uint16 | RW | ||||
| HR | 10406 | uint16 | RW | ||||
| HR | 10413 | uint16 | RW | °C | |||
| HR | 10414 | uint16 | RW | °C | |||
| HR | 10415 | uint16 | RW | °C | |||
| HR | 10416 | uint16 | RW | ||||
| HR | 10500 | uint32 ABCD | RW | kA | ×0.01 | Range 0 to 99.99 kA, read as hundredths | |
| HR | 10502 | uint32 ABCD | RW | kA | ×0.01 | Range 0 to 99.99 kA, read as hundredths | |
| HR | 10504 | uint32 ABCD | RW | kA | ×0.01 | Range 0 to 99.99 kA, read as hundredths | |
| HR | 10600 | int16 | RW | °C | |||
| HR | 10601 | int16 | RW | °C | |||
| HR | 10602 | uint16 | RW | s | |||
| HR | 10604 | uint16 | RW | ||||
| HR | 10605 | uint16 | RW | ||||
| HR | 10606 | uint16 | RW | ||||
| HR | 10613 | uint16 | RW | °C | |||
| HR | 10614 | uint16 | RW | °C | |||
| HR | 10615 | uint16 | RW | °C | |||
| HR | 10616 | uint16 | RW | ||||
| HR | 10700 | uint32 ABCD | RW | kA | ×0.01 | Range 0 to 99.99 kA, read as hundredths | |
| HR | 10702 | uint32 ABCD | RW | kA | ×0.01 | Range 0 to 99.99 kA, read as hundredths | |
| HR | 10704 | uint32 ABCD | RW | kA | ×0.01 | Range 0 to 99.99 kA, read as hundredths | |
| HR | 10800 | int16 | RW | °C | |||
| HR | 10801 | int16 | RW | °C | ×0.1 | Range -5.5 to 20, read as tenths | |
| HR | 10802 | int16 | RW | °C | ×0.1 | Range -5.5 to 20, read as tenths |
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).