采用Modbus协议实现DCS系统中监控级数据集成
2009-01-20
作者:黄 宁 范轶翔 张 俊
摘 要: 用Modbus协议实现水泥生产生料系统中不同操作站的监控数据集成,采用ATL开发出基于Modbus通讯协议的一种通用接口组件,使得各异构站点可以方便地互连。介绍网络的拓扑结构和实现方法,并把Modbus和其它几种协议如NetDDE、OPC的集成方式作了比较和讨论。
关键词: DCS 监控数据集成 Modbus COM
数据集成是DCS系统中的关键。一个典型DCS系统从结构上可分为四层[1]:现场级、控制级、监控级和管理级。本文讨论的是监控级,在这一级有许多并列的子站,一般采用计算机作为人机接口,各站点可按功能划分,分别采集相应的现场信号和控制某些局部设备。但是,各站点之间不是孤立的,它们必须互相配合、协调才能保证产品质量和实现连续生产,这就需要各站点能互通讯息。另外,上级管理网也需要与监控级子站交互数据,以实现全局的监控和优化。
然而,子站是采用不同开发平台、不同通讯协议组成的异构系统,可能由不同的厂家和个人开发。要为每种协议写一个转换接口或驱动是比较繁琐的,特别是在站点和协议较多的时候。因此,怎样有效集成数据,避免信息孤岛的出现,是DCS系统中常遇到的难点问题之一。
比较好的方法是各站点都采用标准协议进行数据通讯,而不必为每一种协议开发一个通讯接口。目前这方面的协议比较多,Modbus就是其中的一种。
1 Modbus协议简介
Modbus协议包括ASCII、RTU、PLUS、TCP等,并没有规定物理层。此协议定义了控制器能够认识和使用的消息结构,而不管它们是经过何种网络进行通信的[2]。标准的Modicon控制器使用RS232C实现串行的Modbus。RS232C规定了连接器针脚、接线、信号电平、波特率、奇偶校验等信息,Modbus的ASCII、RTU协议则在此基础上规定了消息、数据的结构、命令和应答的方式,如图1所示。数据通讯采用Master/Slave方式,Master端发出数据请求消息,Slave端接收到正确消息后就可以发送数据到Master端以响应请求;Master端也可以直接发消息修改Slave端的数据,实现双向读写。
图2是一个典型的Modbus应用示例。Modbus可以应用在支持Modbus协议的PLC和PLC之间、PLC和个人计算机之间、计算机和计算机之间、远程PLC和计算机之间以及远程计算机之间(通过Modem连接),可见Modbus的应用是相当广泛的。由于Modbus是一个事实上的工业标准,许多厂家的PLC、HMI、组态软件都支持Modbus,而且Modbus 是一个开放标准,其协议内容可以免费获得,一些小型厂商甚至个人都可根据协议标准开发出支持Modbus的产品或软件,从而使其产品联入到Modbus的数据网络中。因此,Modbus有着广泛的应用基础。
在实际应用中,可以使用RS232、RS485/422、Modem加电话线、甚至TCP/IP来联网[3]。所以,Modbus的传输介质种类较多,可以根据传输距离来选择。
2 Modbus的具体应用
这里介绍的Modbus的具体应用是某厂的水泥生料生产质量控制系统。此系统中一共有5个子站:钙铁分析仪、四元素分析仪、料位仪/料浆塞、配料秤、配库。每一个子站由一台计算机和相关软、硬件组成,控制系统组成如图3所示。
从图3可看出,系统基本上是两个控制回路:一路由钙铁分析仪、配料秤及控制算法组成,实现磨前精配,即出磨生料质量的在线实时闭环控制;另一路由四元素分析仪、料浆塞、料位仪组成,实现磨后调配,即入窑前料浆质量的均化控制。配库算法在第二条回路中起控制、优化和网络接口的作用。系统控制参数的改变由两个事件触发:钙铁仪分析的结果和四元素分析的结果。这两个分析结果由对用户定期采得的实际生产中的样品的分析得到。从图3还可看出,各站之间是相互联系的,它们的协作关系到生料生产的质量。
在网络设计中,不仅要实现各站之间数据交换,同时还要考虑到网络的灵活性、通用性、可扩展性。例如,数据源站点应能比较容易地增减数据、目标站点可能有多个、数据流向应该是双向的、所有生料系统的数据需送到厂级DCS中,因此网络的实现比较复杂。
由于Modbus协议具有多样性、可靠性等特点,而且是工业级标准协议,完全可以适合具体应用,因此用Modbus实现网络。
要在每个站点都用源程序实现Modbus是不实际的,因为应用程序开发平台不一样,有Visual C++、Visual Basic、Borland C++等,不可能实现代码复用。但是,每个站点读写Modbus数据的操作又是相同的,为解决这个问题,我们采用COM技术。COM也是软件模块之间数据通讯的标准。COM的特点是语言无关性、对进程的透明性和可以实现二进制重用[4]。因为它的接口是开放的,所以支持COM技术的客户程序可以通过其公共接口调用COM组件的内部功能。众所周知,在Windows2000中,COM+甚至是构成操作系统的基础。
最后,采用ATL开发出了两个COM组件,即Modbus Master组件和Modbus Slave组件。ATL是一个基于C++模板技术的框架,它主要用在基于COM的软件开发上,使用它可以大大简化组件的开发过程并提高代码的效率[5]。Master和Slave组件都包含ASCII、RTU、TCP三种方式,实现了Class0、Class1规定的功能[3]。每个子站的客户程序不需要了解Modbus的具体协议和实现方式,只需调用组件公开出来的方法,就可以与远程计算机交换数据,实现Modbus协议透明、网络数据传输透明。例如Slave端的组件,客户端只需修改其连接数据就可以使变化反应到Master端,而Master端修改了数据后,Slave端会触发事件通知客户。
网络结构没有使用点对点的连接,而是采用了星型连接,在一个站点上建立一个实时数据库,相当于一个数据中心。所有站点都只与数据中心相连,各站数据也发送到数据中心集中。网络结构见图4。
3 讨论
3.1 关于具体应用
图4所示的网络结构中,一方面,系统封装了Modbus协议和网络的实现,实现了功能复用,减少了重复操作,并且使网络调试比较方便;另一方面,星型结构使增加数据、增加站点都很方便,原则上每个站点都可以取得任意站点的数据,而不需要增加新的连接。在图4所示的网络结构下,可以方便地把配库和配料秤相连,实现半库调配(根据料浆库质量反馈控制配料秤配方),将控制回路增加到3条。部分实时数据还可以存入历史数据库,以便长期保存和事后分析查询。
3.2 Modbus协议的其它特点
除了在简介中提到的应用广泛的特点外,Modbus还有其它特点。Modbus协议需要对数据进行校验,串行协议中除了有奇偶校验外,ASCII模式采用LRC校验,RTU模式采用16位CRC校验,但TCP模式没有额外规定校验,因为TCP协议是一个面向连接的可靠协议。另外,Modbus采用主从方式定时收发数据,在实际使用中如果某Slave站点断开后(如故障或关机),Master端可以诊断出来,而当故障修复后,网络又可自动接通。因此,Modbus协议的可靠性较好。
Modbus定义了很多功能,对工业上的实际应用考虑比较全面。而且协议仍在发展中,用户还可以自定义功能码。可见,Modbus的扩展性是比较好的。
对于一些重复发送的检测数据,可以采用Unsolicited方式,即Master端不需发送请求,而由Slave端主动发送数据。这样可以降低网络数据流量,以提高传输速度。因此,Modbus协议应用也比较灵活。
3.3 与NetDDE协议的对比
NetDDE协议有几个缺点:一是技术太老,Win98平台上没有32位的API,只有16位的,因此在32位平台上实现起来较困难,而且NetDDE不能实现串行连接;二是传输数据量小,传输批量数据比较烦;三是连接断开后不能自动恢复。因此,没有使用NetDDE来实现我们的网络。
3.4 工业数据集成的新方向
OPC是一种开放的应用程序之间数据通讯的工业规范和标准,它采用客户/服务器体系,基于OLE/COM技术,为硬件厂商和应用软件开发者提供了一套标准的接口[6]。OPC结构先进、速度快、功能强大,是今后工业数据集成发展的方向。但是,OPC比较新颖,对开发者的要求较高,开发难度较大,而且OPC产品价格比较昂贵,国内DCS应用中尚未普及,其推广和发展还需要一个过程。
总之,Modbus具有开放性、用户范围广、易实现、扩展性好、可靠性强等优点。所以我们采用Modbus协议和COM技术来实现监控数据的集成,在与自开发的应用程序连接和与FOXBORO、ROSEMOUNT、CIMPLICITY等DCS系统及HMI的连接中都取得了比较好的效果。
参考文献
1 白 焰.分散型控制系统与现场总线控制系统.北京:中国电力出版社,2001.3
2 Modicon Modbus Protocol Reference Guide.PI-MBUS-300 Rev. J
3 Open Modbus/TCP Specification. Release 1.0, 29 March 1999
4 潘爱民.COM原理及应用.北京:清华大学出版社,1999.11
5 Tom Armstrong著,董梁等译.ATL 开发指南.北京:电子工业出版社,2000.11
6 马国华.监控组态软件及其应用.北京:清华大学出版社, 2001.8