Therma TH 9000 Modbus register map
Also covers TH9000
Thyristor power controller: status and faults, phase currents, input and output voltage, power, energy, load resistance, control settings, fault log and clock
- Official
- 44 registers
- Modbus RTU
- Revision 1 · 2026-11-08
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
- 44 holding registers
- Groups
- 7
- Translation tables
- 1
- Revision
- 1 · 2026-11-08
- Added
- ()
- File
- maps/therma/th-9000.mbmap.json · 9 KB · history
- SHA-256
- abd0830b034aac42f679a8723a34c7f883ecac29da17b9c056b0ce59bd7d28d3
- Manufacturer
- therma.com.br
Sources and notes
- Manual de Operação - Controladores de Potência Microprocessados TH 9000 · version 12ª edição, 2026-01-08 chapter Comunicação Serial RS 485 - Modbus RTU; attached to issue #123
Source: Therma Manual de Operação, Controladores de Potência Microprocessados TH 9000, 12th edition (2026-01-08)
- Modbus RTU on the drive's RS-485 port (terminals 18-20). Registers are numbered from 1, as in the manual (40001 is register 1).
- Factory settings: address 1 (1 to 63), 9600 bit/s, no parity. The manual does not give the stop bits; 1 is assumed. The optional operator panel (IHM) has its own address and serial settings.
- The energy counter is two words, low word first (40013 low, 40014 high).
- After writing register 36 or 34/35, the date and time (and the fault code) can be read from registers 38-44. To set the clock, write registers 39-44 and then register 37.
- Written from the manual; this map has not been tested on a device.
| Area | Address | Name | Type | Access | Unit | Scale | Description |
|---|---|---|---|---|---|---|---|
| HR | 1 | uint16 | R | ||||
| HR | 2 | uint16 | R | A | |||
| HR | 3 | uint16 | R | ||||
| HR | 4 | uint16 | R | ||||
| HR | 5 | uint16 | R | ||||
| HR | 6 | uint16 | R | % | |||
| HR | 7 | uint16 | R | A | |||
| HR | 8 | uint16 | R | A | |||
| HR | 9 | uint16 | R | A | |||
| HR | 10 | uint16 | R | V | |||
| HR | 11 | uint16 | R | V | |||
| HR | 12 | uint16 | R | kW | |||
| HR | 13 | uint32 CDAB | R | kWh | Low word first | ||
| HR | 45 | uint16 | R | Ω | ×0.001 | Load voltage / load current; 65535 when the current is 0 | |
| HR | 46 | uint16 | R | Ω | ×0.001 | Load voltage / load current; 65535 when the current is 0 | |
| HR | 47 | uint16 | R | Ω | ×0.001 | Load voltage / load current; 65535 when the current is 0 | |
| HR | 17 | uint16 | W | Write 0 or 1 to reset | |||
| HR | 32 | uint16 | W | Write 0 or 1 to reset the kWh reading | |||
| HR | 18 | uint16 | RW | ||||
| HR | 19 | uint16 | RW | ||||
| HR | 20 | uint16 | RW | ||||
| HR | 21 | uint16 | RW | ||||
| HR | 22 | uint16 | RW | ||||
| HR | 23 | uint16 | RW | s | |||
| HR | 24 | uint16 | RW | % | Percent of the rated current | ||
| HR | 25 | uint16 | RW | % | Percent of the rated current | ||
| HR | 26 | uint16 | RW | % | Percent of the rated current | ||
| HR | 27 | uint16 | RW | % | Percent of the rated current | ||
| HR | 28 | uint16 | RW | % | Control value when the control signal is Modbus, in percent of the rated current | ||
| HR | 29 | uint16 | RW | ||||
| HR | 30 | uint16 | RW | ||||
| HR | 31 | uint16 | RW | ||||
| HR | 33 | uint16 | W | Write 0 or 1; the record is then in registers 38-44 | |||
| HR | 34 | uint16 | W | Write 0 or 1 | |||
| HR | 35 | uint16 | W | Write 0 or 1 | |||
| HR | 38 | uint16 | R | ||||
| HR | 36 | uint16 | W | Write 0 or 1 to load the drive's date and time into registers 39-44 | |||
| HR | 37 | uint16 | W | Write 0 or 1 to set the drive's clock from registers 39-44 | |||
| HR | 39 | uint16 | RW | ||||
| HR | 40 | uint16 | RW | ||||
| HR | 41 | uint16 | RW | +1900 | |||
| HR | 42 | uint16 | RW | ||||
| HR | 43 | uint16 | RW | ||||
| HR | 44 | 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).