Treetech LAP Modbus register map
Lite transformer temperature monitor: up to six sensors, four relays, a digital output and a current loop output, cooling groups and winding ageing
- Official
- 306 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
- 0-based
Connection values are defaults: the device may be configured differently.
Map
- Registers
- 78 holding registers, 45 input registers, 60 coils, 123 discrete inputs
- Groups
- 18
- Translation tables
- 15
- Revision
- 1 · 2026-11-10
- Firmware
- 1.00 r8
- Added
- ()
- File
- maps/treetech/lap.mbmap.json · 50 KB · history
- SHA-256
- e6f7f679dcefcb2cdd666c510fbda147c02044d050d6b0def9c361460ea411a7
- 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
- LAP - Monitor Lite de Temperaturas: Mapa de Protocolos de Comunicação (MAP-085) · version 1.01, 2023-12-15 section 2 (Modbus); linked in issue #152
Source: Treetech LAP Mapa de Protocolos de Comunicação MAP-085, rev. 1.01
- 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 lists every value as a 16-bit word without stating a scale. Temperatures are whole degrees; the remaining life time (0 to 6553.5 years) and the pulse times (0.1 to 999.9 s) are read as tenths from their ranges.
- Left out: the password registers, the first and second alarm and self-diagnostics words (input 0 to 7, the same bits are in the discrete inputs), the 48-bit timestamp, the holding copies of the temperatures (1000 to 1005) and the reset-to-defaults and log reset commands.
- The document was written for firmware 1.00 r8. 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 | 100 | uint16 | RW | s | ×0.1 | Range 0.1 to 999.9 s; the 0.1 scale is read from that range, as the document only lists the range | |
| HR | 101 | uint16 | RW | s | ×0.1 | Range 0 to 999.9 s; the 0.1 scale is read from that range | |
| HR | 102 | uint16 | RW | s | ×0.1 | Range 0.1 to 999.9 s; the 0.1 scale is read from that range, as the document only lists the range | |
| HR | 103 | uint16 | RW | s | ×0.1 | Range 0 to 999.9 s; the 0.1 scale is read from that range | |
| HR | 104 | uint16 | RW | s | ×0.1 | Range 0.1 to 999.9 s; the 0.1 scale is read from that range, as the document only lists the range | |
| HR | 105 | uint16 | RW | s | ×0.1 | Range 0 to 999.9 s; the 0.1 scale is read from that range | |
| HR | 106 | uint16 | RW | s | ×0.1 | Range 0.1 to 999.9 s; the 0.1 scale is read from that range, as the document only lists the range | |
| HR | 107 | uint16 | RW | s | ×0.1 | Range 0 to 999.9 s; the 0.1 scale is read from that range | |
| HR | 108 | uint16 | RW | s | ×0.1 | Range 0.1 to 999.9 s; the 0.1 scale is read from that range, as the document only lists the range | |
| HR | 109 | uint16 | RW | s | ×0.1 | Range 0 to 999.9 s; the 0.1 scale is read from that range | |
| HR | 200 | uint16 | RW | ||||
| HR | 201 | uint16 | RW | ||||
| HR | 202 | int16 | RW | °C | |||
| HR | 203 | int16 | RW | °C | |||
| HR | 204 | uint16 | RW | ||||
| HR | 205 | uint16 | RW | mA | |||
| HR | 400 | uint16 | RW | ||||
| HR | 401 | uint16 | RW | ||||
| HR | 402 | uint16 | RW | ||||
| HR | 403 | uint16 | RW | ||||
| HR | 404 | uint16 | RW | ms | Wait before sending a reply | ||
| HR | 405 | uint16 | RW | ms | Wait after receiving a request | ||
| HR | 500 | uint16 | RW | min | Minimum time between records in the mass memory log | ||
| HR | 501 | uint16 | RW | °C | Temperature change that triggers a new record | ||
| HR | 10000 | uint16 | RW | Number of temperature sensors in use | |||
| HR | 10001 | int16 | RW | °C | |||
| HR | 10002 | int16 | RW | °C | |||
| HR | 10003 | int16 | RW | °C | |||
| HR | 10004 | int16 | RW | °C | |||
| HR | 10005 | int16 | RW | °C | |||
| HR | 10006 | int16 | RW | °C | |||
| HR | 10007 | int16 | RW | °C | |||
| HR | 10008 | int16 | RW | °C | |||
| HR | 10009 | int16 | RW | °C | |||
| HR | 10010 | int16 | RW | °C | |||
| HR | 10011 | int16 | RW | °C | |||
| HR | 10012 | int16 | RW | °C | |||
| HR | 10013 | uint16 | RW | min | |||
| HR | 11000 | int16 | RW | °C | |||
| HR | 11001 | int16 | RW | °C | |||
| HR | 11002 | int16 | RW | °C | |||
| HR | 11003 | int16 | RW | °C | |||
| HR | 11004 | int16 | RW | °C | |||
| HR | 11005 | int16 | RW | °C | |||
| HR | 11006 | int16 | RW | °C | |||
| HR | 11007 | int16 | RW | °C | |||
| HR | 11008 | int16 | RW | °C | |||
| HR | 11009 | int16 | RW | °C | |||
| HR | 11010 | int16 | RW | °C | |||
| HR | 11011 | int16 | RW | °C | |||
| HR | 11012 | uint16 | RW | °C | |||
| HR | 11013 | uint16 | RW | min | |||
| HR | 11014 | uint16 | RW | h | |||
| HR | 11015 | uint16 | RW | min | |||
| HR | 11016 | uint16 | RW | ||||
| HR | 11017 | uint16 | RW | ||||
| HR | 12000 | uint16 | RW | ||||
| HR | 12001 | uint16 | RW | ||||
| HR | 12002 | uint16 | RW | ||||
| HR | 12003 | uint16 | RW | ||||
| HR | 12004 | uint16 | RW | % | |||
| HR | 12005 | uint16 | RW | % | |||
| HR | 12006 | uint16 | RW | % | |||
| HR | 12007 | uint16 | RW | % | |||
| HR | 12008 | uint16 | RW | % | |||
| HR | 12009 | uint16 | RW | % | |||
| HR | 12010 | uint16 | RW | % | |||
| HR | 12011 | uint16 | RW | years | |||
| HR | 12012 | uint16 | RW | h | |||
| HR | 45100 | int16 | RW | ||||
| HR | 45101 | uint16 | RW | ||||
| HR | 45102 | uint16 | RW | ||||
| HR | 45103 | uint16 | RW | ||||
| HR | 45104 | uint16 | RW | ||||
| HR | 45105 | uint16 | RW | ||||
| HR | 45106 | uint16 | RW | ||||
| HR | 45107 | uint16 | RW | ||||
| IR | 10000 | int16 | R | °C | |||
| IR | 10001 | int16 | R | °C | |||
| IR | 10002 | uint16 | R | min | Time left before the shutdown on high temperature | ||
| IR | 10003 | int16 | R | °C | |||
| IR | 10004 | int16 | R | °C | |||
| IR | 10005 | uint16 | R | min | Time left before the shutdown on high temperature | ||
| IR | 10006 | int16 | R | °C | |||
| IR | 10007 | int16 | R | °C | |||
| IR | 10008 | uint16 | R | min | Time left before the shutdown on high temperature | ||
| IR | 10009 | int16 | R | °C | |||
| IR | 10010 | int16 | R | °C | |||
| IR | 10011 | uint16 | R | min | Time left before the shutdown on high temperature | ||
| IR | 10012 | int16 | R | °C | |||
| IR | 10013 | int16 | R | °C | |||
| IR | 10014 | uint16 | R | min | Time left before the shutdown on high temperature | ||
| IR | 10015 | int16 | R | °C | |||
| IR | 10016 | int16 | R | °C | |||
| IR | 10017 | uint16 | R | min | Time left before the shutdown on high temperature | ||
| IR | 12000 | uint16 | R | years | ×0.1 | Range 0 to 6553.5 years | |
| IR | 12001 | uint16 | R | % | |||
| IR | 12002 | uint16 | R | years | ×0.1 | Range 0 to 6553.5 years | |
| IR | 12003 | uint16 | R | % |
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).