现代工业控制系统的架构早已网络化,随着工业控制系统性能的提升,网络化需求也在不断演进,其主要特征表现为:各类控制系统的网络互连与互操作;控制器或控制站与远程I/O的通信连接;现场总线应用的日趋广泛;与管理信息系统的数据集成。因此,建立不同控制系统之间的通信,已成为自动化工程实施中的常态化需求,而MODBUS则是最为常用的通信方式之一。
MODBUS通信协议
1、MODBUS协议简介
MODBUS通信协议是Modicon公司1979年提出的一种报文传输协议,它在工业控制领域中得到了广泛的应用,已成为一种事实上的工业标准。不同厂商生产的控制设备通过MODBUS协议可以进行数据传输,实现集中监控。许多工控产品,例如:DCS,PLC,变频器,人机界面和自动化仪表等,大都支持MODBUS协议。MODBUS网络体系结构如图1所示。
图1 MODBUS网络体系结构示意
MODBUS通信协议包括3类、4个子协议,分别是:
①基于串行链路的MODBUS RTU与MODBUS ASCII通信协议。
②基于TCP/IP网络的MODBUS TCP通信协议。
③基于令牌环网的MODBUS Plus通信协议。事实上,MODBUS协议只定义了OSI模型的第2和7层,即:应用层和数据链路层。它在连接至不同类型总线或网络的设备之间提供客户机/服务器通信,并将串行链路上的协议标准化,以便在1个主站和1个或多个从站之间交换MODBUS请求。
④MODBUS应用层报文传输协议。提供了连接于总线或网络的设备之间的客户机/服务器通信。
⑤MODBUS串行链路协议。提供了连接于串行链路的设备之间的主/从通信,在MODBUS串行链路上,客户机的功能由主节点提供,而服务器功能由从节点实现。
对于不同类型的MODBUS协议,其应用层基本相同,但其他层各不相同。MODBUS RTU与MODBUS ASCII通信协议只有OSI模型的第1,2和7层,各层使用的协议分别为:物理层采用RS485或RS232协议;数据链路层采用MODBUS串行链路协议;应用层采用MODBUS应用层报文传输协议。MODBUS TCP通信协议拥有OSI模型的第1,2,3,4和7层,各层使用的协议分别为:物理层采用以太网物理层协议;数据链路层采用以太网IEEE802.3协议;网络层采用IP协议;运输层采用TCP协议;应用层采用MODBUS应用层报文传输协议。
2、MODBUS协议描述
通用MODBUS帧的结构如图2所示。MODBUS协议定义了1个与基础通信层无关的简单协议数据单元(PDU),特定总线或网络上的MODBUS协议映射可以引入一些附加域,从而构成应用数据单元(ADU)。
图2 通用MODBUS帧结构示意
MODBUS是1个请求/应答协议,并且提供功能码规定的服务。MODBUS功能码是MODBUS请求/应答PDU的关键元素。有三类MODBUS功能码,分别是:公共功能码、用户定义功能码和保留功能码,其取值为1-127的十进制整数。常用公共功能码定义见表1所列。
表1 常用公共功能码定义
①公共功能码是由MODBUS组织确认的、被确切定义的、唯一的功能码,包含已被定义的公共功能码和保留给未来使用的功能码。
②用户定义功能码。MODBUS分配有2个用户定义功能码的区域,即:65-72和100-110的十进制数。用户可以自行选择和实现的1个功能码,但不能保证被选功能码的使用是唯一的。
③保留功能码。某些公司在传统产品上现行使用的功能码,不作为公共使用。
对于MODBUS的4种通信子协议而言,MODBUS Plus仅用于Modicon公司的PLC中,MODBUS ASCII用于串行通信链路不稳定的情况下,而MODBUS RTU与MODBUS TCP则是最为常用的子协议。MODBUS通信协议是一种公开的协议,这也是它得到广泛应用的原因之一。目前,MODBUS通信协议已有国家标准(GB/T 19582—2008),而MODBUSTCP通信子协议,已被发布为国际标准(IEC 61158)。
MODBUS通信的实施
1、基于工程角度的协议理解
尽管MODBUS通信协议是公开的,但由于协议的描述主要是面向产品研发人员,故内容繁多、术语深奥,非通信专业出身的控制工程师很难理解。因此,基于工程角度的协议理解至关重要,也非常实用。
①功能码的有限性
功能码具有唯一性,选定了功能码就意味着确定了要执行的操作及数据对象。例如:功能码02,就是对离散变量输入(DI)的存储区进行读操作。
现行的公共功能码共21个,但常用的功能码只有8个(参见表1),大多数工业控制系统只支持有限的功能码。例如:Siemens S7-200 PLC支持表1中的全部8种功能码;国核自仪系统工程有限公司的NuCON-P DCS支持01,02,03,04,15和16共6种功能码;而UPS一般只支持02和04两种功能码。极端情况下,有些工业控制系统只支持03和06两种功能码,但只要有布尔量的打包指令,仍可以实现2个控制系统之间的双向MODBUS通信。
②MODBUS通信的可读化
MODBUS通信帧比较抽象,还要指定数据读/写的地址,直接使用比较困难。为解决该问题,工业控制系统都提供了相应的MODBUS通信指令,以支持MODBUS通信的可读化。MODBUS通信指令形态各异,但核心功能只有两点:
a)以可读的形态提供给编程者,定义地址、功能、数据类型、传输速率、差错校验方式等通信要素。
b)根据控制系统自身的指令体系,给出数据读/写的内存地址。实质上,MODBUS通信指令建立了一种映射,提供了标准MODBUS通信帧与控制系统自身的指令体系以及内存地址之间的对应关系。
③不违反MODBUS通信协议的个性化约束
在不违反MODBUS通信协议的前提下,一些工业控制系统规定了自己的通信个性化约束。例如:只有在支持01功能码的情况下,才能使用05功能码,在实施过程中,有必要了解该类个性化约束。
④功能码数制导致的二义性
功能码具有唯一性,但它允许使用十进制或十六进制来表示,在应用中有时会产生二义性。因此,当通信双方论及功能码时,要说明使用何种数制来表征功能码,以避免误导,造成交流困难。
2、通信介质与通信设备的选择
MODBUS RTU和MODBUS ASCII的物理层主要采用RS485协议,通信介质为有屏蔽的两芯双绞线,也支持光纤连接。MODBUS TCP的底层协议为以太网协议,通信介质为无屏蔽的八芯双绞线,也支持光纤连接。
MODBUS的通信设备主要有以下3类:
①RS485集线器
RS485集线器又称485HUB,是支持RS485物理层协议的通信设备,使用它可以构成MODBUS RTU,MODBUS ASCⅡ或Profibus-DP通信网络。RS485集线器的基本结构:设备侧多个RS485端口,监控侧1个RS485/RS232端口进行信号的转发,无协议转换功能。RS485集线器的核心功能是:将设备侧MODBUS从站的手牵手连接方式变换成星型连接方式,方便布线,并提高了通信链路的可靠性。
②串口服务器
串口服务器是一侧支持RS485物理层协议、另一侧支持以太网协议的通信设备,使用它可以将串口通信设备方便地接入TCP/IP网络,实现数据的双向透明传输,进而构成长距离的MODBUS RTU,MODBUS ASCⅡ或Profibus-DP通信网络。串口服务器的基本结构:设备侧多个RS485端口,监控侧1个以太网端口,内置CPU、实时操作系统、支持RS485和TCP/IP协议。串口服务器的核心功能是:将设备侧485从站的手牵手连接方式变换成星型连接方式,方便布线,并提高通信链路的可靠性;将485总线的数据帧和TCP/IP网络的数据报文进行双向转换,借助TCP/IP网络进行数据传输,构成长距离的485总线,实现MODBUS RTU,MODBUS ASCⅡ或Profibus-DP的远程通信。特别地,当设置成Real COM模式时,可以将监控计算机侧的以太网口仿真成虚拟串口,建立虚拟串口对现场串口设备的透明映射。
③MODBUS通信网关
MODBUS通信网关是一侧支持MODBUS RTU或MODBUS ASCⅡ协议,另一侧支持以太网协议的通信设备,使用它可以将MODBUS串口通信设备方便地接入TCP/IP网络,实现数据的双向透明传输。MODBUS通信网关的基本结构:设备侧多个RS485端口,监控侧1个以太网端口,内置CPU、实时操作系统、支持MODBUS RTU/ASCⅡ和MODBUS TCP协议。MODBUS通信网关的核心功能是:将设备侧MODBUS从站的手牵手连接方式变换成星型连接方式,方便布线,并提高通信链路的可靠性;完成MODBUS RTU/ASCⅡ和MODBUS TCP之间的协议转换;当MODBUS通信网关设置为MODBUS TCP服务器时,可以支持多达16个MODBUS TCP客户端的连接。
在建立MODBUS通信时,通信设备的选择需要综合考虑布线方式、通信距离、监控侧应用程序的接口方式以及设备成本等因素。例如:如果监控侧应用程序只提供了MODBUS RTU接口,就应当选择串口服务器作为通信设备。
3、MODBUS的调试工具
Modscan32是一款第三方的MODBUS调试软件,它免安装、已汉化、小巧(2.2M)、运行在Windous环境下,可以将个人电脑模拟成MODBUS主站,使用MODBUS RTU或MODBUS ASCII协议,与MODBUS从站通信。该调试软件的主要功能是:排除故障,可以直接检验通信链路的连接和MODBUS从站侧的状态;核对数据,可以直观地观察一段连续的寄存器地址,检查核对数据点;确定配置,调试无误后直接将配置参数转移到工业控制系统里。
MODBUS应用实例
在某垃圾发电项目中,需要建立国核自仪系统工程有限公司的NuCON-P DCS(主站)与Siemens公司的S7-200PLC(从站)之间的双向MODBUS通信,这属于异构控制系统的通信问题,需要在不同的控制平台里分别进行配置和测试。MODBUS通信方式如图3所示。
图3 MODBUS通信方式示意
在该实例中,用于旋转喷雾器控制的从站为S-200 CPU224XP,双RS485端口,采用自由端口通信协议,支持MODBUS通信;主站为NuCON-P配置的MODBUS通信卡,4通道,它与旋转喷雾器PLC之间的通信独占1个通道。尽管DCS与PLC两侧的通信组态和通信指令形式上大相径庭,但本质上是一致的,基本包括以下几个部分:
①通信参数。从站侧:从站地址26,波特率9600bit/s,奇偶校验方式(偶校验)等;主站侧:9600bit/s,奇偶校验方式(偶校验)等。
②操作参数。主站侧:隐含给出功能码,本例中:“只读:3区”意味着使用功能码04。
③存储地址。从站侧:给出寄存器区起始地址(间接寻址方式&VB1000);主站侧:给出寄存器区间(00000-00015)、寄存器数量(16)和映像区位置(AI:155-170)。
④辅助参数。主要在从站侧:模式选择参数、限值参数、执行标志、完成标志、错误代码等。
结束语
建立异构控制系统之间的MODBUS通信是自动化工程中常见的案例,也是技术难点之一。因此,操作工程师不仅要对MODBUS通信协议的基本原理有较深理解,还要熟悉通信两端控制系统的硬件结构与指令系统,这些经验均需要在实践中不断积累与提升。
作者:黄达(国核自仪系统工程有限公司)
相关阅读
RS485和MODBUS的区别与联系
谈谈MODBUS协议数据模型和地址模型