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
| Variable | Meaning | Where it comes from |
|---|---|---|
| B | Bits per character — every RTU character is framed by a start bit and stop bit(s), plus a parity bit if used | Your serial format settings (the parity and stop-bits fields) |
| baud | Line rate in bits per second | The baud rate field; every device on the segment must share it |
| T_char | Time to transmit one character, in ms | Calculated: B ÷ baud × 1000 |
| T_gap | The t3.5 inter-frame gap — the minimum silence between frames, charged twice per transaction | 3.5 character times at ≤19,200 baud; a fixed 1.75 ms above that |
| R | Registers read per device in one request | The registers field (1–125) |
| T_delay | The device's own processing time — receiving the request, preparing the answer — before it starts transmitting | The device response field; from the device datasheet or measured on the real segment |
| N | Number of slave devices the master polls in one cycle | The slave devices field |
| T_cycle | Full polling cycle: one transaction for every device | The 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).
| Input | Unit / options | Default | What breaks if you get it wrong |
|---|---|---|---|
| Baud rate | 9600 / 19200 / 38400 / 57600 / 115200 | 19200 | A 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 |
| Parity | Even / Odd (1 bit) / None (0 bits) | Even / Odd | Parity 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 bits | 1 / 2 | 1 | The 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 devices | count (min 1) | 20 | The 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 / device | count (1–125) | 10 | Response 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) | 15 | The 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:
- Bits per character: 1 start + 8 data + 1 parity + 1 stop = 11 bits
- Character time: 11 ÷ 19,200 × 1000 = 0.573 ms
- 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
- Request time: the read request is always 8 bytes: 8 × 0.573 = 4.58 ms
- Response time: 5 + (2 × 10) = 25 bytes: 25 × 0.573 = 14.32 ms
- Per-device transaction: 4.58 + 2.01 (gap) + 15 (device response) + 14.32 + 2.01 (gap) = 37.92 ms
- Full polling cycle: 37.92 × 20 devices = 758 ms — the amber band (above 500 ms, within 2,000 ms)
- Refresh rate: 1000 ÷ 758 = 1.32 Hz — each device's data updates about once every three-quarters of a second
- 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 defaults | Per-device time | Full cycle | Refresh | Band |
|---|---|---|---|---|
| None (19,200 baud, 20 devices) | 37.9 ms | 758 ms | 1.32 Hz | Amber |
| Baud rate down to 9600 | 60.8 ms | 1,217 ms | 0.82 Hz | Amber |
| Devices up to 50 (at 19,200) | 37.9 ms | 1,896 ms | 0.53 Hz | Amber |
| Both: 9600 baud and 50 devices | 60.8 ms | 3,042 ms | 0.33 Hz | Red |
| Baud rate up to 115,200 | 21.7 ms | 433 ms | 2.31 Hz | Green |
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
- 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.
- 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.
- 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.
- 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.
- 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
- 24VDC Power Supply Sizer — every device on the segment draws from the panel rail; size the supply that feeds the meters, drives, and I/O you just timed.
- Enclosure Cooling Calculator — Modbus segments usually live in the same panel projects: the drives and supplies on the network are also the cabinet's heat load. Check the enclosure temperature rise with real numbers.
- Historian Storage Calculator — polled data lands in the historian; the refresh rate this calculator gives you is the fastest historization interval worth configuring.
- All other calculators: EtherCAT Cycle Time · EtherCAT PDO Size · EtherCAT Distributed Clock Checker · CODESYS Task & Jitter
- Calculator hub — all eight free calculators on one page.
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.