基于OPC技术的DCS监控系统设计
2009-06-15
作者:姜 萍1,段新会2,王 锐3
摘 要:在研究OPC技术规范的基础上,利用OPC服务器快速开发工具KOSRDK设计了OPC服务器程序,采用工控组态软件组态王开发了OPC客户端应用程序,设计构建了具有开放接口功能的DCS监控系统。
关键词:OPC;集散控制系统;监控系统;组态王
在工业控制领域,随着生产规模的扩大和系统复杂程度的提高,需要把种类丰富、数量众多的软件与硬件设备集成于系统之中。过去,为了实现不同生产装置的集散控制系统DCS(Distributed Control System,)和数据采集接口之间的数据通信,需要花费很多时间开发专用的通信接口程序,而OPC标准的出现解决了这一难题。
基于OPC技术规范,设计构建了具有开放接口功能的DCS监控系统。利用OPC服务器快速开发工具KOSRDK在Visual C++ 6.0中设计了OPC服务器程序,实现了DCS监控级设备对现场数据的实时采集。采用工控组态软件组态王开发了OPC客户端应用程序,完成DCS操作员站的监控画面设计。
1 OPC规范
OPC(OLE(Object Linking and Embedding)for Process Control),是以OLE/COM/DCOM 机制作为应用程序级的通信标准,采用Client/Server模式,把开发访问接口的任务放在硬件生产厂家或第三方厂家,以OPC服务器的形式提供给用户,解决了软、硬件厂商的矛盾,提高了系统的开放性和可互操作性[1]。OPC为工业控制设备与应用软件之间建立了统一的数据存取规范,这个接口规范不但能够应用于独立计算机,而且可以支持网络上不同应用程序之间的通信,以及不同平台上应用程序之间的通信[2],具有语言无关性、代码重用性、易于集成性等优点。OPC规范了接口函数,不管现场设备以何种形式存在,客户都可以统一的方式访问,从而保证软件对客户的透明性,使得用户完全从低层的开发中脱离出来[3]。
OPC基金会已经推出了OPC数据访问、报警与事件、历史数据访问、批量过程、数据交换、安全规范和XML-DA规范[4],本文主要应用OPC数据访问规范进行DCS监控系统的设计。
OPC数据访问规范主要解决服务器和客户端之间实时数据存取问题。在传统监控系统的基础上,应用OPC技术规范数据存取机制,可以实现数据共享,提升监控系统的开放性和设备兼容性。当各应用软件都采用OPC的接口规范时,它们便可通过OPC接口方便地实现连接,从而增强软件间的数据交换效率。
2 DCS监控系统的设计
2.1 DCS的总体构成
面向中小型用户的需求进行集成开发的集散控制系统主要由现场控制级和监控级构成。
现场控制级硬件装置采用台湾研华公司MIC-2000系列的机箱、核心控制器和I/O 板卡。控制机箱为MIC-2000/11,自带电源,共有11个插槽,ISA总线为机箱内部印刷电路板,把控制器和 I/O 板卡连接在一起。核心控制器采用一体化集成网络功能的MIC-2352模块板,提供了一个小尺寸、全功能、低费用、在有限空间内支持网络和显示器的全方位的板上解决方案。本系统中,将嵌入式实时操作系统 Windows CE.NET和基于Embedded VC开发的应用程序固化在一张256MB电子盘上。I/O 板卡主要有模拟量输入模块(AI)MIC-2718、模拟量输出模块(AO)MIC-2728、数字量输入模块(DI)MIC-2732、数字量输出模块(DO)MIC-2752和符合RS-485总线协议的远程采集ADAM4000系列模块[5]。
为解决传统系统开放性差和互操作性不强的问题,基于OPC技术构建了监控系统。选用高性能PC机,Windows XP操作系统,其软件结构如图1所示。
基于OPC技术的监控系统开发划分为3层进行:(1)OPC数据源层;(2)OPC服务器层;(3)OPC客户层。实现了各厂商间的大量设备互联和过程数据共享,构成完全意义上的全开放系统,解决了产品兼容性问题。
2.2 OPC数据源层设计
数据源层的硬件设备是控制站机柜,通过各种I/O板卡(MIC2000系列)对现场设备进行连接,作为数据源,通信协议符合TCP/IP标准。控制站机柜通过KOSRDK.DLL的接口函数将数据传到数据缓冲区,形成本地列表,并经过OPC服务器的驱动将数据进行传递,生成OPC服务器列表,供客户层的组态软件使用。
2.3 OPC服务器层设计
OPC服务器屏蔽了现场数据源层的设备驱动程序,应用程序开发人员看到的只是OPC服务器提供的统一接口,不必关心现场设备的驱动程序。利用OPC服务器快速开发工具包KOSRDK进行OPC服务器的开发。KOSRDK工具使用面向对象的技术,并将OPC规范所定义的COM接口实现封装动态链接,定义了Callback基类、Browser基类和Tag基类,这些类中定义了构建数据路径、访问数据和提交数据的虚函数接口,开发者通过类的派生以及重载这些虚函数对数据的访问和提交进行定制,简化了OPC服务器的开发过程。
OPC数据访问规范规定OPC服务器包含3种对象:(1)Server对象;(2)Group对象;(3)Item对象。Server对象包含了OPC Server的相关信息,可以对Group对象进行添加和删除,是Group对象的容器。Group对象包含了这个组的相关信息,并提供逻辑上包含组织Item对象的机制。Item对象与数据项关联,每个数据项须具备Value、Quality和Timestamp 3个属性[6]。
利用KOSRDK工具开发了OPC服务器程序,通过标准接口向客户层提供数据访问服务。同时,OPC客户端通过OPC服务器对设备进行驱动访问,从而实现了OPC服务器对上、对下的数据传输过程。主要实现过程及其相关的函数如下:
(1)服务器初始化:调用KOS_Init( )函数。
(2)设置CALLBACK回调函数。
实现客户程序和OPC Server DLL之间的数据通信,主要调用如下函数:
(1)客户端写数据ClientWrite Proc
当连接到服务器的客户端发出写请求时,OPC Server DLL将会调用此回调函数,写数据请求的参数作为该函数的参数:KOS_SetCIientWriteProc(&ClientWriteProc)。
客户端的ClientWriteProc定义:
Void CALLBACK EXPORT ClientWriteProc(HANDLE Handle,VARIANT*pVar)
(2)客户端关闭ClientShutdownProc
当连接到服务器的客户端从服务器断开时,OPC Server DLL将调用下面函数:
KOS-SetClientShutdownProc(&ClientShutdownProc);
客户端的ClientShutdownProc定义:
Void CALLBACK EXPORT ClientShutdownProc(UINT wClientCount)
wClientCount为剩余客户端数目,为0时表示可以停止扫描、关闭服务器。
(3)注册和反注册
OPC服务器必须在系统中注册后才能被OPC客户程序检索,注册和反注册将使用CLSID、服务器名称等参数:
KOS_Register(CLSID_Svr,m_strSvrName,m_strSvrDesc,strFile);
KOS_UnRegister(CLSID_Svr,m_strSvrName);
(4)添加OPC项
服务器的初始化完成后需要添加项OPC Server DLL中,客户才能检索和使用OPC项。
HANDLE WINAPI KOS_AddItem(Cstring Name,VARIANT Value,WORDInitialQuality,BOOL IsWritable);
(5)更新OPC项的值
BOOL WINAPI KOS_UpdateItem(HANDLE ItemHandle,VARIANT Value,WORD Quality);
(6)关闭服务器
① 如果有客户连接,发出断开连接请求。
② 如果用户使用了new等操作符,释放所有这些已分配内存。
③ 调用KOS_RemoveItem( )从OPC服务器中删除己添加OPC项。
④ 调用KOS_UnInit()完成OPC服务器的退出。
编译运行OPC DA服务器程序后,进行注册,在服务器主界面中可显示Item的名称、数据类型、数据值、时间戳和数据质量。
2.4 OPC客户层的设计
客户端采用北京亚控自动化软件科技有限公司开发的工控组态软件——组态王,访问由OPC服务器层提供的数据。组态王支持OPC规范,并提供强大、高效的组态功能和网络应用。客户层使用组态王软件完成DCS监控系统的画面组态、归档、报警、报表等功能,为工厂管理信息系统提供数据。现场操作员和工程师可以方便地在客户监控界面上监视生产流程,控制设备运行和调整工艺配方等。
采用组态王做OPC客户端,实现与OPC服务器的数据链接,主要通过3个步骤实现:
(1)在组态王中建立OPC服务器设备
当组态王作为OPC客户端使用时,OPC服务器就作为组态王的一个设备。需要在组态王工程浏览器的“设备”项目中将“OPC服务器”加入。
(2)在数据库中定义变量
在DCS监控系统中通常由数据库来管理大量的数据,组态王中数据库变量的集合称为“数据词典”,为了实现OPC服务器端与客户端的数据交换,需在组态王的数据字典中定义变量,OPC服务器作为连接设备提供数据。
在组态王的数据词典中,选择I/O类型变量,连接设备选择OPC服务器。寄存器下拉式菜单中列出了在OPC服务器中定义过的所有项目名及数据项,选择对应的数据项和各自的数据类型和读写属性后,就将OPC服务器中的Item加入到了客户端数据词典中,完成了各变量的连接,如图2所示。
(3)OPC服务器与客户端的连接测试
完成OPC服务器程序和客户端组态王工程后,先对OPC服务器进行注册操作,再进行连接测试,检验OPC服务器是否能把它从设备端读到的数据正确传给OPC客户端;同时检验OPC客户端是否能对设备操作值进行改写,是否完成数据的双向传送。
图3所示为OPC服务器与客户端连接成功的测试实例。客户端的“主汽温度”和“阀门开度”,对应服务器的Item项是“a.a.f”和“a.a.c”。“主汽温度”是由服务器传给客户端的现场实时采集数据,“阀门开度”是客户端发送给服务器的操作员指令。可见,OPC服务器中Item的时间戳(Timestamp)同客户端的显示时间一致,品质(Quality)为“OPC_QUALITY_GOOD”,Item的值(Value)与客户端监控画面显示一致,由此实现了数据的双向传送。
OPC技术规范是新兴的工业控制领域标准,把硬件供应商和应用软件开发者分离开,使得双方的工作效率都有了很大提高。OPC标准的制订,使所有的通信连接问题变得简单,对开发DCS全开放性的监控系统起到了重要作用,实现了各厂商之间的大量设备互联和过程数据共享,解决了产品兼容性问题。本文遵循OPC标准,利用KOSRDK工具包和组态王软件,构建了DCS监控系统,实现方法效率高,周期短。
参考文献
[1] 何杨欢. OPC技术在DCS数据采集系统中的应用[J]. 化工进展,2006,25(12):1496-1498.
[2] 胡海江,金朝晖,杨新照,等. 基于OPC技术的FF总线远程监控[J]. 微计算机信息,2006(1-1) :4-5.
[3] 李京,宋真君.工控软件互操作规范OPC技术讲座:第一讲[J]. 自动化仪表,2002,4(23):68-70.
[4] 周江建,周运森.中间件OPC技术在工业控制系统中的应用.计算机工程,2004(12): 43-45.
[5] 姜萍.基于Windows CE.NET 4.2的分散控制系统开发[J].微电子计算机,2007,24(6):218-235.
[6] 张胜. 如何用Knight OPC server rapid development kit实现OPC数据访问服务器[J]. 国外建材科技,2006,27(2):218-235.