首页 | 收藏本站 | 免费注册|申请VIP会员|固定排名|广告服务
中国电气自动化网首页
PLC | 电  机 | 变 频 器 | 人机界面 | 运动伺服 | 控制传动 | 自动化软件
DCS | 传感器 | 通信网络 | 现场总线 | 数据采集 | 电气开关 | 数传测控
电源 | 嵌入式 | 仪器仪表 | 低压电器 | 机器视觉 | 工业安全 | 工控机
模具 | 电线电缆 | 电子元件 | 成套设备 | 液压气动 | 制 冷
机床 | 电力能源 | 机械设备 | 石油化工 | 矿业冶金 | 水工业
物流 | 轨道交通 | 汽车电子 | 工程机械 | 输 配 电 | 电 梯
产品 企业 供求 新闻
下载 视频 招聘 期刊 会展 培训 库存 论坛 访谈 维修  
热词:嵌入式 传感器 电源 主板 工控机 PLC 人机界面 变频器

您现在的位置:中国电气自动化网首页 >> 文库首页>>详细信息

以SimpleWiFi串口转WiFi为例说明Modbus TCP 与 Modbus RTU的区别 
(发布日期:2018-9-26 18:00:17) 来源:
 
   

Modbus TCP Modbus RTU的区别

Modbus通信协议由Modicon公司(现已经为施耐德公司并购,成为其旗下的子品牌)于1979年发明的,是全球最早用于工业现场的总线规约。由于其免费公开发行,使用该协议的厂家无需缴纳任何费用,Modbus通信协议采用的是主从通信模式(即Master/Slave通信模式),其在分散控制方面应用极其广泛,从而使得Modbus协议在全球得到了广泛的应用。

Modbus通信协议具有多个变种,其具有支持串口(主要是RS-485总线),以太网多个版本,其中最著名的是Modbus RTU,Modbus ASCII和Modbus TCP三种。其中Modbus RTU与Modbus ASCII均为支持RS-485总线的通信协议,其中Modbus RTU由于其采用二进制表现形式以及紧凑数据结构,通信效率较高,应用比较广泛。而Modbus ASCII由于采用ASCII码传输,并且利用特殊字符作为其字节的开始与结束标识,其传输效率要远远低于Modbus RTU协议,一般只有在通信数据量较小的情况下才考虑使用Modbus ASCII通信协议,在工业现场一般都是采用Modbus RTU协议,一般而言,大家说的基于串口通信的Modbus通信协议都是指Modbus RTU通信协议。

在此我们着重讨论Modbus RTU协议,而Modbus TCP协议则是在RTU协议上加一个MBAP报文头,由于TCP是基于可靠连接的服务,RTU协议中的CRC校验码就不再需要,所以在Modbus TCP协议中是没有CRC校验码,用一句比较通俗的话说就是:Modbus TCP协议就是Modbus RTU协议在前面加上五个0以及一个6,然后去掉两个CRC校验码字节就OK.虽然这句话说得不是特别准确,但是也基本上把RTU与TCP之间的区别说得比较清楚了。

RTU协议中的指令由地址码(一个字节),功能码(一个字节),起始地址(两个字节),数据(N个字节),校验码(两个字节)五个部分组成,其中数据又由数据长度(两个字节,表示的是寄存器个数,假定内容为M)和数据正文(M乘以2个字节)组成,而RTU协议是采用3.5个字节的空闲时间作为指令的起始和结束,一般而言,只有当从机返回数据或者主机写操作的时候,才会有数据正文,而其他时候比如主机读操作指令的时候,没有数据正文,只需要数据长度即可。(本章的讨论只涉及寄存器的读写,其他比如线圈的读写指令我们暂时不涉及)。在此我们通过两个指令(0x03H:读多个寄存器指令以及0x10H:写多个寄存器指令)来解释Modbus RTU协议。我们使用的RTU设备是北京博安瑞通科技的SimpleWiFi串口转WiFi模块。

S2W-M02采用UAER进行通讯,支持串口转WiFi,我们只讲述通过WiFi网络读取开关量输出的状态以及通过WiFi写指令控制开关量的输出。其中储存开关量输出状态的四个寄存器分别:0x18E,0x18F,0x190,0x191。在此我们假设模块的地址为默认的0x01,当我们要去读取开关量输出对应的四个寄存器的状态的时候,我们下发的十六进制的指令为:“01 03 01 8E 00 04 25 DE”,其中“01”为模块的地址码,“03”为功能码,即表示读寄存器,“01 8E”为寄存器地址,即从该寄存器地址开始读取数据,“00 04”则表示读取4个寄存器,而“25 DE”则为前面“01 03 01 8E 00 04”的CRC校验码,该数值通过CRC16校验算法计算出来的,我们会在其他文章中阐述。该指令的完整解读就是,在地址码为“01”的模块中,从“01 8E”寄存器开始,读取4个寄存器的数据返回至主机。在此,我们可以看到,读取指令中并没有什么数据正文,因为它只是读取相应数量的寄存器,并不需要数据正文,而写操作指令则相反,我们会在后面讲到。

模块返回的指令是:“01 03 08 00 01 00 01 00 01 00 01 28 D7”,返回的指令内容解读就是:“01”表示模块的地址码,“03”表示该指令是读操作返回的指令,“08”表示数据长度,在此表示的是8个字节数据正文(即4个寄存器,每个寄存器两个字节表示),“00 01 00 01 00 01 00 01”是数据正文,表示四个寄存器的状态,“28 D7”就是CRC16校验码。

同样的当我们执行写操作的是,我们举例写第一个开关量输出,即寄存器“0x18E”,主机下发的指令为:“01 10 01 8e 00 01 02 00 00 A8 7E”,该指令的解读就是:“01”表示模块的地址,“10”表示该指令为写寄存器,“01 8E”表示从该寄存器地址开始执行写操作指令“00 01”表示写多少个寄存器,在此为写1个寄存器,“02”表示数据长度,表示数据长度为两个字节,“00 00”表示写入寄存器的数据,在此表示连通,“A8 7E”为CRC校验码。模块返回的指令和读取寄存器的返回的指令类似。

前文所述,Modbus TCP协议是在RTU协议前面添加MBAP报文头,共七个字节长度,其分别的意义是:1.传输标志,两个字节长度,标志Modbus询问/应答的传输,一般默认是00 00。2.协议标志,两个字节长度,0表示是Modbus,1表示UNI-TE协议,一般默认也是00 00。3.后续字节计数,两个字节长度,其实际意义就是后面的字节长度,具体情况详见下文。4.单元标志,一个字节长度,一般默认为00,单元标志对应于Modbus RTU协议中的地址码,当RTU与TCP之间进行协议转换的时候,特别是Modbus网关转换协议的时候,在TCP协议中,该数据就是对应RTU协议中的地址码,具体情况详见下文。

通过上面的描述我们差不多能够理解Modbus RTU协议,我们再说说Modbus TCP通信协议,前面就已经说过TCP协议就是在RTU协议的基础上去掉校验码以及加上五个0和一个6,当是读取相关寄存器的时候,该说法是没有错的,比如上文的“01 03 01 8E 00 04 25 DE”读取指令,用TCP协议来表述的话,指令是“00 00 00 00 00 06 00 03 01 8E 00 04”,由于TCP是基于TCP连接的,不存在所谓的地址码,所以06后面一般都是“00”(当其作为Modbus网关服务器挂接多个RTU设备的时候,数值从01-FF).即“00 03 01 8E 00 04”对应的是RTU中去掉校验码的指令,前面则是五个0以及一个6。其中6表示的是数据长度,即“00 03 01 8E 00 04”有6个字节长度。而当其为写操作指令的时候,其指令是“00 00 00 00 00 09 01 10 01 8e 00 01 02 00 00”,其中“00 09”表示后面有9个字节。

Modbus RTU与Modbus TCP读指令对比:

ModBus1.png


指令的涵义:从地址码为01(TCP协议单元标志为00)的模块0x18E(01 8E)寄存器地址开始读(03)四个(00 04)寄存器。

Modbus RTU与Modbus TCP写指令对比

 Modbus2.png

指令的涵义:从地址码为01(TCP协议单元标志为00)的模块0x18E(01 8E)寄存器地址开始写(10)一个(00 01)寄存器,具体数据长度为2个字节(02),数据正文内容为00 00(00 00)。

通过串口抓包我们知道了,Modbus TCP与Modbu RTU的区别。我们可以看出在SimpleWiFi系列的串口转WiFi模块S2W-M02以及S2W-M03内部的Modbus支持,就是按照上述协议进行转换。主要完成了WiFi接收到网络层的modbus协议后,将modbus TCP头部的几个自己去掉。然后在数据包的结尾增加CRC的校验即可。


 
北京博安瑞通科技有限责任公司
所在区域: 北京.北京 邮编: 100070
公司地址: 丰台区新村四里 联系人:张民 先生 ()
办公电话: 010-61223246 传真: 没填
移动电话: 15601091495 电邮: 登录查看或通过本网留言
公司主页: http://www.bo-antech.com
通过中国电气自动化网在线联系该用户:
关于:
需求意向:
* 验证码: 点击可刷新
 
用户: 密码:  
如果您还不是中国电气自动化网(www.ea-china.com)的注册用户,立刻免费注册

   企业新闻 更多
· 皮尔磁汉诺威工博会前瞻:配备防护...
· 皮尔磁:展望欧洲自动化市场未来...
· 皮尔磁:拥抱开放式安全总线...
· 引领行业标准,皮尔磁成功举办《G...
· 皮尔磁:乳制品码垛系统成功改造,...
· 皮尔磁即将亮相汉诺威工博会:转型...
· 践行轨交数字化—上海兆越亮相“十...
· 掌握欧盟新机械法规:皮尔磁培训课...
  产品新闻 更多
· 皮尔磁:安全雷达系统PSENra...
· 皮尔磁:PNOZ m B1 Bu...
· 皮尔磁:全新升级的雷达系统无惧严...
· 皮尔磁:带锁定功能的机械开关,你...
· 关于变频伺服驱动器“回南天”注意...
· 皮尔磁:通过EtherCAT实现...
· 皮尔磁:PNOZmulti co...
· 皮尔磁:PSS4000头模块芯片...

广告服务 | 关于我们 | 网站地图 | 分类索引 | 服务条款 | VIP会员服务 |《电气自动化企业大全》| 版权声明

客服专线:0898-68552405     媒体合作QQ:910167442
中国电子商务服务联盟成员单位 琼ICP备17003754号
中国电气自动化网 版权所有 © Copyright By Electric Automation of China