modbus协议为什么发送时是用两个字节表示的寄存器数量,返回时却是一个字节的字节数?

2019-07-14 16:17发布

以03功能码为例,该功能为读取保持寄存器。

主机发送格式为:
从机地址 | 功能码 | 从机地址高字节 | 从机地址低字节 | 寄存器数量高字节 | 寄存器数量低字节 | CRC高字节 | CRC低字节

从机响应格式为:
从机地址|功能码|字节数|数据1高位|数据1低位|...|CRC高字节|CRC低字节


为什么发送时是用两个字节表示的寄存器数量,返回时却是一个字节的字节数?
以为其他命令也都是类似的,看到06时,写一个掉电保持寄存器时,响应返回来的是 寄存器数量高字节 | 寄存器数量低字节。
看到10H命令时,写多个掉电保持寄存器,响应返回来的是  寄存器数量高字节 | 寄存器数量低字节 | 字节数。
难道不是所有的寄存器都是16位的吗?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
hu_wflllllllg21
1楼-- · 2019-07-15 01:18
是的,比如01,02,05,15使用比特方式访问。
赵芬13631537724
2楼-- · 2019-07-15 07:11
r看下标准的协议去哟
04860860686
3楼-- · 2019-07-15 10:15
看楼主的问题,应该是对modbus协议的内容不够清楚吧
Green_LJ
4楼-- · 2019-07-15 13:27
楼主是一定要用标准的modbus协议吗?
dull20112011
5楼-- · 2019-07-15 19:23
 精彩回答 2  元偷偷看……
嘻嘻爱哈哈
6楼-- · 2019-07-15 20:02
本帖最后由 Dylan疾风闪电 于 2016-5-9 14:58 编辑

请仔细阅读协议标准,协议上讲的很详细!《GB/T19582.1-2008》



一周热门 更多>