Modbus是Modicon公司于1979年开发的串行通信协议,是一种开放协议,支持使用RS232/RS485/RS422协议的串行设备。Modbus大致可以分为Modbus-RTU、Modbus-ASCII、Modbus-TCP,本问介绍了以上三种协议的主要区别。
一、Modbus-RTU协议
帧结构:帧结构=地址+功能码+数据+校验
地址:一个字节,范围0-255,有效范围是1-247。
功能码:一个字节,指明该指令类型,如功能码03表示读取数据,功能码06表示修改寄存器内容。
数据:0-252个字节,根据功能码不同,有不同的结构。
校验:两个字节,循环冗余校验,保证数据不错误。
具体格式如下:
二、Modbus ASCII协议
帧格式=起始+地址+功能码+数据+LRC+结束
起始:“:”,一个字节,消息帧以英文冒号开始,网络中从设备监视传输链路上是否有英文冒号“:”,如果有的话,就对消息帧进行解码,查看消息中的地址是否与自己相同,如果相同的话,就接受其中的数据;如果不同则不予理会。
地址:两个字节。
功能码:两个字节,指明指令类型。
数据:0-2*252字节。
LRC:两个字节,纵向冗余校验,保证数据不错误。
结束:两个字节,“CR,LF”,表示消息帧结束
格式如下:
相比于Modbus RTU协议,RTU协议发送一个字节,ASCII协议则需要发送两个字节。比如RTU发送一个字节0X30;ASCII需要发送两个字节,一个字节代表ASCII码3,一个字节代表ASCII码0。也就是说ASCII协议效率更低,但是用ASCII(文本模式)可以正常显示再计算机终端,方便调试显示。
三、Modbus TCP
Modbus TCP和modbus RTP基本相同,但Modbus是基于以太网的协议,基于TCP/IP协议栈进行通信。
主要区别在于:
1.从机地址不再重要,从某种意义上来说从机地址被IP地址取代。
2.CRC校验可以忽略,因为TCP数据包上已经存在校验。
3.Modbus TCP数据帧格式类似于TCP数据包,包含了IP地址、端口号等网络层信息以及Modbus应用数据单元(ADU)。
4.ADU由事务标识符、协议标识符、长度字段、单元标识符、功能码、数据等部分组成,用于在Modbus TCP协议中定义具体的通信请求和响应。
凯发K8国际Baimatech,集M2M产品研发、IoT平台服务、国际化运营于一体,让我们联接,共创未来