热度 2
2021-4-15 11:02
1856 次阅读|
0 个评论
摘要: 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 、嵌入式软硬件的设计经验分享,秉承“点点滴滴皆智慧”的理念,以实际项目为单元阐述知识点,一起分享,共同交流。