Modbus Modbus RTU 与 Modbus TCP 协议区别详解

sds · 2020年10月23日 · 131 次阅读
本帖已被设为精华帖!

Modbus 通信协议由 Modicon 公司于 1979 年发明的,是全球最早用于工业现场的总线规约。由于其免费公开发行,使用该协议的厂家无需缴纳任何费用,因此 Modbus 协议在全球得到了广泛的应用。

Modbus 通信协议具有多个变种,其中最常见的是 Modbus RTU 和 Modbus TCP 协议。

这两种协议很相似,下面以读取多个保持寄存器为例说明一下它们之间的区别:

Modbus RTU 通信发送格式为:从站地址 01(表示从站地址)功能码 03(读单/多个保持寄存器)数据起始地址 00 00(表示从 40001 开始)数据个数 00 02(表示读两个字)CRC 检验码 xx xx(这里的 CRC 校验码为 C4 0B),连起来就是 01 03 00 00 00 02 C4 0B。发送过去之后,从站会返回数据,数据格式为:01 03 04 01 02 03 04 5B 3C,其中 01 从站地址,03 功能码读,04 数据字节数,01 02 03 04 数据内容,5B 3C 为 CRC 校验码。

Modbus RTU与Modbus TCP协议区别详解

而 Modbus TCP 协议则是在 Modbus RTU 协议上加一个 MBAP 报文头,由于 TCP 是基于可靠连接的服务,RTU 协议中的 CRC 校验码就不再需要,所以在 Modbus TCP 协议中是没有 CRC 校验码,这个 MBAP 报文头共七个字节长度,除了第五、六个字节外,其余的基本上都是不变。例如用 Modbus TCP 完成上面的操作则是发送 00 01 00 00 00 06 ff 03 00 00 00 02 即可,第五、六个字节为 00 06 表示 00 06 之后有 6 个字节。具体操作见下图

Modbus RTU与Modbus TCP协议区别详解

返回值则是 00 01 00 00 00 07 ff 03 04 01 02 03 04。其中前 7 个字节是 MBAP 报文头,03 功能码读,04 数据字节数,01 02 03 04 表示数据内容。

所以 Modbus TCP 协议其实就是 Modbus RTU 协议去掉 CRC 校验码,去掉前面的从站地址码,然后在最前面加上 7 个字节的长度的 MBAP 报文头。

Modbus RTU与Modbus TCP协议区别详解

而 Modbus TCP 是基于以太网的基础上演变来的,物理接口就决定了它通讯速率和校验方式。

以上就是 Modbus RTU 与 Modbus TCP 协议之间的基本区别,描述得比较清楚了,希望能解决大家的疑惑。

sds 将本帖设为了精华贴 10月23日 22:02
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册