How Fast Should You Poll Modbus? Scan Rate, Device Limits, and Network Load
Modbus is a pull protocol: the master asks, the slave answers, and nothing moves until someone asks. That makes the poll interval the single tuning knob that decides whether your system feels instant, wastes the bus, or quietly drowns the device. Faster is not better. Here is how to pick a rate that matches the data instead of fighting the hardware.
Poll the rate the value changes at
A kiln temperature that moves 2 degrees per minute does not benefit from 100 ms polling; an energy counter that ticks a few times per hour even less. The information you lose by polling slower than the change rate is small, and the capacity you save is not. Sort your points by behavior: fast process values, slow process values, counters, and alarm bits. Give each group its own poll block and interval instead of dragging every tag through one high-speed loop.
Batch reads: the biggest win is not the interval
One FC03 request reads up to 125 holding registers in a single transaction. Ten requests for ten adjacent registers cost ten round trips; one request for the block costs one. Before touching the interval, fix the layout: group polls into contiguous blocks that shadow the device's register map. This is why we built Modbus Poll around named blocks rather than single-register reads. For how the request is framed, see How to Read Modbus Holding Registers.
Modbus TCP: the device is the bottleneck, not the network
On a switched LAN, a small request-response cycle completes in single-digit milliseconds, and 100 ms polling is realistic. The limit is usually the embedded server. Many devices accept a fixed number of TCP connections, often somewhere between 4 and 10, and every extra client (historian, HMI, your laptop) eats one. When the table fills, new connections are refused outright. Devices also have a transaction budget: some deliberately slow their responses under load instead of failing, so an over-polled device first shows up as latency, then as timeouts. Two practical rules: keep the number of clients below the connection limit, and stagger poll intervals across clients so they do not synchronize into bursts.
Modbus RTU: the wire does the math for you
RTU timing is arithmetic, not folklore. A worst-case FC03 response with 125 registers is about 260 bytes; at 9600 baud 8N1 that is roughly 270 ms on the wire, plus the request and the mandatory 3.5-character silent gaps between frames. A one-second poll of a full-size block on a shared bus is already aggressive. Multi-drop makes it worse: three slaves with 300 ms transactions cannot all be scanned at 500 ms, no matter what the HMI asks for. For the frame-level details, see Modbus RTU Over Serial.
Practical defaults
| Point type | Sensible interval | Notes |
|---|---|---|
| Control-relevant process values | 100 to 250 ms | TCP only, one client, batched into one request |
| HMI / dashboard values | 1 s | Faster looks smoother but nobody acts that quickly |
| Alarm and interlock bits | 250 ms to 1 s | Small FC02 blocks poll cheaply |
| Temperatures, levels | 5 to 30 s | Thermal mass is your low-pass filter |
| Energy counters, totalizers | 30 to 60 s | Counters only ever increase; nothing to miss |
| Shared RTU bus, several slaves | 1 to 5 s per slave | Sum the transaction times first, then set the interval above the sum |
When a fast poll breaks something
Over-polling has a signature: latency grows first, then the device starts returning exception codes like Slave Device Busy, then RTU buses show CRC errors as timing windows collide. Because these symptoms look like hardware faults, the fastest diagnostic is to halve the poll rate and watch the errors disappear. If the fault follows the interval, it was load.
Time Your Polls Against the Real Device
MacTools Modbus Poll for macOS: configurable poll intervals, batched block reads, and a timestamped traffic view. Run the slave simulator to see exactly how a device behaves under load. $19 one-time.
Get Modbus Poll: $19Frequently Asked Questions
How fast can you poll Modbus?
On Modbus TCP over a switched LAN, a single request-response cycle typically completes in 5 to 50 ms, so a poll interval of 100 ms or slower is realistic for a handful of registers. The practical ceiling is the device itself: embedded Modbus servers often handle a limited number of concurrent connections and may slow or drop excess requests rather than answer faster.
How many registers can one Modbus request read?
FC03 and FC04 read up to 125 registers per request; FC01 and FC02 read up to 2000 bits. Reading one contiguous block is far cheaper than issuing one request per register, so map your data into adjacent addresses where you control the layout, and group your polls around the device's map where you do not.
What poll interval should I use?
Match the rate to how fast the value actually changes. Control-relevant points often justify 100 to 250 ms. HMI displays and process values at 1 second are plenty. Energy counters, totalizers, and temperatures drift slowly: 30 to 60 seconds wastes far less bus and device capacity for the same information.
What happens if you poll a Modbus device too fast?
Symptoms arrive in stages: response latency grows, the device starts returning busy errors or exception codes, and on RTU buses collisions and CRC errors appear as other masters' timing windows overlap. Some embedded servers stop accepting new TCP connections when their socket table fills. Every symptom looks like a broken device when the real cause is load.
How long does one Modbus RTU request take at 9600 baud?
A worst-case FC03 response carrying 125 registers is about 260 bytes on the wire, which takes roughly 270 ms at 9600 baud 8N1, plus the request itself and the silent 3.5-character gaps between frames. Budget a full second per transaction on a shared RTU bus before adding any safety margin.
Polling around the clock is a different job:
Voltrus SCADA polls Modbus plus OPC-UA, S7, EtherNet/IP and BACnet 24/7 with dashboards, alarms, and history. Lifetime license from $49.