Contemp C702 Modbus register map
Temperature controller: process value, setpoints, control output, alarms, ramp and soak programs, input and communication settings, and option readings
- Official
- 121 registers
- Modbus RTU
- Revision 1 · 2026-11-10
- Identity: firmware
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
- 121 holding registers
- Groups
- 12
- Translation tables
- 3
- Revision
- 1 · 2026-11-10
- Firmware
- Manual version 1.07, revision 9
- Added
- ()
- File
- maps/contemp/c702.mbmap.json · 26 KB · history
- SHA-256
- 918cef372cd63dfe7603e945b0017ab674adb24ec189008f12e4ee8ccf5ab55a
- Manufacturer
- contemp.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 |
|---|---|---|---|---|
| Firmware | Firmware version | holding 125 | uint16 |
Sources and notes
- Manual de Instruções - Controlador de Temperatura C702 · version 1.07 rev. 9 chapter 8 register tables and chapter 15 options; attached to issue #125 as c702v1.07rev.09.pdf
Source: Contemp, Manual de Instruções, Controlador de Temperatura mod. C702, versão 1.07 / revisão 9
- Modbus RTU slave on RS-485. Registers are numbered from 1, as in the document. FC03 and FC04 read, FC06 and FC16 write; the on/off parameters can also be read and written as coils (FC01, FC02, FC05, FC15). The registers are mapped as holding registers here.
- Baud rate 9600, 19200, 38400 or 57600 bit/s, 8 data bits, 1 or 2 stop bits, parity off, odd or even (register 123). The document gives no factory default for the address, baud rate or parity; 9600 8N1 and address 1 are assumed here.
- Values marked u.e. in the document are whole numbers in engineering units, with the decimal places set in register 63 (1234 with one decimal place is 123.4). Values marked x10 are tenths.
- The ramp and soak program segments (registers 250 to 1227), the write-only calibration commands (220 to 227, 232 to 237), the output calibration (238 to 243) and the 16-character tag (registers 126 to 141, one character each) are left out. Several registers are only meaningful when the matching option is fitted.
- Written from the manual; this map has not been tested on a device.
| Area | Address | Name | Type | Access | Unit | Scale | Description |
|---|---|---|---|---|---|---|---|
| HR | 1 | int16 | R | In engineering units, with the decimal places set in register 63 | |||
| HR | 2 | int16 | RW | In engineering units, with the decimal places set in register 63 | |||
| HR | 3 | int16 | RW | % | ×0.1 | Output C1 (0 to 100 %) or C1+C2 (-100 to 100 %); writable in manual mode | |
| HR | 4 | int16 | RW | In engineering units, with the decimal places set in register 63; auxiliary input (PV2) | |||
| HR | 5 | int16 | RW | In engineering units, with the decimal places set in register 63 | |||
| HR | 6 | uint16 | RW | ||||
| HR | 7 | uint16 | RW | ||||
| HR | 8 | uint16 | RW | ||||
| HR | 9 | int16 | RW | In engineering units, with the decimal places set in register 63; -100.0 to 100.0 for a deviation alarm | |||
| HR | 10 | int16 | RW | In engineering units, with the decimal places set in register 63; -100.0 to 100.0 for a deviation alarm | |||
| HR | 11 | int16 | RW | In engineering units, with the decimal places set in register 63; -100.0 to 100.0 for a deviation alarm | |||
| HR | 12 | int16 | RW | In engineering units, with the decimal places set in register 63; -100.0 to 100.0 for a deviation alarm | |||
| HR | 13 | int16 | R | In engineering units, with the decimal places set in register 63 | |||
| HR | 14 | int16 | R | In engineering units, with the decimal places set in register 63 | |||
| HR | 15 | int16 | R | In engineering units, with the decimal places set in register 63 | |||
| HR | 16 | int16 | R | In engineering units, with the decimal places set in register 63 | |||
| HR | 17 | int16 | R | In engineering units, with the decimal places set in register 63 | |||
| HR | 18 | int16 | R | In engineering units, with the decimal places set in register 63 | |||
| HR | 19 | int16 | R | In engineering units, with the decimal places set in register 63 | |||
| HR | 20 | int16 | R | In engineering units, with the decimal places set in register 63 | |||
| HR | 21 | bool bit 0 | R | ||||
| HR | 21 | bool bit 1 | R | ||||
| HR | 21 | bool bit 2 | R | ||||
| HR | 21 | bool bit 3 | R | ||||
| HR | 22 | uint16 | R | Digital input option | |||
| HR | 23 | uint16 | R | Digital input option | |||
| HR | 24 | uint16 | R | Remote setpoint option | |||
| HR | 25 | uint16 | R | A | ×0.1 | Heater break option, 0 to 50.0 A | |
| HR | 26 | uint16 | R | Heater break option | |||
| HR | 27 | uint16 | R | ||||
| HR | 28 | uint16 | R | The document lists 1 as uuuu and 2 as nnnn | |||
| HR | 29 | uint16 | R | Option fitted, as an ASCII code: 0 none, B dual digital input, C auxiliary supply, D auxiliary alarms, E linear output, F remote setpoint, G servo motor control, H auxiliary relay, I auxiliary pulse, J heater break. How 'none' is encoded is not stated | |||
| HR | 30 | uint16 | R | Option fitted, as an ASCII code; same letters as option 1 | |||
| HR | 31 | uint16 | RW | ||||
| HR | 40 | uint16 | RW | ||||
| HR | 41 | uint16 | RW | 101 = continuous | |||
| HR | 42 | uint16 | RW | Segment running | |||
| HR | 43 | uint16 | RW | min | |||
| HR | 44 | uint16 | RW | ||||
| HR | 45 | uint16 | R | ||||
| HR | 46 | bool bit 6 | R | Bit 6: 0 running, 1 finished | |||
| HR | 50 | uint16 | RW | ||||
| HR | 51 | uint16 | RW | The document gives 2 as on.L | |||
| HR | 52 | uint16 | RW | ||||
| HR | 53 | uint16 | RW | 0 = off. In engineering units, with the decimal places set in register 63 | |||
| HR | 54 | uint16 | RW | s | 0 = off | ||
| HR | 55 | uint16 | RW | s | 0 = off | ||
| HR | 56 | uint16 | RW | % | ×0.1 | ||
| HR | 57 | uint16 | RW | In engineering units, with the decimal places set in register 63 | |||
| HR | 58 | uint16 | RW | ×0.1 | |||
| HR | 59 | int16 | RW | In engineering units, with the decimal places set in register 63 | |||
| HR | 60 | uint16 | RW | ||||
| HR | 61 | uint16 | RW | ||||
| HR | 62 | uint16 | RW | ||||
| HR | 63 | uint16 | RW | ||||
| HR | 64 | int16 | RW | ||||
| HR | 65 | int16 | RW | ||||
| HR | 66 | uint16 | RW | s | 0 = off | ||
| HR | 67 | int16 | RW | In engineering units, with the decimal places set in register 63 | |||
| HR | 68 | uint16 | RW | ||||
| HR | 69 | uint16 | RW | Raw code; the meaning depends on the output type fitted (relay, linear or pulse): 0 off, 1 C1, 2 C2, 3 A1 or PV, 4 A2 or SP. See the document's table | |||
| HR | 70 | uint16 | RW | 0 = 0-20 mA, 1 = 4-20 mA, 2 = pulse (for the outputs that allow it) | |||
| HR | 71 | uint16 | RW | Raw code; the meaning depends on the output type fitted (relay, linear or pulse): 0 off, 1 C1, 2 C2, 3 A1 or PV, 4 A2 or SP. See the document's table | |||
| HR | 72 | uint16 | RW | 0 = 0-20 mA, 1 = 4-20 mA, 2 = pulse (for the outputs that allow it) | |||
| HR | 73 | uint16 | RW | Depends on the option fitted: modulating control 0 off or 1 on; auxiliary relay or pulse 0 off, 1 C1, 2 C2; auxiliary alarms 0 off, 1 A3/A4; linear 0 off, 1 PV, 2 SP, 3 C1, 4 C2; heater break 0 off, 1 on | |||
| HR | 74 | uint16 | RW | 0 = 0-20 mA, 1 = 4-20 mA, 2 = pulse (for the outputs that allow it) | |||
| HR | 75 | uint16 | RW | ||||
| HR | 76 | uint16 | RW | The document names the modes oFF, EvEr, P.uP and bAnd | |||
| HR | 77 | uint16 | RW | Seconds per 100 % of output | |||
| HR | 78 | uint16 | RW | s | |||
| HR | 79 | uint16 | RW | % | ×0.1 | ||
| HR | 80 | uint16 | RW | % | ×0.1 | ||
| HR | 82 | uint16 | RW | % | ×0.1 | ||
| HR | 83 | uint16 | RW | % | ×0.1 | ||
| HR | 81 | uint16 | RW | s | |||
| HR | 84 | uint16 | RW | ||||
| HR | 85 | uint16 | RW | ||||
| HR | 86 | int16 | RW | In engineering units, with the decimal places set in register 63; same value as the setpoint in the operation block | |||
| HR | 87 | uint16 | RW | In engineering units, with the decimal places set in register 63 | |||
| HR | 88 | uint16 | RW | s | 0 = off | ||
| HR | 89 | uint16 | RW | s | 0 = off | ||
| HR | 90 | uint16 | RW | ||||
| HR | 91 | uint16 | RW | ||||
| HR | 92 | uint16 | RW | ||||
| HR | 93 | int16 | RW | In engineering units, with the decimal places set in register 63; same value as the setpoint in the operation block | |||
| HR | 94 | uint16 | RW | In engineering units, with the decimal places set in register 63 | |||
| HR | 95 | uint16 | RW | s | 0 = off | ||
| HR | 96 | uint16 | RW | s | 0 = off | ||
| HR | 97 | uint16 | RW | ||||
| HR | 98 | uint16 | RW | ||||
| HR | 99 | uint16 | RW | ||||
| HR | 100 | int16 | RW | In engineering units, with the decimal places set in register 63; same value as the setpoint in the operation block | |||
| HR | 101 | uint16 | RW | In engineering units, with the decimal places set in register 63 | |||
| HR | 102 | uint16 | RW | s | 0 = off | ||
| HR | 103 | uint16 | RW | s | 0 = off | ||
| HR | 104 | uint16 | RW | ||||
| HR | 105 | uint16 | RW | ||||
| HR | 106 | uint16 | RW | ||||
| HR | 107 | int16 | RW | In engineering units, with the decimal places set in register 63; same value as the setpoint in the operation block | |||
| HR | 108 | uint16 | RW | In engineering units, with the decimal places set in register 63 |
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).