Modbus 通讯协议帧数据之间的时间停顿间隔 “3.5字符”定义

Modbus 通讯时规定主机发送完一组命令必须间隔3.5个字符再发送下一组新命令,这个3.5字符主要用来告诉其他设备这次命令(数据)已结束,而这个3.5字符的时间间隔采用以下方式计算:

1个字符包括1位起始位、8位数据位(一般情况)、1位校验位(或者没有)、1位停止位(一般情况下)
这样说起来一般情况下1个字符就包括11位
那么3.5个字符就是3.5*11=38.5位

还有比如没有校验位的
1个字符包括1位起始位、8位数据位(一般情况)、1位停止位(一般情况下)

这样说起来一般情况下1个字符就包括10位
那么3.5个字符就是3.5*10=35位


波特率含义是每秒传输的二进制位的个数
比如9600bps,意思就是说每1秒(也就是1000毫秒)传输9600个位,
反过来说传输9600个二进制位需要1000毫秒
那么传输38.5个二进制位需要的时间就是:
38.5/9.6=4.0104167毫秒
MODBUS RTU要求一帧数据起始和结束至少有大于等于3.5个字符的时间
在波特率为9600的情况下,只要大于4.0104167毫秒即可!

 

采用了RS485通讯,8位数据,无奇偶校验,一个停止位,采用MODBUS RTU模式,那么下面这句话中的“3.5 个字符时间”如何计算? 
RTU 模式下,消息发送至少要以 3.5 个字符时间的停顿间隔开始。

 

1 起始位 
8 数据位, 首先发送最低有效位 
0 位作为奇偶校验 
1 停止位 

T=3.5*( 1 +数据位+奇偶校验+ 停止位)/ 波特率 
=3.5*(1+8+0+1)/波特率 

由于t1.5 和 t3.5 的定时,隐含着大量的对中断的管理。在高通信速率下,这导致CPU 负担加重。因此,在通信速率等于或低于19200 Bps 时,这两个定时必须严格遵守;对于波特率大于19200 Bps 的情形,应该使用2 个定时的固定值:建议的字符间超时时间(t1.5)为750μs,帧间的超时时间(t1.5) 为1.750ms。

 

 

转自:http://www.51hei.com/stm32/3859.html

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值