电子开发网

电子开发网电子设计 | 电子开发网Rss 2.0 会员中心 会员注册
搜索: 您现在的位置: 电子开发网 >> 电子开发 >> PLC基础入门教程 >> 正文

MODBUS-TCP协议讲解,Modbus TCP相比较Modbus RTU的优势

作者:佚名    文章来源:本站原创    点击数:    更新时间:2023/8/25

一、Modbus TCP通信概述


MODBUS/TCP是简单的、中立厂商的用于管理和控制自动化设备的MODBUS系列通讯协议的派生产品,显而易见,它覆盖了使用TCP/IP协议的“Intranet”和“Internet”环境中MODBUS报文的用途。协议的最通用用途是为诸如PLC,I/O模块,以及连接其它简单域总线或I/O模块的网关服务的。


MODBUS-TCP协议讲解 

Modbus TCP协议是在RTU协议前面添加MBAP报文头,由于TCP是基于可靠连接的服务,RTU协议中的CRC校验码就不再需要,所以在Modbus TCP协议中是没有CRC校验码。(使用上的主要区别)。MBAP报文头:

 

事务处理标识 ( 2字节 ) 协议标识( 2字节 ) 长度( 2字节 ) 单元标识符(1字节 )

 

二. 通讯所使用的以太网参考模型


Modbus TCP传输过程中使用了TCP/IP以太网参考模型的5层:

 

第一层:物理层,提供设备物理接口,与市售介质/网络适配器相兼容

 

第二层:数据链路层,格式化信号到源/目硬件址数据帧

 

第三层:网络层,实现带有32位IP址IP报文包

 

第四层:传输层,实现可靠性连接、传输、查错、重发、端口服务、传输调度

 

第五层:应用层,Modbus协议报文

 

三. Modbus TCP数据帧


由于使用以太网TCP/IP数据链路层的校验机制而保证了数据的完整性,MODBUS TCP 报文中不再带有数据校验”CHECKSUM”,原有报文中的“ADDRESS”也被“UNIT ID”替代而加在MODBUS应用协议报文头中。

 

由MBAP 头和PDU 构成, MBAP= Modbus Application Protocol Header(Modbus应用协议) 头部

 

PDU = Protocol Data Unit (数据单元)


 

ADU:Application Data Unit

 

四. Modbus TCP使用的通讯资源端口号


在Modbus服务器中按缺省协议使用Port 502 通信端口,在Modbus客户器程序中设置任意通信端口,为避免与其他通讯协议的冲突一般建议2000开始可以使用。

 

五. Modbus TCP使用的功能代码


按照使用的通途区分,共有3种类型分别为:

 

1) 公共功能代码:已定义好功能码,保证其唯一性,由Modbus.org认可;

 

2) 用户自定义功能代码有两组,分别为65~72和100~110,无需认可,但不保证代码使用唯一性,如变为公共代码,需交RFC认可;

 

3) 保留功能代码,由某些公司使用某些传统设备代码,不可作为公共用途。

 

modbus的操作对象有四种:线圈、离散输入、输入寄存器、保持寄存器

 

线圈:PLC的输出位,开关量,在MODBUS中可读可写

离散量:PLC的输入位,开关量,在MODBUS中只读

输入寄存器:PLC中只能从模拟量输入端改变的寄存器,在MODBUS中只读

保持寄存器:PLC中用于输出模拟量信号的寄存器,在MODBUS中可读可写

根据对象的不同,modbus的功能码有:

 

0x01:读线圈

0x02:读离散量输入

0x03:读保持寄存器

 

0x04:读输入寄存器

 

0x05:写单个线圈

0x06:写单个保持寄存器

0x10:写多个保持寄存器

0x0F:写多个线圈

 

按照应用深浅,可分为3个类别:

 

1) 类别0,客户机/服务器最小可用子集:读多个保持寄存器(fc.3);写多个保持寄存器(fc.16)。

 

2) 类别1,可实现基本互易操作常用代码:读线圈(fc.1);读开关量输入(fc.2);读输入寄存器(fc.4);写线圈(fc.5);写单一寄存器(fc.6)。

 

3) 类别2,用于人机界面、监控系统例行操作和数据传送功能:强制多个线圈(fc.15);读通用寄存器(fc.20);写通用寄存器(fc.21);屏蔽写寄存器(fc.22);读写寄存器(fc.23)。

 

六. Modbus TCP通讯应用举例


在读寄存器的过程中,以Modbus TCP请求报文为例,具体的数据传输过程如下:

 

1) Modbus TCP客户端实况,用Connect()命令建立目标设备TCP 502端口连接数据通信过程;

 

2) 准备Modbus报文,包括7个字节MBAP内请求;

 

3) 使用send()命令发送;

 

4) 同一连接等待应答;

 

5) 同recv()读报文,完成一次数据交换过程;

 

6) 当通信任务结束时,关闭TCP连接,使服务器可以为其他服务。

 

七. Modbus TCP相比较Modbus RTU的优势


1) 当多个网关共同接一个后台服务器,而一个网关下挂接多个485设备时,如果不同的网关挂接同样地址号的485设备时那么后台服务器无法区分是哪个485从设备,并且最多只能限制485设备个数254个,而modbus-tcp协议包含自定义报文头4个字节和数据长度,我们可以通过报文头标识不同的网关或者通过数据长度区分,从而增加了可拓展的485设备个数,很好的解决了问题。

 

2) 目前Modbus TCP/IP协议主要应用领域Internet或Intranet中,而以太网传输距离远、传输速度快,使得应用范围广泛传输距离远、传输速度快,使得应用范围广泛。

 

Tags:modbus-tcp,TCP协议  
责任编辑:admin
请文明参与讨论,禁止漫骂攻击,不要恶意评论、违禁词语。 昵称:
1分 2分 3分 4分 5分

还可以输入 200 个字
[ 查看全部 ] 网友评论
推荐文章
最新推荐
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 在线帮助 - 文章列表
返回顶部
刷新页面
下到页底
晶体管查询