关于Modbus的疑惑

.Net技术 码拜 8年前 (2016-03-10) 968次浏览
刚刚开始学Modbus协议,看的本人一头雾水,有两个问题想讨教一下
1.Modbus不就是一个协议吗?它的那些输入寄存器,保持寄存器是什么东东,是单片机自带的?还是从机上的?还是别的什么?
2.功能码,例如常用的03是读保持寄存器。假如本人的协议只是本人一个人用,是不是功能码可以随便本人制定一个,例如02代表读保持寄存器?
问题可能有点傻,但本人真的没搞明白,请大牛指点。谢谢。
解决方案

10

引用 LZ zys_619 的回复:

刚刚开始学Modbus协议,看的本人一头雾水,有两个问题想讨教一下
1.Modbus不就是一个协议吗?它的那些输入寄存器,保持寄存器是什么东东,是单片机自带的?还是从机上的?还是别的什么?

现代计算机网络软件的历史并不长。你可以想象一下,上世纪70年代,能流行什么水平的网络协议呢?
因此此协议针对当时的“PLC+RTU”概念而设计的。它假设全部设备都跟一个中国古老的算盘珠子差不多的那点简单的数据结构,目的是反映当时的普遍的结构,降低学习成本。
现代的网络假设的对象,复杂性是其百万被、千万倍。而当时的假设是现在的百万分之一,它假设一个极其简单的设备对象,在一个比现代慢至少1000倍的网络上传输命令。

引用 LZ zys_619 的回复:

刚刚开始学Modbus协议,看的本人一头雾水,有两个问题想讨教一下
2.功能码,例如常用的03是读保持寄存器。假如本人的协议只是本人一个人用,是不是功能码可以随便本人制定一个,例如02代表读保持寄存器?

对于标准中规定的功能码,为什么要本人来修改意义呢?
虽然标准都是文本,而标准都是人定的,但是你自定义功能码的目的何在?

10

只是建议你参考MODBUS协议,没想到给你带来更大的困惑。MODBUS寄存器只是一个逻辑概念,用来表示从机内存中的一段数据,功能码是用来表示主从之间的操作类型(读/写)。
通讯的本质,就是利用协议串行化(格式化)你要发送的数据,将串行化的结果通过介质发送出去,接收方以相同协议,反串行化接收的内容,最终取得数据。
串口通讯的各种知识,还是需要你本人摸索和理解,不过,当你理解了,你会觉得非常简单。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明关于Modbus的疑惑
喜欢 (0)
[1034331897@qq.com]
分享 (0)