打印

ModBus,单片机分别给50个字节的发送和接收缓存,够不够?

[复制链接]
2452|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
pian_zhou|  楼主 | 2007-3-28 09:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
21ele| | 2007-3-29 21:09 | 只看该作者

这个要从命令上分析

有些命令是定长的,很多命令的响应是定长的,而且长度较短,这些咱们就不用关心了.

程序写的时候,接收和发送可以共用一个缓存区,这样就不用关心是读还是写命令了. 

对于ASCII模式,程序设计为先转换格式再发送或接收,则缓存区和RTU模式将相同.

所以我们关心的就是多位读写命令和多寄存器读写命令. 

在一个请求或请求响应中,协议产生的开销基本是确定的,这包括从机地址,命令,读写地址,读写长度,返回字节数,最后因为RTU和ASCII协议不同为lrc+CRLF或CRC16,所以为1+1+2+2+1+3(2)

最后剩下的就是决定缓存区的关键部分,数据区长度,这里保存接收到的数据或带发送的数据, 大小有多位读写命令和多寄存器读写命令中的数据长度决定, 多位读写命最是(数据长度/8+1), 多寄存器读写命令数据长度是(数据长度x2).

说白了,缓存大小关键要看多位操作的位长度或多寄存器操作的字长度,就是一次要操作多少位线圈或多少寄存器(字)

综上:50字节去掉10字节协议开销,最多一次可操作(50-1)*8位线圈或操作25个寄存器.

使用特权

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

本版积分规则

25

主题

90

帖子

0

粉丝