Eurotherm 3216 Modbus register map

Compact PID temperature controller in the Eurotherm 3200 series with thermocouple, RTD and millivolt inputs, up to four alarms and an optional EIA232 or EIA485 Modbus RTU port. The user manual lists each parameter with its decimal Modbus address and shares the map across the 3216, 3208, 32h8 and 3204.

Protocol
Modbus RTU (EIA232 or EIA485)
Defaults
Communications address defaults to 1 (range 1 to 254), baud rate 9600 and parity none. Up to 33 instruments should be connected to a single EIA232 link.
Addresses in the manual
0-based protocol addresses, as sent on the wire
32 and 64-bit values
Not stated in the manual
Registers listed
76
Checked against
HA028651 Issue 13.0, January 2014

Address base. Section 15.6 (p. 94) lists a decimal Modbus address for each parameter, for example PV at 1 and remote setpoint at 26. The retransmission parameter REG.AD (p. 100) tells the master which register address in the slaves to write and gives 26 as the remote setpoint address, which indicates the printed address is used directly in the frame. The manual does not show a sample telegram, so this reading is inferred from that entry. Address 1 in the manual is address 1 on the wire.

Word order. Values are single 16-bit signed integers (scaled integers for decimals). The manual mentions optional native 32-bit float and time formats in the 2000 series communications handbook, which is not covered here. The address list has no access column: R is used where the text says read only or the item is a measured value or status, and other items are marked RW.

Modbus Poll and the Modbus protocol itself count from 0. The "Wire address" column is the number to type into Modbus Poll.

Downloads

The register table has every column on this page. The blocks file imports into Modbus Poll. The template JSON holds the same blocks plus unit, scale and access for scripts.

Registers

76 registers
Manual Wire Register Type Regs Unit Scale Access Area
1 1 Process value (temperature) inputPV_IN · Scaled integer: the value times 10 to the power of the decimal resolution (for example 123.5 is sent as 1235). Resolution follows the decimal point setting (address 525). int16 1 1 R Holding (FC03)
2 2 Target setpointTG_SP · Scaled integer: the value times 10 to the power of the decimal resolution (for example 123.5 is sent as 1235). Resolution follows the decimal point setting (address 525). Do not write continuously changing values here; the manual warns about the limited EEPROM write cycles. int16 1 1 RW Holding (FC03)
3 3 Manual output valueMAN_OP · Scaled integer: the value times 10 to the power of the decimal resolution (for example 123.5 is sent as 1235). Resolution follows the decimal point setting (address 525). int16 1 1 RW Holding (FC03)
4 4 Working outputWRK_OP · Scaled integer: the value times 10 to the power of the decimal resolution (for example 123.5 is sent as 1235). Resolution follows the decimal point setting (address 525). int16 1 1 R Holding (FC03)
5 5 Working setpointWKG_SP · Scaled integer: the value times 10 to the power of the decimal resolution (for example 123.5 is sent as 1235). Resolution follows the decimal point setting (address 525). Read only. int16 1 1 R Holding (FC03)
6 6 Proportional bandPB · Scaled integer: the value times 10 to the power of the decimal resolution (for example 123.5 is sent as 1235). Resolution follows the decimal point setting (address 525). int16 1 1 RW Holding (FC03)
7 7 Control actionCTRL_A · 0 reverse acting, 1 direct acting. uint16 1 1 RW Holding (FC03)
8 8 Integral timeTi · 0 means no integral action. int16 1 1 RW Holding (FC03)
9 9 Derivative timeTd · 0 means no derivative action. int16 1 1 RW Holding (FC03)
11 11 Input range low limitRNG_LO · Scaled integer: the value times 10 to the power of the decimal resolution (for example 123.5 is sent as 1235). Resolution follows the decimal point setting (address 525). int16 1 1 RW Holding (FC03)
12 12 Input range high limitRNG_HI · Scaled integer: the value times 10 to the power of the decimal resolution (for example 123.5 is sent as 1235). Resolution follows the decimal point setting (address 525). int16 1 1 RW Holding (FC03)
13 13 Alarm 1 thresholdA1_Threshold · Scaled integer: the value times 10 to the power of the decimal resolution (for example 123.5 is sent as 1235). Resolution follows the decimal point setting (address 525). int16 1 1 RW Holding (FC03)
14 14 Alarm 2 thresholdA2_Threshold · Scaled integer: the value times 10 to the power of the decimal resolution (for example 123.5 is sent as 1235). Resolution follows the decimal point setting (address 525). int16 1 1 RW Holding (FC03)
15 15 Active setpoint selectSP_SEL · 0 setpoint 1, 1 setpoint 2. uint16 1 1 RW Holding (FC03)
24 24 Setpoint 1SP1 · Scaled integer: the value times 10 to the power of the decimal resolution (for example 123.5 is sent as 1235). Resolution follows the decimal point setting (address 525). Avoid continuous writes. int16 1 1 RW Holding (FC03)
25 25 Setpoint 2SP2 · Scaled integer: the value times 10 to the power of the decimal resolution (for example 123.5 is sent as 1235). Resolution follows the decimal point setting (address 525). Avoid continuous writes. int16 1 1 RW Holding (FC03)
26 26 Remote (comms) setpointRm_SP · Used as the setpoint when remote setpoint is selected and a value arrived within about 5 seconds. Not stored in non-volatile memory, so it can be written continuously. int16 1 1 RW Holding (FC03)
27 27 Local trim added to remote setpointLOC_t int16 1 1 RW Holding (FC03)
30 30 Output high limitOP_HI int16 1 1 RW Holding (FC03)
31 31 Output low limitOP_LO int16 1 1 RW Holding (FC03)
35 35 Setpoint rate limitSP_RAT · 0 means no rate limit. int16 1 1 RW Holding (FC03)
39 39 Calculated error (PV minus SP)P_Err · Scaled integer: the value times 10 to the power of the decimal resolution (for example 123.5 is sent as 1235). Resolution follows the decimal point setting (address 525). int16 1 1 R Holding (FC03)
75 75 Instrument status bitmapStAt · Bit 0 to 3 alarm 1 to 4 status, 4 auto/manual, 5 sensor break, 6 loop break, 7 CT low load current, 8 CT high leakage current, 9 program end, 10 PV over-range, 11 CT overcurrent, 12 new alarm, 13 timer or ramp running, 14 remote SP fail, 15 auto-tune. 1 means active. bitfield16 1 1 R Holding (FC03)
76 76 Inverted instrument status bitmapStAt_Inverted · Bitwise inverse of the status word at address 75. bitfield16 1 1 R Holding (FC03)
79 79 Load leakage currentLL_AMP int16 1 1 R Holding (FC03)
80 80 Load ON currentLD_AMP int16 1 1 R Holding (FC03)
81 81 Alarm 3 thresholdA3_Threshold · Scaled integer: the value times 10 to the power of the decimal resolution (for example 123.5 is sent as 1235). Resolution follows the decimal point setting (address 525). int16 1 1 RW Holding (FC03)
82 82 Alarm 4 thresholdA4_Threshold · Scaled integer: the value times 10 to the power of the decimal resolution (for example 123.5 is sent as 1235). Resolution follows the decimal point setting (address 525). int16 1 1 RW Holding (FC03)
83 83 Loop break timeLBT int16 1 1 RW Holding (FC03)
87 87 Digital inputs status bitmapDi_IP · Bit 0 logic input 1A, bit 1 logic input LA, bit 2 logic input LB, bit 7 power failed since last alarm acknowledge. 1 means closed. bitfield16 1 1 R Holding (FC03)
101 101 Input filter timeFILT_T int16 1 1 RW Holding (FC03)
103 103 Calculated rate of change of PVRC_PV · Engineering units per minute. int16 1 1 R Holding (FC03)
106 106 Home display selectionHome · 0 standard PV and SP display; other options 1 to 10 in the manual. uint16 1 1 RW Holding (FC03)
107 107 Instrument version numberVersionNumber · Read as hex, for example 0111 hex is version 1.11. uint16 1 1 R Holding (FC03)
111 111 Setpoint high limitSP_HI · Scaled integer: the value times 10 to the power of the decimal resolution (for example 123.5 is sent as 1235). Resolution follows the decimal point setting (address 525). int16 1 1 RW Holding (FC03)
112 112 Setpoint low limitSP_LO · Scaled integer: the value times 10 to the power of the decimal resolution (for example 123.5 is sent as 1235). Resolution follows the decimal point setting (address 525). int16 1 1 RW Holding (FC03)
122 122 Instrument type codeInstrumentTypeCode uint16 1 1 R Holding (FC03)
131 131 Instrument comms addressADDR · 1 to 254. Default 1. uint16 1 1 RW Holding (FC03)
141 141 PV offsetPV_OFS · Scaled integer: the value times 10 to the power of the decimal resolution (for example 123.5 is sent as 1235). Resolution follows the decimal point setting (address 525). int16 1 1 RW Holding (FC03)
199 199 Instrument modeIM · 0 operating, 1 standby, 2 configuration mode. uint16 1 1 RW Holding (FC03)
202 202 Input value in millivoltsMV_IN int16 1 1 R Holding (FC03)
203 203 Comms PV valuePV_CM · Writable process value used when the linearisation type is Comms. Write at least every 5 seconds if sensor break is on. int16 1 1 RW Holding (FC03)
215 215 CJC temperatureCJC_IN · Scaled integer: the value times 10 to the power of the decimal resolution (for example 123.5 is sent as 1235). Resolution follows the decimal point setting (address 525). int16 1 1 R Holding (FC03)
258 258 Sensor break statusSBR · 0 off, 1 active. uint16 1 1 R Holding (FC03)
260 260 New alarm statusNEW_AL · 0 off, 1 active. uint16 1 1 R Holding (FC03)
263 263 Loop break statusLBR · 0 off, 1 active. uint16 1 1 R Holding (FC03)
270 270 Auto-tune enableA_TUNE · 0 off, 1 enabled. uint16 1 1 RW Holding (FC03)
273 273 Loop mode auto or manualA_M · 0 auto, 1 manual. uint16 1 1 RW Holding (FC03)
274 274 Acknowledge all alarmsAc_All · Write 1 to acknowledge. uint16 1 1 RW Holding (FC03)
276 276 Local or remote (comms) setpoint selectL_R uint16 1 1 RW Holding (FC03)
294 294 Alarm 1 statusA1_STS · 0 off, 1 active. uint16 1 1 R Holding (FC03)
295 295 Alarm 2 statusA2_STS · 0 off, 1 active. uint16 1 1 R Holding (FC03)
296 296 Alarm 3 statusA3_STS · 0 off, 1 active. uint16 1 1 R Holding (FC03)
297 297 Alarm 4 statusA4_STS · 0 off, 1 active. uint16 1 1 R Holding (FC03)
313 313 Recipe to recallREC_NO uint16 1 1 RW Holding (FC03)
314 314 Recipe to saveStOrE uint16 1 1 RW Holding (FC03)
320 320 Timer type configurationTM_CFG · 0 none, 1 dwell, 2 delay, 3 soft start, 10 programmer (programmer option only). uint16 1 1 RW Holding (FC03)
324 324 Requested timer durationDWELL int16 1 1 RW Holding (FC03)
325 325 Elapsed timeT_ELAP int16 1 1 R Holding (FC03)
326 326 Time remainingT_REMN int16 1 1 R Holding (FC03)
331 331 Event outputsEVENT uint16 1 1 RW Holding (FC03)
512 512 Heat or channel 1 control typeCTRL_H · 0 off, 1 on/off, 2 PID, 3 motor valve position. uint16 1 1 RW Holding (FC03)
513 513 Cool or channel 2 control typeCTRL_C · 0 off, 1 on/off, 2 PID. uint16 1 1 RW Holding (FC03)
516 516 Display unitsUNITS_Display · 0 degC, 1 degF, 2 Kelvin, 3 none, 4 percent. uint16 1 1 RW Holding (FC03)
525 525 Decimal point positionDEC_P · 0 no decimals, 1 one decimal place, 2 two decimal places. uint16 1 1 RW Holding (FC03)
536 536 Alarm 1 typeA1_TYP · 0 off, 1 absolute high, 2 absolute low, 3 deviation high, 4 deviation low, 5 deviation band. uint16 1 1 RW Holding (FC03)
537 537 Alarm 2 typeA2_TYP · Same codes as alarm 1 type. uint16 1 1 RW Holding (FC03)
540 540 Alarm 1 latching modeA1_LAT · 0 none, 1 latch with automatic reset, 2 latch with manual reset. uint16 1 1 RW Holding (FC03)
551 551 Digital outputs status bitmapDi_OP · Bit 0 output 1A, bit 1 output 2A, bit 2 output 3, bit 3 output 4/AA. Only outputs set to function none are affected by writes. bitfield16 1 1 RW Holding (FC03)
578 578 Sensor break typeSb_tyP · 0 none, 1 non-latching, 2 latching. uint16 1 1 RW Holding (FC03)
12290 12290 Input sensor typeIN_TYP · 0 J, 1 K, 2 L, 3 R, 4 B, 5 N, 6 T, 7 S thermocouples, 8 RTD, 9 millivolt, 10 comms input, 11 custom. uint16 1 1 RW Holding (FC03)
12548 12548 Baud rate codeBAUD · 0 is 9600, 1 is 19200, 2 is 4800, 3 is 2400, 4 is 1200. Default 9600. uint16 1 1 RW Holding (FC03)
12549 12549 Parity settingPRTY · 0 none, 1 even, 2 odd. Default none. uint16 1 1 RW Holding (FC03)
12550 12550 RX/TX delayDELAY · 0 no delay, 1 delay applied. uint16 1 1 RW Holding (FC03)
12551 12551 Comms retransmission variableRETRN · 0 off, 1 working setpoint, 2 PV, 3 output power, 4 error. uint16 1 1 RW Holding (FC03)
12552 12552 Retransmission target register addressREG_AD · Register address in the slave units that receives the retransmitted value, for example 26. uint16 1 1 RW Holding (FC03)

Scale is the number to multiply the raw value by to get the unit.

Open in Modbus Poll

  1. Download the Modbus Poll blocks file.
  2. Open Modbus Poll, connect to the device and set its unit ID. The manual does not state the word order for 32-bit values. Check one known value (a voltage or a counter) and switch the setting if it reads wrong.
  3. In the blocks panel on the right, click Import CSV and pick the file. CSV import is a Pro feature. Without Pro, Modbus Poll polls the first 20 values of your blocks.
  4. The wire addresses are already in the file, so there is no 0-based or 1-based conversion to do.

Once the values look right, export the tag list to Ignition, Kepware, Node-RED, Home Assistant or Voltrus SCADA.

Source and accuracy

Manufacturer document: 3216, 3208, 3204 User Manual, 3200 Range Process Controller (d3dmuhgh3oppig.cloudfront.net)

HA028651 Issue 13.0, January 2014, p. 89-100. Read on 2026-10-24.

Addresses, types, units and scale are taken from the document above. Names and descriptions are written by Voltrus. Firmware versions can differ, so confirm a value on your own device before you rely on it.

Found a mistake? Report it by email with the register address and the manual page.

Other temperature controllers

All register maps · Modbus addressing explained