Modbus RTU 1.5t interval

Y

Thread Starter

Yury Kurilo

The end of message, transmitted over serial line, can be detected with 3.5t pause. Why is it needed to detect 1.5t pause?

If pause is longer 3.5t - then OK, the frame is received, checking. If not completed - CRC will show it. If pause is shorter 3.5t and char is incoming - OK, just next char. What is the purpose of the 1.5t pause? What can be wrong if I take char between 1.5t and 3.5t?
 
S

Scott Henson

You are correct that you only really need to detect the 3.5 char timeout to determine the end of the message that you are receiving.

The 1.5 char time is intended as a restriction on the device transmitting the message to prevent gaps during the transmission. I have seen many poorly done Modbus slaves that insert large gaps in the middle of the message that they are transmitting. This is usally the case when the serial communication is an afterthought and the communication driver has a lower priority than needed.

I would suggest that you offer the user the ability to adjust the 3.5 char timeout to a larger number so you can support more devices in the field.

Another suggestion is a configurable delay before transmit. (default it to 0ms) Many poorly done slaves (and masters) hold their RS-485 transmitters on too long after transmitting the message and they clobber the start of the reply (or query) from the other device.
 
Top