How Modbus RTU Uses Silent Timing Gaps to Delimit Packets

In industrial automation electronics, the Modbus RTU protocol relies on silent inter-frame timing gaps to identify the start and end of data packets over serial communication links. Unlike text-based protocols that use specific start and end characters, Modbus RTU transmits raw binary data, meaning any byte value could appear within the payload. To prevent devices from misinterpreting actual data as control markers, the protocol uses precise periods of bus silence—specifically 3.5 character times between frames and 1.5 character times between bytes—to synchronize communication and accurately delimit messages.

The Challenge of Binary Serial Communication

Serial links such as RS-485 and RS-232 transmit data sequentially bit by bit. In protocols like Modbus ASCII, specific characters (a colon to start and a carriage return/line feed to end) frame the message. However, Modbus RTU (Remote Terminal Unit) uses a dense binary format to maximize efficiency.

Because binary payloads can contain any hexadecimal value from 0x00 to 0xFF, it is impossible to reserve a specific byte value as an "end-of-frame" marker without complex byte-stuffing algorithms. Instead, Modbus RTU uses time itself as the delimiter.

The 3.5 Character Time Rule (t3.5)

To delimit packets, Modbus RTU mandates that every message frame must be preceded and followed by a silent interval on the serial bus equal to at least 3.5 character times (often referred to as t3.5).

Here is how automation electronics use this silent gap:

  1. Idle State Detection: All slave devices on the serial bus continuously monitor the communication line. When the line remains idle (no data transitions) for a duration equal to or greater than 3.5 character times, the internal timers of the receiving devices reset.
  2. Start of Frame: The very first falling edge (start bit) detected after this 3.5-character silent period is automatically interpreted by all devices as the beginning of a new Modbus RTU packet. The first byte read is always evaluated as the Slave Address.
  3. End of Frame: Once data transmission begins, the receiving device buffers the incoming bytes. When the transmission stops and the line goes silent again for 3.5 character times, the receiver recognizes that the packet is complete.
  4. Packet Processing: Immediately after the t3.5 timer expires at the end of the message, the receiving device calculates the Cyclic Redundancy Check (CRC) on the buffered data to verify integrity and processes the command.

Calculating Character Time

A "character time" is the exact duration required to transmit one full character frame over the serial link. In standard Modbus RTU, a single character frame consists of 11 bits:

  • 1 Start bit
  • 8 Data bits
  • 1 Parity bit (or 1 additional Stop bit if no parity is used)
  • 1 Stop bit

Because serial transmission speed varies by baud rate, the actual time duration of the 3.5-character gap changes depending on the network configuration.

For example, at a baud rate of 9600 bps:

  • 1 bit time = 1 / 9600 = 0.104 milliseconds.
  • 1 character time (11 bits) = 11 × 0.104 ms = 1.145 milliseconds.
  • 3.5 character times (t3.5) = 3.5 × 1.145 ms = 4.01 milliseconds.

At 9600 bps, a silent gap of at least 4.01 milliseconds is required to delimit packets.

High Baud Rate Exception

At higher baud rates, calculating microscopic timing gaps places a heavy burden on microcontroller CPU timers. Therefore, the official Modbus specification states that for baud rates greater than 19,200 bps, fixed timing values should be used instead of the formula. For any speed above 19,200 bps, the inter-frame silent gap (t3.5) is fixed at 1.750 milliseconds (1750 microseconds).

The 1.5 Character Time Rule (t1.5)

For the 3.5-character silent gap to work reliably, the bytes within a single packet must be transmitted in a continuous stream. If a transmitter pauses for too long in the middle of sending a packet, the receivers will mistakenly assume the packet has ended.

To prevent this, Modbus RTU enforces an inter-character timeout of 1.5 character times (t1.5). If a silent gap of more than 1.5 character times occurs between two bytes within the same frame, the receiving device flags the transmission as incomplete, discards the current buffer, and waits for the next 3.5-character silent gap to begin listening for a new frame. For baud rates above 19,200 bps, this t1.5 timer is fixed at 0.750 milliseconds (750 microseconds).

Hardware Implementation in Automation

In modern automation electronics, such as Programmable Logic Controllers (PLCs), Variable Frequency Drives (VFDs), and smart sensors, these timing gaps are managed at the hardware level.

The Universal Asynchronous Receiver-Transmitter (UART) peripheral inside the device's microcontroller works alongside a dedicated hardware timer. Every time the UART receives a byte, it resets the hardware timer. If the timer reaches the t1.5 threshold before the next byte arrives, a framing error is triggered. If the timer successfully reaches the t3.5 threshold, an interrupt is triggered, signaling the main processor that a complete, delimited Modbus RTU packet is ready in the buffer for evaluation.