摘要:Modbus-RTU协议中有一个字符时间的概念。Modbus-RTU总线是通过时间间隔来判断一帧数据结束的,3.5个字符时间内没有收到新的数据,则认为这一帧数据结束。那这个字符时间到底是多少呢?确切地说,应该是在偶校验的情况下发送一个byte数据的时间。
在RTU (Remote Terminal Unit) 模式下,串行链路是以byte为单位进行发送数据的。但Modbus-RTU协议中有一个字符时间的概念,Modbus-RTU总线是通过时间间隔来判断一帧数据结束的,3.5个字符时间内没有收到新的数据,则认为这一帧数据结束。为什么这个时间叫“字符时间”,而不叫“字节时间”呢,这不就是串口发送一个字节(byte)的时间吗?
的确,这个“字符时间”就是串口发送一个字节(byte)数据所用的实际时间,但孔丙火(公众号:孔丙火)认为,这种说法又不确切,原因如下。根据Modbus国家标准中关于RTU传输模式的规定,传输一个字节(byte)的数据,需要占用11位bit,1个起始位,8个数据位,1个校验位,1个停止位。且偶校验是要求的,默认模式必须为偶校验,但为了增加设备的兼容性,奇校验和无校验也是允许的,但在无校验的情况下,停止位必须设为2位。由此可见,一个字符时间是发送11位bit的时间。如果这样说就准确了:“字符时间”就是串口在偶校验的情况下发送一个字节(byte)数据所用的实际时间,即11个bit的时间。
延伸一下,Modbus-RTU通信中有时把通信参数设为8位数据位,1位停止位,无校验,其实是不严谨的,虽然也能通信成功。如果所有Modbus设备都严格遵循11个bit的字符时间,相当于大家统一了判断帧结束的时间间隔的标准,有利于Modbus通信的稳定。
文章在公众号(孔丙火)同步推出,欢迎查看更多系列文章。
单片机、PLC、嵌入式软硬件的设计经验分享,秉承“点点滴滴皆智慧”的理念,以实际项目为单元阐述知识点,一起分享,共同交流。