Poll 12 temperature controllers from one HMI over Modbus RTU

7 min read · Published November 12, 2026

Yes: an HMI panel set as the Modbus RTU master polls up to 12 temperature controllers on one RS-485 pair, because slave addresses run 1 to 247. The real limit is scan time: at 9600 baud a full 12-controller sweep reading four registers takes about 0.4 s. Match serial settings, assign addresses 1 to 12, daisy-chain with 120 ohm termination at both ends, and bring up controller 1 alone before adding the rest.

Yes. One HMI panel running a Modbus RTU master driver polls 12 temperature controllers on a single RS-485 pair. The protocol gives slaves the addresses 1 to 247, so 12 unique addresses fit with room to spare, and a bus segment carries 32 devices at one unit load each, above your 12 even in the worst case. What actually shapes the design is scan time: at 9600 baud, a full sweep of 12 controllers reading four registers each takes about 0.4 s, so every temperature on screen refreshes at least once per second. This page gives you the settings, the addressing, the wiring, the bring-up order, and the arithmetic behind the 0.4 s figure.

Why 12 controllers fit on one bus

Modbus RTU gives every device on the wire one job. The master sends each request; a slave answers only when the request carries its address. Your HMI panel is the master, and each temperature controller is a slave at its own address.

The assignable slave addresses run from 1 to 247. Address 0 is reserved for broadcast write commands, so no device on the bus carries it as its station number. Twelve addresses is about five percent of the 247.

The electrical limit sits above your count too. A single RS-485 segment takes 32 devices at one unit load each without a repeater, so even if every controller drew a full unit load, 12 fit. On settings, the Modbus over Serial Line specification's default is 9600 baud, 8 data bits, even parity, 1 stop bit. Use it: every device on the bus must run the same settings or the frames arrive as noise.

What you need

  • An HMI panel with a Modbus RTU master driver on its serial port.
  • 12 temperature controllers with Modbus RTU slave mode, and each model's register map from its manual. The usual four values are process value, setpoint, output percent, and alarm status.
  • Two-conductor twisted, shielded cable for the RS-485 pair.
  • Two 120 ohm resistors, one for each end of the trunk.
  • The address-setting procedure from each controller's manual, and a written list of which address belongs to which zone.

If the panel is also going through an enclosure door, size the hole from the cut-out dimensions printed for the panel, not from the screen diagonal; the flush mount cut-out guide shows why the two numbers differ.

Set addresses and settings first

Do this at the bench, one controller at a time, off the shared pair. Many controllers only accept an address change locally, and two devices that power up with the same address will both answer the same request and corrupt each other's frames.

Set the HMI master's port and every controller to the same serial settings:

Setting Value
Baud rate 9600
Data bits 8
Parity Even
Stop bits 1
Slave address 1 through 12, one per controller

Write down which address belongs to which zone before any wire is landed. A valid answer from the wrong unit is the mistake that takes the most commissioning time on this kind of job.

Wire it as a daisy chain

Run the pair from the HMI to controller 1, then controller 1 to controller 2, and so on to controller 12. Avoid star or spur patterns, and keep each drop stub as short as the layout allows; long stubs reflect. Fit one 120 ohm resistor across the pair at the controller on each physical end, the two ends and nothing in between: typical RS-485 twisted pair has a characteristic impedance near 120 ohms, so the resistors swallow reflections instead of bouncing them back down the wire. If the master's manual names biasing resistors on its port, fit them as that manual shows. Land the cable shield at one point, at the master end.

Bring one controller up, then the rest

  1. Connect controller 1 only to the master's port. Point one tag at address 1 and read the process-value register the map gives.
  2. Compare the panel value with the controller's own display: same units, same reading, within the controller's stated accuracy.
  3. If you plan to write setpoints from the panel, test one write now, to a register the map marks writable, with the process in a safe state, and confirm the new value on the controller's display. Safety note: a write to an unconfirmed register can move a setpoint on a running process, so nothing gets written until the map confirms it is writable.
  4. Add controller 2 to the pair, point its tag at address 2, read its process value, compare. Repeat for the remaining ten, one at a time.
  5. Map the remaining tags per controller: setpoint, output percent, alarm status. Check whether the map scales temperature in tenths of a degree and whether values are signed; the tag must match, or 35.0 °C reads as 350.
  6. Set the master's poll rate to 1 s as the starting point for temperature duty; the worked example below shows what the wire can carry.
  7. Run the full bus for a shift and watch the master's diagnostics: zero timeouts, request and response counters advancing for every address.

Example: sweep time for 12 controllers at 9600 baud

Inputs. 12 controllers, your case. Four registers read per controller with function code 03, the read-holding-registers function: process value, setpoint, output percent, alarm status; substitute your map's count if it differs. The frame sizes come from the RTU message structure: a four-register read request is 8 bytes (slave address, function code, start register, register count, CRC), and the response is 13 bytes (address, function code, byte count, 8 data bytes, CRC). The bus runs at 9600 bits/s with 11 bits per RTU character: a start bit, 8 data bits, and either a parity bit plus one stop bit or two stop bits when parity is off. RTU requires 3.5 character times of silence between frames; the master waits one before it may send and the slave one before it may answer, so count two gaps per transaction. Why the gap exists: why Modbus RTU needs a 3.5 character gap timer.

The rule. Time on the wire equals bits divided by bits per second. One transaction takes the request time plus the response time plus two gaps, and the sweep takes 12 transactions.

The arithmetic. One character: 11 bits / 9600 bits/s = 1.146 ms. Request: 8 x 1.146 = 9.2 ms. Response: 13 x 1.146 = 14.9 ms. Gaps: 2 x 3.5 x 1.146 = 8.0 ms. One controller: 9.2 + 14.9 + 8.0 = 32.1 ms. Full sweep: 12 x 32.1 ms = 385 ms, about 0.4 s.

Result and decision. At a 1 s poll rate, the wire carries the whole sweep in 0.4 s and idles the rest of the second, so every value on screen is under 1 s old. Temperature loops move over seconds to minutes, so 9600 baud is plenty for this job. The threshold to act on: keep the full sweep under about 1 s. Register count moves the number: each extra register per controller adds 2 data bytes, 2 x 1.146 = 2.3 ms, about 28 ms across the 12. If a future expansion pushes the sweep past 1 s, move the whole bus to 19200 baud, which halves every number above to a 0.2 s sweep, before adding hardware.

When a controller does not answer

  • One address times out while the rest answer: that controller's drop, its address set wrong at the device, or its serial settings differing from the bus. The full check sequence for no-reply and address errors: Modbus RTU master no reply and address errors: fix both.
  • All twelve time out: the pair is swapped at the master (two-wire RS-485 conductors are labelled D0 and D1 in controller manuals), a master port setting is off, or the trunk is broken.
  • An answer arrives but the value is nonsense: a register offset between the panel's driver and the map, or a data-format mismatch. The offset case, worked through: Modbus register address offset between HMI and AC drive.
  • Timeouts that move from address to address: check termination at both ends and that the master's frame timing respects the 3.5-character gap.

How to check it worked

Three checks close the job. First, diagnostics: the master's per-address counters advance and the timeout count stays at zero across a shift. Second, values: spot-check three controllers against their local displays; the panel reads the same temperature within the controller's stated accuracy. Third, timing: all twelve values refresh inside 1 s, the sweep figure from the example. If any of the three fails, work down the list above from wiring to mapping.

The decided setup

Keep the HMI as the bus's only master, and leave notices, counts and dashboards to a separate shop-floor display on its own power and network, off the control wire.

Recommendation: Run the bus at 9600 baud, 8 data bits, even parity, 1 stop bit. Assign addresses 1 through 12 in zone order and keep the address list taped inside the panel door. Daisy-chain the twisted pair and fit 120 ohm termination at each physical end. Read four registers per controller with function code 03 at a 1 s poll rate, and bring up controller 1 alone before adding the rest one at a time. If the sweep ever passes about 1 s, move the bus to 19200 baud first, and add a repeater only when the baud change cannot carry the load.

Questions

Does the HMI have to be the Modbus RTU master?

For this arrangement, yes. The master starts every transaction and each controller answers only when it is polled, so the roles are one master and slaves at addresses 1 to 247. Put a second master on the same pair and two devices can drive the wire at once; frames collide, and every controller starts timing out. If a second panel needs the same data, give it its own port and wire, or add a gateway that serves it from the existing bus.

Can the same HMI write setpoints to the 12 controllers?

Yes, with function code 06 for a single register or 16 for several, sent to a register the controller's manual marks writable. Check scaling first: many controllers carry temperature in tenths of a degree, so a written value of 350 sets 35.0 °C. Do the first write to one controller with the process in a safe state, then confirm the new value on the controller's own display before letting the panel write to the rest.

What changes if I need more than 12 controllers, or a longer cable?

Addresses are not the limit; the segment is. One RS-485 segment takes 32 unit loads without a repeater, and many modern controllers present a fraction of a unit load, so each datasheet states how many fit electrically. Distance and count beyond one segment are solved the same way: an RS-485 repeater splits the wire into segments that each stay inside the limit, and the master still sees one logical bus.

Planning information, not legal or engineering advice. Rules differ by place: check codes and permits with your local authority and your licensed trades.

Keep reading

Build your signAsk for a quote