Modbus RTU Timing Calculator

This free Modbus RTU timing calculator estimates how long one full polling cycle takes on an RS-485 Modbus RTU network — and how often your data actually refreshes. Enter the baud rate, serial format, slave count, registers read per device, and a typical device response time; it builds the cycle from character time, the mandatory inter-frame gap, one read request and response per device, and the time each device takes to answer. It's for controls and automation engineers commissioning a Modbus segment, checking whether added slaves will slow a SCADA or PLC poll beyond its scan budget, or setting a defensible master timeout. No account, no spreadsheet — the model and its assumptions are shown below.

⇄

Estimate polling-cycle time, refresh rate, and a practical response timeout.

Models a typical 8-byte read request and a response of 5 + 2×registers bytes. For ≤19,200 baud, t3.5 is 3.5 character times; above 19,200 baud, 1.75 ms is used. Device processing delay is entered separately.

The formula

Modbus RTU is a half-duplex, one-conversation-at-a-time protocol: the master sends a request, the line goes quiet, one device answers, the line goes quiet again, and only then does the next device get polled. The cycle time is that transaction, repeated for every device:

One character on the wire
  B      = 1 start + 8 data + P parity + S stop     bits per character
  T_char = B ÷ baud × 1000                          ms

Inter-frame gap (t3.5 — the silence that separates frames)
  T_gap  = 3.5 × T_char           at 19,200 baud and below
  T_gap  = 1.75 ms                above 19,200 baud (fixed value)

One transaction per device
  Request  = 8 bytes        T_req  = 8 × T_char
  Response = 5 + 2R bytes   T_resp = (5 + 2R) × T_char
  T_device = T_req + T_gap + T_delay + T_resp + T_gap

Whole network
  T_cycle   = T_device × N
  Refresh   = 1000 ÷ T_cycle                        Hz

Suggested response timeout
  T_timeout = (T_delay + T_resp + T_gap + 50 ms) rounded up to the next 50 ms
VariableMeaningWhere it comes from
BBits per character — every RTU character is framed by a start bit and stop bit(s), plus a parity bit if usedYour serial format settings (the parity and stop-bits fields)
baudLine rate in bits per secondThe baud rate field; every device on the segment must share it
T_charTime to transmit one character, in msCalculated: B ÷ baud × 1000
T_gapThe t3.5 inter-frame gap — the minimum silence between frames, charged twice per transaction3.5 character times at ≤19,200 baud; a fixed 1.75 ms above that
RRegisters read per device in one requestThe registers field (1–125)
T_delayThe device's own processing time — receiving the request, preparing the answer — before it starts transmittingThe device response field; from the device datasheet or measured on the real segment
NNumber of slave devices the master polls in one cycleThe slave devices field
T_cycleFull polling cycle: one transaction for every deviceThe number your SCADA refresh lives and dies by

Why the request is 8 bytes and the response is 5 + 2R: a standard read request carries a device address, a function code, a two-byte start address, a two-byte quantity, and a two-byte CRC — 8 bytes, whatever you're reading. The response carries the address, function code, and a byte count (3 bytes), two bytes of data per register, and the CRC (2 bytes) — so response size, and response time, grow with the register count while request time stays fixed.

One structural consequence worth internalising: the wire terms (request, response, gaps) shrink as baud rate rises, but the device processing delay does not. On slow networks the wire dominates the cycle; on fast ones, the delay does — which is why doubling the baud rate never quite halves a real polling cycle.

What each input means

Every field below is exactly as it appears in the live calculator (labels, options, and defaults verified in source).

InputUnit / optionsDefaultWhat breaks if you get it wrong
Baud rate9600 / 19200 / 38400 / 57600 / 11520019200A mismatch here doesn't make the estimate wrong — it makes it fiction. Every device on the segment must run the same rate, and the higher rates are only realistic on shorter, cleaner runs. Estimating at 115,200 for a segment that will actually run 9,600 understates the cycle roughly twofold
ParityEven / Odd (1 bit) / None (0 bits)Even / OddParity is part of character time: even/odd parity makes every character 11 bits, no parity makes it 10 (with 1 stop bit). Setting it differently from the real segment skews every wire term in the result
Stop bits1 / 21The second stop bit adds a bit time to every character — small per character, but it is paid on every byte of every transaction. (No-parity Modbus devices conventionally require 2 stop bits, which is why the combination exists.)
Slave devicescount (min 1)20The cycle scales linearly with device count — it is the multiplier on the whole transaction. Counting only the devices you poll every cycle is correct; leaving polled devices out understates the cycle one transaction at a time
Registers / devicecount (1–125)10Response size is 5 + 2 × registers bytes, so this sets the response time. The 125 cap is the standard per-request maximum for a register read — needing more means a second transaction the simple "one read per device" model doesn't add. Entering the registers you wish you read instead of the block you actually poll understates every response
Typical device response (ms)ms (min 0)15The delay between the request ending and the device starting its reply. It is not in any frame and doesn't shrink with baud rate — at 115,200 baud it is most of each transaction. Leaving it at 0 prices in devices that answer instantly; no real device does

Worked example

Scenario: a typical mixed-vendor RS-485 segment — meters, drives, and remote I/O polled by a PLC. The inputs below are the calculator's own starting values, so you can reproduce this example exactly by opening the calculator and pressing "Calculate polling" without changing anything.

Inputs (the calculator's defaults):

  • Baud rate: 19200
  • Parity: Even / Odd
  • Stop bits: 1
  • Slave devices: 20
  • Registers / device: 10
  • Typical device response: 15 ms

Step by step:

  1. Bits per character: 1 start + 8 data + 1 parity + 1 stop = 11 bits
  2. Character time: 11 ÷ 19,200 × 1000 = 0.573 ms
  3. Inter-frame gap: 19,200 baud is not above 19,200, so the gap is 3.5 character times: 3.5 × 0.573 = 2.005 ms
  4. Request time: the read request is always 8 bytes: 8 × 0.573 = 4.58 ms
  5. Response time: 5 + (2 × 10) = 25 bytes: 25 × 0.573 = 14.32 ms
  6. Per-device transaction: 4.58 + 2.01 (gap) + 15 (device response) + 14.32 + 2.01 (gap) = 37.92 ms
  7. Full polling cycle: 37.92 × 20 devices = 758 ms — the amber band (above 500 ms, within 2,000 ms)
  8. Refresh rate: 1000 ÷ 758 = 1.32 Hz — each device's data updates about once every three-quarters of a second
  9. Suggested timeout: 15 + 14.32 + 2.01 + 50 = 81.33 ms, rounded up to the next 50 ms = 100 ms

The calculator's verdict for these inputs reads: "Suggested starting response timeout: 100 ms. Tune against real slave response behavior and retry policy."

What the example shows: the three levers behave very differently. Holding everything else at the defaults:

Change from the defaultsPer-device timeFull cycleRefreshBand
None (19,200 baud, 20 devices)37.9 ms758 ms1.32 HzAmber
Baud rate down to 960060.8 ms1,217 ms0.82 HzAmber
Devices up to 50 (at 19,200)37.9 ms1,896 ms0.53 HzAmber
Both: 9600 baud and 50 devices60.8 ms3,042 ms0.33 HzRed
Baud rate up to 115,20021.7 ms433 ms2.31 HzGreen

Two lessons fall out of that table. First, halving the baud rate does not double the cycle (758 → 1,217 ms, not 1,516 ms), because the 15 ms device processing delay is a fixed cost that baud rate can't touch — and at 115,200 baud that same delay is already about 69% of each transaction, so faster devices would buy more than more baud. Second, device count is the ruthless lever: it multiplies everything, and combined with a slow baud rate it pushes a modest segment past the 2-second red band, where values are over three seconds old by the time the poll comes back around.

What the result tells you

The result panel shows four figures (labels as displayed by the live calculator), followed by a colour-banded verdict line:

  • Character time — how long one framed character (start bit, 8 data bits, parity, stop bit) occupies the wire, in milliseconds. Every other wire figure in the result is this number multiplied by a byte count, so if it surprises you, check the baud rate and serial format first.
  • Minimum inter-frame gap — the t3.5 silence that must separate frames: 3.5 character times at 19,200 baud and below, a fixed 1.75 ms above it. It looks like dead time, but the cycle pays it twice per device — at 9,600 baud the two gaps alone cost about 8 ms of every transaction.
  • Full polling cycle — one transaction for every device, in milliseconds. This is your data's worst-case age: a value that changes just after its device was polled waits almost a full cycle before the master sees it. Compare it against the scan or update rate your application actually needs.
  • Estimated full-network refresh — the same cycle expressed as a rate (1000 ÷ cycle, in Hz). It is the update frequency your HMI, SCADA, or historian will actually see for every device on the segment — 1.32 Hz in the worked example, not the "fast" update rate the baud rate might suggest.
  • The verdict line and its colour — the verdict always names a suggested starting response timeout: the entered device delay, plus the response's time on the wire, plus one gap, plus 50 ms of allowance, rounded up to the next 50 ms. The colour bands the cycle time: green at 500 ms or below (comfortable for most monitoring and control), amber up to 2,000 ms (fine for trending and slow supervision — check it against your application's tolerance), red above 2,000 ms (supervision only; values are seconds old, and a device failure plus retries will stretch scans much further). The timeout is a starting point for a single transaction — not the cycle time — and the verdict itself says to tune it against real slave behaviour and your retry policy.

Common mistakes

  1. Pricing only the bytes. It is tempting to divide the total bytes by the baud rate and call that the cycle. That skips the two t3.5 gaps in every transaction — at 9,600 baud each gap is 4.01 ms, so the "dead time" is about 8 ms per device, over 160 ms across a 20-device segment. The gaps are part of the protocol, not overhead you can configure away.
  2. Assuming devices answer instantly. The device processing delay doesn't appear in any frame, so it gets forgotten — but it is paid on every transaction, and unlike the wire time it doesn't shrink when you raise the baud rate. At 115,200 baud it is roughly 69% of the worked example's transaction. Enter a realistic delay (ideally measured), or the estimate describes devices that don't exist.
  3. Reading tags a few at a time. Polling 2 registers here and 4 registers there multiplies transactions, and every transaction pays a full 8-byte request, two gaps, and a device delay. Consolidating each device's values into one block read — up to the 125-register single-request limit — is usually the single biggest cycle-time win available, and it costs nothing.
  4. Setting the timeout from the cycle time. The response timeout guards one wait for one device's answer. Set it anywhere near the full cycle time and a single dead device — times the master's retry count — stalls the entire segment for seconds on every pass. Set it too short and slow-but-healthy devices get retried constantly, which also burns cycle time. Start from the suggested figure and tune against observed behaviour.
  5. Cranking the baud rate on a marginal segment. Higher baud shortens wire time on paper, but it can't fix long stubs, missing termination, or cable capacitance smearing the signal — frames arrive corrupted, CRC errors trigger retries, and the real refresh ends up slower than a clean lower baud rate would have given. This calculator prices time only; signal integrity is a separate check, and it gates whether the calculated time is achievable at all.

FAQ

How do I calculate the polling cycle time of a Modbus RTU network?

Work out the time for one transaction, then multiply by the number of devices. A transaction is: the 8-byte read request on the wire, an inter-frame gap, the device's processing delay, the response (5 + 2 × registers bytes), and a second gap. Time on the wire comes from character time — bits per character (1 start + 8 data + parity + stop) divided by baud rate. At 19,200 baud with even parity and 1 stop bit, a character takes 0.573 ms, a 10-register read takes about 37.9 ms per device, and 20 devices take about 758 ms for a full cycle — a refresh of about 1.32 Hz.

What is the t3.5 gap in Modbus RTU, and why does it change above 19,200 baud?

Modbus RTU frames are separated by silence on the line: a gap of at least 3.5 character times (t3.5) marks the end of one frame and the start of the next. At 19,200 baud and below, that gap scales with character time — 2.005 ms in this calculator's default example. Above 19,200 baud the character times become so short that the Modbus specification fixes the gap at 1.75 ms instead, and this calculator follows that rule. Every transaction pays the gap twice, so on slow networks it is a real part of the cycle, not a rounding error.

What baud rate should I use for Modbus RTU?

19,200 baud is the most common factory default and the value this calculator opens with — a safe starting point for mixed-vendor segments. Raising the baud rate shortens everything on the wire: the worked example's network drops from a 758 ms cycle at 19,200 baud to about 433 ms at 115,200 baud. But the gains shrink as you go, because each device's processing delay doesn't scale with baud — at 115,200 baud it is most of each transaction. Long cable runs, many stubs, and noisy environments may also force you back down. Set every device to the same rate, format, and parity before blaming the timing.

How many registers can I read from a Modbus device in one request?

Up to 125 registers in a single read of holding or input registers — that's why this calculator's registers field stops at 125. At that setting the modelled response is 255 bytes (5 + 2 × 125), the largest standard response. Reading in one block is far faster than reading a few registers at a time: every extra request pays for its own 8-byte request, two inter-frame gaps, and a device processing delay. If you need more than 125 values from a device, expect at least two transactions for it in every cycle.

What response timeout should I set on a Modbus RTU master?

Start from the figure this calculator suggests: the device response delay you entered, plus the response's time on the wire, plus one inter-frame gap, plus 50 ms of allowance, rounded up to the next 50 ms — 100 ms for the default network here. Then tune it against the real segment: if healthy devices occasionally time out, their true delay is longer than the value you entered; if a failed device stalls polling for seconds, the timeout (multiplied by the master's retry count) is too generous. The timeout guards a single transaction — it is not the polling cycle time, and setting it from the cycle time makes fault recovery far slower than it needs to be.

Why is my real Modbus refresh rate slower than the calculator's estimate?

The calculator models clean, successful polls: one read per device, the delay you entered, and no retries. Real segments add the rest — a device that answers more slowly than its entered delay, retries after CRC errors or timeouts (each retry costs a full transaction), writes and other function codes mixed into the poll list, gateway or converter latency, and the master's own scan and scheduling between polls. Treat the result as the floor for your cycle time: if the floor is already too slow for the application, no amount of tuning will fix it — the fixes are fewer devices per segment, block reads, a higher baud rate, or splitting the network.

Related tools and reading

Planning the whole controls network?

The free Controls Toolkit includes editable Excel workbooks and printable PDF worksheets for system sizing, network planning, and commissioning — starting with Industrial PC sizing and EtherCAT timing budgets, with more resources on the way. Free by email signup.