PortDock

Serial Timing Calculator

From baud, parity and stop bits: character time, Modbus RTU 3.5- and 1.5-character times, request/response time, polling cycle and minimum response timeout.

Results
Bits per character
Bit time
Character (byte) time
Max bytes per second
t1.5 — allowed gap inside a frame
t3.5 — minimum silence between frames
Request
Normal response
Exception response (5 bytes)
One transaction (req + processing + resp + t3.5 + gap)
One cycle
Transactions per second
Minimum response timeout (processing + response)
Line utilisation

With a USB-serial adapter, received bytes reach the PC in batches (FTDI default 16 ms). Timeouts and frame splitting can lag this calculation by that much.

Results update as you type. Everything runs in your browser; nothing you type is sent anywhere.

Formulas

  • Bits per character = start 1 + data (7/8) + parity (0/1) + stop (1/2)
  • Character time = bits ÷ baud · 9600 bps 8E1: 11 ÷ 9600 = 1.146 ms
  • t1.5 = 1.5 × character time, t3.5 = 3.5 × character time (up to 19200 bps)
  • Transmission time = bytes × character time
  • Transaction = request + slave processing + response + t3.5 + master gap

An RTU receiver treats a gap longer than 1.5 characters inside a frame as an error, and 3.5 characters of silence as the end of the frame. So a sender sends the bytes back to back and waits at least t3.5 between frames.

Timing by baud rate (8E1, 11 bits)

BaudChar timet1.5t3.5Bytes/sFC03 ×10 transaction*
12009.167 ms13.75 ms32.083 ms109334.583 ms
24004.583 ms6.875 ms16.042 ms218167.292 ms
48002.292 ms3.438 ms8.021 ms43683.646 ms
96001.146 ms1.719 ms4.01 ms87241.823 ms
19200572.9 µs859.4 µs2.005 ms174520.911 ms
38400286.5 µs750 µs1.75 ms349011.203 ms
57600191 µs750 µs1.75 ms52368.052 ms
11520095.5 µs750 µs1.75 ms104724.901 ms

* Request 8 + response 25 bytes + t3.5 with zero slave processing time — a lower bound. Real devices add processing time. Bold cells are the fixed values recommended by the specification.

RTU frame length by function

FunctionRequest bytesNormal response bytesQuantity limit
01/02 read coils/inputs85 + ⌈N ÷ 8⌉2000
03/04 read registers85 + 2N125
05/06 write single88 (echo)1
0F write multiple coils9 + ⌈N ÷ 8⌉81968
10 write multiple registers9 + 2N8123

What response timeout should I use?

The specification leaves the response timeout to the application and notes it is typically 1 s to several seconds at 9600 bps, with a turnaround delay after a broadcast (address 0) of typically 100–200 ms. The «minimum response timeout» here is the theoretical floor — slave processing plus response transmission — so set the real value with the device's documented response time and any USB adapter latency added, with room to spare.

FAQ

How many bytes per second at 9600 bps?

With 11-bit characters (8E1 or 8N2) at most 9600 ÷ 11 ≈ 872 bytes; with 8N1 (10 bits) 960 bytes. In practice processing time between request and response and the t3.5 silence between frames make it less.

How long is the Modbus RTU 3.5-character time?

About 4.01 ms at 9600 bps and 2.005 ms at 19200 bps with 11-bit characters. Above 19200 bps the specification recommends a fixed 1.75 ms.

How long does a polling cycle over 10 devices take?

Enter 10 in «Transactions per cycle» and the device's documented response time (or a measured one) as slave processing time. Processing time often exceeds transmission time, so raising the baud rate may help less than expected.

Real request/response timestamps and gaps are visible in the traffic log of PortDock Modbus Master.

Sources