MBMap Registry
  1. Devices
  2. Therma
  3. TH 9XMP

Therma TH 9XMP Modbus register map

Also covers TH 90MP, TH 91MP, TH 92MP, TH 93MP

Programmable modulating controller (ramps and soaks): process value, set points, alarms, PID settings, program execution, calibration values and identity registers, over Modbus RTU

  • Official
  • 86 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
1-based · wire address = address − 1

Connection values are defaults: the device may be configured differently.

Map

Registers
86 holding registers
Groups
9
Translation tables
2
Revision
1 · 2026-11-10
Added
()
File
maps/therma/th9xmp.mbmap.json · 17 KB · history
SHA-256
7b27be48b9ac366c2dd6df8a469b54abf7eb60da2889fdf6de0e94592cffa703
Manufacturer
therma.com.br

Sources and notes

  • Controladores Microprocessados Modulantes Programáveis, TH 90MP / 91MP / 92MP / 93MP (Manual de Operação) · version 6ª edição (agosto de 2019), 2019-08
    linked in issue #122; chapter Protocolo de Comunicação MODBUS RTU, pages 38 to 42

Source: Controladores Microprocessados Modulantes Programáveis TH 90MP, TH 91MP, TH 92MP, TH 93MP (Manual de Operação), 6ª edição (agosto de 2019)

  • Modbus RTU on the optional RS-485 port. The manual lists registers 40001 to 40105 (function codes 03, 06 and 16, no broadcast); they are numbered from 1 here, so address 40001 is register 1 and address_base is 1. Reading a reserved address returns 0xFFFF. The manual does not name the factory baud rate, parity or controller number: 9600, no parity and 1 are placeholders. Options are 2400, 4800 or 9600 bit/s, no, odd or even parity, 8 data bits and 1 stop bit.
  • The register table in this edition skips addresses 40025 to 40046 (the page that should list them repeats the first page), so those registers are not included (RP-series controllers have registers there, but the layout may differ).
  • Values are 16-bit integers, signed where the range includes negative numbers. The manual does not say how decimals are sent: check against the display before applying a scale.
  • Packed BCD registers (CFPR, SEGP and AL xy) are read in hexadecimal. The relay bit order of register 40007 differs from the TH 9XRP manual. The parity codes (0 = none, 1 = odd, 2 = even) are as printed in this manual, whose label for 0 reads NOME (probably none); the TH 9XRP manual lists even before odd.
  • Registers 40071 to 40088 act on the segment chosen with PTN and SEGC, and apply only to the programmable series. Registers 40092 to 40099 are calibration values; do not write them without the manual's calibration procedure.
  • The software version, model number (A and B) and serial number (A, B and C) are plain 16-bit numbers; the manual does not say how they are formed. Written from the manufacturer's manual; not tested on a device.
AreaAddressNameTypeAccessUnitScaleDescription
HR 1 int16 R Measured value; decimals depend on the input type (see notes)
HR 2 int16 R Active set point, between LSPL and USPL
HR 3 int16 RW Alarm 1 set point; the allowed range depends on the alarm mode ALD1
HR 4 int16 RW Alarm 2 set point; the allowed range depends on the alarm mode ALD2
HR 5 int16 RW Alarm 3 set point; the allowed range depends on the alarm mode ALD3
HR 6 uint16 RW 0 to 9999
HR 7 bool bit 0 R
HR 7 bool bit 1 R
HR 7 bool bit 2 R
HR 7 bool bit 3 R
HR 7 bool bit 4 R
HR 7 bool bit 5 R
HR 7 bool bit 6 R
HR 7 bool bit 7 R
HR 8 uint16 R
HR 9 uint16 R % Output level, 0 to 100 %
HR 10 uint16 RW Write 1 to store the settings written over Modbus; 0 = do not save
HR 11 uint16 R Remote set point, or the current set point of a programmable controller
HR 12 uint16 R Minutes left on a timed alarm (ALD = 9)
HR 13 uint16 R Minutes left on a timed alarm (ALD = 9)
HR 14 uint16 R Minutes left on a timed alarm (ALD = 9)
HR 15 uint16 RW
HR 16 uint16 RW 0 to 100
HR 17 uint16 RW
HR 18 uint16 RW 0 to 3600
HR 19 uint16 RW 0 to 900
HR 20 uint16 RW
HR 21 uint16 RW 5 to 500
HR 22 uint16 RW 0 to 10
HR 23 uint16 RW 0 to 2000
HR 24 uint16 RW 0 to 3600
HR 47 uint16 RW
HR 48 int16 RW Between LSPL and USPL
HR 51 uint16 RW 0 to 5
HR 52 int16 RW -1999 to +9999
HR 53 int16 RW -1999 to +9999
HR 54 uint16 R Ambient temperature reading, 0 to 50
HR 55 uint16 RW 0 to 100
HR 56 uint16 RW Start of the analog input signal 1 (hexadecimal, see the manual's calibration mode)
HR 57 uint16 RW End of the analog input signal 1 (hexadecimal, see the manual's calibration mode)
HR 58 uint16 RW Start of the analog input signal 2 (remote) (hexadecimal, see the manual's calibration mode)
HR 59 uint16 RW End of the analog input signal 2 (remote) (hexadecimal, see the manual's calibration mode)
HR 60 uint16 RW s Closed-to-open time of the motor, 5 to 200 s
HR 61 uint16 RW Start of control analog output 1, 0 to 100
HR 62 uint16 RW End of control analog output 1, 0 to 100
HR 63 uint16 RW Start of control analog output 2, 0 to 100
HR 64 uint16 RW End of control analog output 2, 0 to 100
HR 65 uint16 RW 0 to 4095
HR 66 uint16 RW 0 to 4095
HR 67 uint16 RW
HR 68 uint16 RW
HR 71 uint16 RW Packed BCD, read as hex; see the manual
HR 72 uint16 RW 1 to 8
HR 73 uint16 R
HR 74 uint16 R 0 to 8
HR 75 uint16 RW 0 to 9999
HR 76 uint16 RW
HR 77 uint16 RW
HR 78 uint16 RW Packed BCD, read as hex; low digits 1 to 8
HR 79 uint16 RW
HR 80 uint16 RW
HR 81 uint16 RW 1 to 8
HR 82 uint16 RW 1 to 8
HR 83 int16 RW Set point of the selected segment
HR 84 uint16 RW 0 to 9999
HR 85 uint16 RW 0 to 100 %
HR 86 uint16 RW 5 to 9999
HR 87 uint16 RW Packed BCD, read as hex: one digit per alarm relay (A = AL1, B = AL2, C = AL3, D = 0)
HR 88 uint16 RW
HR 89 uint16 RW 1 to 127; changing it ends communication on the current address
HR 90 uint16 RW
HR 91 uint16 RW
HR 92 uint16 RW Calibration value; see the manual's calibration mode
HR 93 uint16 RW Calibration value; see the manual's calibration mode
HR 94 uint16 RW Calibration value; see the manual's calibration mode
HR 95 uint16 RW Calibration value; see the manual's calibration mode
HR 96 uint16 RW Calibration value; see the manual's calibration mode
HR 97 uint16 RW Calibration value; see the manual's calibration mode
HR 98 uint16 R Hexadecimal, read only
HR 99 uint16 R Hexadecimal, read only
HR 100 uint16 R Plain 16-bit number; how it maps to a version string is not stated
HR 101 uint16 R First part of the model number
HR 102 uint16 R Second part of the model number
HR 103 uint16 R First part of the serial number
HR 104 uint16 R Second part of the serial number
HR 105 uint16 R Third part of the serial number

Help improve this map