没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
Modbus 协议学习笔记
1. 概述
很早就有接触过 Modbus 协议,但是一直对 Mobus 协议格式比较疑惑。原来也网上查
过些资料,有说是固定格式,也有说 Modbus 官方只是定义格式组成,具体实现可以厂家
自定义实现,一时间把我搞晕了。
最近又要开始接触这块东西,想要把这个搞清楚。写个笔记顺便加深下了解。
摘抄一段百度说明
Modbus 是一种串行通信协议,是 Modicon 公司(现在的施耐德电气 Schneider Electric)于 1979 年为使用可编程逻辑控制器
(PLC)通信而发表。Modbus 已经成为工业领域通信协议的业界标准(De facto),公开发表并且无版权要求。在数据采集与监视控
制系统(SCADA)中,Modbus 通常用来连接监控计算机和远程终端控制系统(RTU)。
Modbus 协议目前存在用于串口、以太网以及其他支持互联网协议的网络的版本。对于串行连接,存在两个变种 Modbus RTU 与
Modbus ASCII;对于以太网协议 Modbus/TCP 存在多个变种。
Modbus 协议是一个 master/slave 架构的协议。在通讯过程中存在一个 master【消息发送方】节点,其它都为 slave【消息接收】
节点,不过一般只有一个 slave 节点才会响应消息【广播消息除外】。响应的 slave 节点通过指定唯一地址码区分。
以上就是摘取百度的说明的主要部分,没有对协议格式进行说明,而且关于 Modbus/
TCP 存在多个变种,具体有什么变种,以及不同变种的区别没有说明,带着这个疑问继续
百度.....
现在使用最多的 Modbus 协议主要两个版本,基于串口的 Modbus RTU 以及基于以太网
的 Modbus/TCP,下面就对这两个协议进行重点学习.【关于 Modbus/TCP 协议变种,没有去研
究】
2. Modbus RTU
Modbus RTU 协议格式 包括地址区域,数据长度 1 个字节,功能码【包括标准功能码
以及自定义功能码】数据长度一个字节;数据域【不同功能码对应长度不同】长度不确定 ;
校验位 CRC 16 校验 长度 2 个字节。如下图所示
Modbus RTU 协议中是没有标识数据长度说明的,数据准确性与完整性可以通过 CRC16 校验
判断。
PDU: 协议数据单元,即 PDU=功能码+数据域
ADU: 应用数据单元,在 PDU 单元上上述附加单元包括地址域以及校验域
3. Modbus/TCP
再看下 Modbus/TCP 协议格式,其实 Modbus/TCP 与 Modbus RTU 格式非常类似其 PDU
部分是相同的,不同地方在于 Modbus/TCP 协议将 Modbus RTU 协议地址域改成了一个协议
头也叫 MBAP 报文头,同时去掉了校验域【因为 TCP 协议是一个面向连接的可靠协议】,
数据完整性可以通过报文头中数据长度进行校验。
完整报文格式如上,下面就对 MBAP 报文头进行解析:
通常情况下 MBAP 中的 7 个字节其它 5 个都写入 0 ,表示长度的两个字节根据实际长
度写入。 数据如下: 00 00 00 00 XX XX 00。
4. Modbus 协议数据模型
Modbus 协议数据模型 16 位表示数据 都是采用高位在前地位在后
上面已经对常用 Modbus 协议进行了比较详细的说明了,有时说的再多不如直接来个
实际的 demo,下面我们就进行举例说明。
在举例说明之前需要对常用功能码进行了解,Modbus 工码使用情况如下图,具体功能
码应用下面会说,这里可以看到,红色部分功能码可以用户自定义,而大于 127 的功能码,
这里没有说明,是应该大于 127 的功能码用于表示错误应答,后面再异常应答中会说明。
剩余10页未读,继续阅读
资源评论
kxj19850116_3
- 粉丝: 0
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功