基于TCP/IP协议的Modbus (2)

基于TCP/IP协议的Modbus

3. Transmission Control Protocol (TCP)

TCP是基于传输层的协议(如图4所示),协议文件可从RFC793得到,使用广泛,面向连接的可靠协议。
它能把报文分解为数段,在目的站再重新装配这些段,支持重新发送未被收到的段,提供两台设备间的全双工连接,允许它们高效地交换大量数据。
TCP使用滑动窗口协议来高效使用网络。由于TCP很少干预底层投递系统的工作,它适应各种投递系统;且提供流量控制,能使各种不同速率的系统进行通信。报文段是TCP所使用的基本传输单元,用于传输数据或控制信息。

基于TCP/IP协议的Modbus

4. TCP端口

TCP是使用端口(Socket)号把信息传到上层,为用户提供不同服务,端口号跟踪同一时间内通过网络的不同会话。RFC1700中定义了众所周知的特殊端口号,常用端口如表2所列。其中502端口是自动化公司唯一所拥有的端口号码。

基于TCP/IP协议的Modbus

5. 协议(Protocal)的功能

组建网络时,必须选择一种网络通信协议,使得用户之间能相互进行“交流”。
协议是网络设备用来通信的一套规则,可理解为一种彼此都能听懂的公用语言。如在网络层使用IP协议,在传输层使用TCP协议,就构成了目前常用的TCP/IP协议,
现在几乎所有厂商和操作系统都支持它。同时,TCP/IP也是Internet的基础协议。

如在应用层使用工业上事实标准的Modbus协议(如图5所示),就构成了完整工业以太网应用。

基于TCP/IP协议的Modbus

四 开放和标准的Modbus TCP

Modbus是开放协议,IANA(Internet Assigned Numbers Authority, 互联网编号分配管理机构)给Modbus协议赋予TCP端口502,Modbus协议可免费从得到。

Modbus是标准协议,它已提交给IETF(Internet Engineering Task Force, 互联网工程任务部),将成为Internet标准。
因自1978年,工业自动化行业已安装了百万计串口Modbus设备和十万计Modbus TCP/IP设备,拥有超过300个Modbus兼容设备厂商,还有90%的第三厂家I/O支持Modbus TCP/IP,所以是使用广泛的事实标准。
Modbus的普及得益于使用门坎很低,无论用串口还是用以太网,硬件成本低廉,Modbus和Modbus TCP都可以免费得到,不需交任何费用,且在网上有很多免费资源,如C/C++、JAVA样板程序、ActiveX控件、各种测试工具等,所以用户使用很方便。
另外,几乎可找到任何现场总线到Modbus TCP的网点,方便用户实现各种网络之间的互联。

1. Modbus TCP/IP

如果使用TCP/IP以太网的5层:

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

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

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

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

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

2. Modbus TCP数据帧

在TCP/IP以太网上传输,支持Ethernet II和802.3两种帧格式。图6所示,Modbus TCP数据帧包含报文头、功能代码和数据3部分。

基于TCP/IP协议的Modbus

MBAP报文头(MBAP、Modbus Application Protocol、Modbus应用协议)分4个域,共7个字节,如表3所示。

基于TCP/IP协议的Modbus

3. Modbus功能代码

共有3种类型分别为:

(1) 公共功能代码(如表4所示):已定义好的功能码,保证其唯一性,由Modbus.org认可;

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

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

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzpfzj.html