打印

请问:MODBUS中,串口数据传送处理的时间怎么计算的?

[复制链接]
9098|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yanse51|  楼主 | 2013-5-6 16:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
比如:一个上位机(pc)与 两个下位机(89c51)单片机进行通讯。波特率为 9600.
帧数据格式:起始位(1位)+地址(1位)+功能(1位)+数据位(14位)+校验位(2位)+停止位(1位)。
那么,当通过PC采用轮询法来读取3个单片机的数据状态时,每个单片机所用时间多少?
我的理解:
1000/9600=0.1042 ms  那么传送1帧数据: 1+1+1+14+2+1=20位  20*8*0.1042=16.67ms
但是:
  MODbus中,那个3.5个字符的时间。到底指什么? 如果是起始位到停止位的数据时间,那么16.67ms已经超标。是不是意味着,这样传输数据不行?

   MODbus中的定时设置究竟如何算的?定时多少合适?
如果是个主程序(除了传送,再加上数据处理,显示,按键扫描),那么一个单片机做一次,需要定时多长时间?

相关帖子

沙发
gx_huang| | 2013-5-6 16:58 | 只看该作者
3.5个字符的时间是否指的是2帧数据之间的间隔?
你只要一帧数据每个字节之间是连续发送就可以了。
如果有3.5字节的间隔,会认为需要重新同步。

使用特权

评论回复
板凳
coody| | 2013-5-6 18:18 | 只看该作者
3.5个字符的时间,就是35个位的时间。
MODBUS接收完最后一个字节,串口空闲35个位时间,就可以认为一次通讯结束。
主机两次轮询的串口空闲时间至少为50个位的时间,而超时处理一般不超过1秒。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

39

主题

88

帖子

0

粉丝