Treetech DI Modbus register map
Eight-input digital indicator for analog signals: measurements, two alarm relays per input, analog output, scaling and event log
- Official
- 76 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 8N2 · 9600 baud, 8 data bits, none parity, 2 stop bits
- 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
- 76 holding registers
- Groups
- 8
- Translation tables
- 5
- Revision
- 1 · 2026-11-10
- Firmware
- 1.03
- Added
- ()
- File
- maps/treetech/di.mbmap.json · 21 KB · history
- SHA-256
- 47f4f9f349cf5ad54fcc07346d75ca58f13b7322e9053ab2ce8baf49aa1f2304
- Manufacturer
- treetech.com.br
Sources and notes
- Mapa de Registradores DI (Indicador Digital), Protocolo MODBUS-RTU · version 1.00-pt, firmware 1.03, 2010-12-28 section D.1; linked in issue #156
Source: Treetech DI Mapa de Registradores, firmware 1.03
- Optional Modbus RTU interface on RS-485, FC03, FC06 and FC16. All data is in holding registers (the document calls the memory type 40000). The document numbers registers from 1 (PLC addresses), so the addresses are 1-based (address on the wire = number minus 1).
- Baud rate is 9600, 19200 or 38400 bit/s with 8 data bits, no parity and 2 stop bits. The document gives no factory default for the baud rate or the slave address; 9600 and 1 are assumed here.
- The device is an eight-input analog indicator. Measurements, alarm values and scale limits are integers from -9999 to 9999 and the number of decimal places of each input (registers 28, 32, 36 ... 56) moves the decimal point, so they are given as raw values.
- The status bits in registers 1009 and 1010 are numbered 1, 2, 4 and 2, 4, 5 in the document, which does not say whether bit 0 or bit 1 is the first. They are entered as printed: check them on a device.
- Registers 17 and 18 are reserved and not in this map. The document is dated 2010 and the second part is the DNP 3.0 profile, which is not mapped.
- Written from the manufacturer's document for firmware 1.03; not tested on a device.
| Area | Address | Name | Type | Access | Unit | Scale | Description |
|---|---|---|---|---|---|---|---|
| HR | 1 | int16 | RW | Alarm 1 (relay RL1). Raw integer: the number of decimal places set for this input (register 28) moves the decimal point | |||
| HR | 2 | int16 | RW | Alarm 2 (relay RL2). Raw integer: the number of decimal places set for this input (register 28) moves the decimal point | |||
| HR | 3 | int16 | RW | Alarm 1 (relay RL1). Raw integer: the number of decimal places set for this input (register 32) moves the decimal point | |||
| HR | 4 | int16 | RW | Alarm 2 (relay RL2). Raw integer: the number of decimal places set for this input (register 32) moves the decimal point | |||
| HR | 5 | int16 | RW | Alarm 1 (relay RL1). Raw integer: the number of decimal places set for this input (register 36) moves the decimal point | |||
| HR | 6 | int16 | RW | Alarm 2 (relay RL2). Raw integer: the number of decimal places set for this input (register 36) moves the decimal point | |||
| HR | 7 | int16 | RW | Alarm 1 (relay RL1). Raw integer: the number of decimal places set for this input (register 40) moves the decimal point | |||
| HR | 8 | int16 | RW | Alarm 2 (relay RL2). Raw integer: the number of decimal places set for this input (register 40) moves the decimal point | |||
| HR | 9 | int16 | RW | Alarm 1 (relay RL1). Raw integer: the number of decimal places set for this input (register 44) moves the decimal point | |||
| HR | 10 | int16 | RW | Alarm 2 (relay RL2). Raw integer: the number of decimal places set for this input (register 44) moves the decimal point | |||
| HR | 11 | int16 | RW | Alarm 1 (relay RL1). Raw integer: the number of decimal places set for this input (register 48) moves the decimal point | |||
| HR | 12 | int16 | RW | Alarm 2 (relay RL2). Raw integer: the number of decimal places set for this input (register 48) moves the decimal point | |||
| HR | 13 | int16 | RW | Alarm 1 (relay RL1). Raw integer: the number of decimal places set for this input (register 52) moves the decimal point | |||
| HR | 14 | int16 | RW | Alarm 2 (relay RL2). Raw integer: the number of decimal places set for this input (register 52) moves the decimal point | |||
| HR | 15 | int16 | RW | Alarm 1 (relay RL1). Raw integer: the number of decimal places set for this input (register 56) moves the decimal point | |||
| HR | 16 | int16 | RW | Alarm 2 (relay RL2). Raw integer: the number of decimal places set for this input (register 56) moves the decimal point | |||
| HR | 19 | uint16 | RW | ||||
| HR | 20 | uint16 | RW | The document lists the languages as 1 to 4 (Portuguese, English, Spanish, and a fourth that is misspelled) but gives the range as 0 to 3, so the values are not mapped | |||
| HR | 21 | uint16 | RW | ||||
| HR | 22 | uint16 | RW | ||||
| HR | 23 | uint16 | RW | ||||
| HR | 24 | uint16 | RW | ||||
| HR | 25 | uint16 | RW | Same values as the analog output range | |||
| HR | 26 | int16 | RW | Raw integer: the decimal places of this input move the decimal point | |||
| HR | 27 | int16 | RW | Raw integer: the decimal places of this input move the decimal point | |||
| HR | 28 | uint16 | RW | ||||
| HR | 29 | uint16 | RW | Same values as the analog output range | |||
| HR | 30 | int16 | RW | Raw integer: the decimal places of this input move the decimal point | |||
| HR | 31 | int16 | RW | Raw integer: the decimal places of this input move the decimal point | |||
| HR | 32 | uint16 | RW | ||||
| HR | 33 | uint16 | RW | Same values as the analog output range | |||
| HR | 34 | int16 | RW | Raw integer: the decimal places of this input move the decimal point | |||
| HR | 35 | int16 | RW | Raw integer: the decimal places of this input move the decimal point | |||
| HR | 36 | uint16 | RW | ||||
| HR | 37 | uint16 | RW | Same values as the analog output range | |||
| HR | 38 | int16 | RW | Raw integer: the decimal places of this input move the decimal point | |||
| HR | 39 | int16 | RW | Raw integer: the decimal places of this input move the decimal point | |||
| HR | 40 | uint16 | RW | ||||
| HR | 41 | uint16 | RW | Same values as the analog output range | |||
| HR | 42 | int16 | RW | Raw integer: the decimal places of this input move the decimal point | |||
| HR | 43 | int16 | RW | Raw integer: the decimal places of this input move the decimal point | |||
| HR | 44 | uint16 | RW | ||||
| HR | 45 | uint16 | RW | Same values as the analog output range | |||
| HR | 46 | int16 | RW | Raw integer: the decimal places of this input move the decimal point | |||
| HR | 47 | int16 | RW | Raw integer: the decimal places of this input move the decimal point | |||
| HR | 48 | uint16 | RW | ||||
| HR | 49 | uint16 | RW | Same values as the analog output range | |||
| HR | 50 | int16 | RW | Raw integer: the decimal places of this input move the decimal point | |||
| HR | 51 | int16 | RW | Raw integer: the decimal places of this input move the decimal point | |||
| HR | 52 | uint16 | RW | ||||
| HR | 53 | uint16 | RW | Same values as the analog output range | |||
| HR | 54 | int16 | RW | Raw integer: the decimal places of this input move the decimal point | |||
| HR | 55 | int16 | RW | Raw integer: the decimal places of this input move the decimal point | |||
| HR | 56 | uint16 | RW | ||||
| HR | 57 | uint16 | RW | ||||
| HR | 58 | uint16 | RW | ||||
| HR | 59 | uint16 | RW | Year is two digits | |||
| HR | 60 | uint16 | RW | ||||
| HR | 61 | uint16 | RW | ||||
| HR | 62 | uint16 | RW | ||||
| HR | 63 | uint16 | RW | ||||
| HR | 1001 | int16 | R | Range -9999 to 9999. Raw integer: the number of decimal places set for this input (register 28) moves the decimal point | |||
| HR | 1002 | int16 | R | Range -9999 to 9999. Raw integer: the number of decimal places set for this input (register 32) moves the decimal point | |||
| HR | 1003 | int16 | R | Range -9999 to 9999. Raw integer: the number of decimal places set for this input (register 36) moves the decimal point | |||
| HR | 1004 | int16 | R | Range -9999 to 9999. Raw integer: the number of decimal places set for this input (register 40) moves the decimal point | |||
| HR | 1005 | int16 | R | Range -9999 to 9999. Raw integer: the number of decimal places set for this input (register 44) moves the decimal point | |||
| HR | 1006 | int16 | R | Range -9999 to 9999. Raw integer: the number of decimal places set for this input (register 48) moves the decimal point | |||
| HR | 1007 | int16 | R | Range -9999 to 9999. Raw integer: the number of decimal places set for this input (register 52) moves the decimal point | |||
| HR | 1008 | int16 | R | Range -9999 to 9999. Raw integer: the number of decimal places set for this input (register 56) moves the decimal point | |||
| HR | 1009 | bool bit 1 | R | The document prints bit number 1 and does not say whether bits are counted from 0 or 1 | |||
| HR | 1009 | bool bit 2 | R | The document prints bit number 2 and does not say whether bits are counted from 0 or 1 | |||
| HR | 1009 | bool bit 4 | R | The document prints bit number 4 and does not say whether bits are counted from 0 or 1 | |||
| HR | 1010 | bool bit 2 | R | The document prints bit number 2 and does not say whether bits are counted from 0 or 1 | |||
| HR | 1010 | bool bit 4 | R | The document prints bit number 4 and does not say whether bits are counted from 0 or 1 | |||
| HR | 1010 | bool bit 5 | R | The document prints bit number 5 and does not say whether bits are counted from 0 or 1 | |||
| HR | 1011 | 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).