0 引言
随着计算机科学技术、工业控制等方面的新技术的迅速发展,计算机监控系统由早期的集中式监控向全分布式的方向发展,计算机监控系统软件也从早期面向功能的系统,随着面向对象技术、分布式对象计算、多层次Client/Server技术的成熟,发展为面向具体现场设备为特征的面向对象的计算机监控系统。
同时,计算机监控系统规模越来越大,不同厂家生产的现场设备的种类在不断的增加,由于不同厂家所提供的现场设备的通讯机制并不相同,计算机监控系统软件需要开发的设备通信驱动程序也就越来越多,而基于COM/DCOM技术的OPC技术,提供了一个统一的标准,不同厂商只要遵循OPC技术标准就可以实现软硬件的互操作性。
1 OPC简介
1.1 OPC的概念及技术优势
OPC(OLE for Process Control)是为过程控制设计的OLE技术,由一些世界上占领先地位的自动化系统和硬件、软件公司与微软(Microsoft)紧密合作而建立的,OPC基金会负责OPC规范的制定和发布。OPC提出了一套统一的标准,采用CLIENT/SERVER模式,针对硬件设备的驱动程序由硬件厂商或专门的公司完成,提供具有统一OPC接口的SERVER程序,软件厂商按照OPC标准访问SERVER程序,即可实现与硬件设备的通信。
与传统的方式相比,OPC技术具有以下优势:
a. 硬件厂商熟悉自己的硬件设备,因而设备驱动程序性能更可靠、效率更高。
b. 软件厂商可以减少复杂的设备驱动程序的开发周期,只需一套遵循OPC标准的程序就可以实现与硬件设备的通信,并可以把人力、物力资源投入到系统功能的完善中。
c. 可以实现软硬件的互操作性。
OPC把软硬件厂商区分开来,使得双方的工作效率有了很大的提高,因此
OPC技术得到了广大软硬件厂商的支持,并迅速发展。 国家电力公司电力自动化研究院自动控制所开发的EC2000计算机监控系统软件对提供OPC Server的设备全面支持。
1.2 OPC技术的本质——COM/DCOM
随着计算机网络技术的发展,计算机监控系统也普遍的采用了分布式结构,因而系统的异构性是一个非常显著的特点。OPC技术本质是采用了Microsoft的COM/DCOM(组件对象模型/分布式组件对象模型)技术,COM主要是为了实现软件复用和互操作,并且为基于WINDOWS的程序提供了统一的、可扩充的、面向对象的通讯协议,DCOM是COM技术在分布式计算领域的扩展,使COM支持在局域网、广域网甚至Internet上不同计算机的对象之间的通讯。
1.3 OPC规范
基于COM/DCOM技术的OPC采用客户/服务器结构,为各厂家提供了一个公用的数据交换标准和规范,各个硬件设备厂家为其设备提供一个符合OPC规范接口的服务器,其他应用程序通过OPC接口对OPC服务器的访问实现对硬件设备的读写,由此软件开发者只需要开发一套OPC CLIENT程序,而不需要了解各硬件设备的通讯协议,也不需要为市场上几百种的硬件设备写专门的驱动程
序。
OPC规范主要包括OPC服务器(SERVER)和OPC 应用程序(CLIENT)两部分。其中一个OPC CLIENT可以连接一个或多个OPC 服务器,而多个OPC CLIENT也可以同时连接一个OPC 服务器,如图1所示。
图1:OPC CLIENT/OPC SERVER关系
2 OPC服务器组成
OPC服务器由3类对象组成:服务器(SERVER)、组(GROUP)、和数据项(ITEM)。
服务器对象保存服务器和服务器作为OPC组对象容器的所有信息。
OPC组对象保存组对象的信息,并提供组织OPC数据项的机制。OPC组对象为客户提供了组织数据的一种方法。例如,一个组可能代表一个特殊设备的数据项。OPC CLIENT可以通过组对象来读写数据,并可以设定OPC服务器应该提供给OPC CLIENT的数据更新速率。OPC规范定义了2种组对象:公共组和私有组。公共组由多个客户共享,局部组只隶属于一 OPC客户。全局组对所有连接在服务器的应用程序都有效,而私有组只能对建立他的CLIENT有效。在一个SERVER中,可以有若干个组。
OPC 数据项代表到OPC 服务器的数据源连接,并不是数据源,数据项是读写数据的最小逻辑单位(在实际应用中,可能是物理设备的寄存器或寄存器的某一位),数据项不提供对外接口,不能作为单独的对象供OPC CLIENT访问,必须隶属于某一个组,所有对OPC数据项的访问必须经过包含OPC数据项的组对象,即必须通过组对象才可以访问到OPC数据项。在一个组对象中,客户可以加入多个OPC数据项。每个数据项包括3个变量:值(Value)、品质(Quality)和时间戳(Time Stamp)。数据值是以VARIANT形式表示的。
图2:Server/Group/Item关系
3 OPC CLIENT 应用程序
3.1 OPC接口
OPC规范有两种接口方式:自定义接口(Custom Interface)和自动化接口
(Automation Interface)。自定义接口是一组COM接口,主要用于采用C++语言的的应用程序开发;自动化接口是自动化的OLE接口,主要用于采用VB,DELPHI等基于脚本编程语言的应用程序开发。
图3:两种接口的OPC服务器通信方式
自动化接口
自定义接口
C++
客户程序
VB
客户程序
OPC服务器(本地、进程内、远程)
图3两种接口的OPC服务器通信方式
对于客户端应用程序的开发,采用自定义接口的方式运行效率高,但开发难度大;采用自动化接口的方式运行效率低,但开发简单。利用这两种接口与OPC服务器的通信见图3。
对于分布式的对象上的OPC客户程序的开发,OPC标准采用DCOM技术实现服务器和客户程序的通讯。
3.2访问OPC服务器进行数据交互
由图2可以看出,OPC服务器可分为三层结构,SERVER,GROUP和ITEM。
在实际访问OPC服务器时,第一步要完成COM库的初始化,然后创建一个服务器对象,建立与服务器的连接,获得服务器对象的接口;第二步要添加组对象,
并设定数据刷新速率,死区等参数;第三步添加数据项对象,数据项对象有只读,只写等属性,可以根据实际需要设置属性。
OPC客户和OPC服务器进行数据交互有2种访问方式:同步和异步方式。
同步方式实现较为简单,客户向服务器发出读写请求,然后等待服务器返回信息,当客户数据较少而且同服务器交互的数据量比较少的时候可以采用这种方式,然而当网络堵塞或大量客户访问时,会造成系统的性能效率下降。
异步方式实现较为复杂,客户向服务器发出读写请求后,服务器立刻返回信息表示请求已接受,客户可以进行其他处理,当服务器完成读写操作后,通过调用回调函数,通知客户程序操作完成,并传递相应的信息,因此异步方式的效率更高,能够避免多客户大数据请求的阻塞,并可以最大限度地节省CPU和网络资源。另外一种异步方式是服务器周期性的扫描缓冲区的数据,发现数据变化范围超过死区后,立刻通知客户程序,传递相应信息。
3.3应用实例
以太网
串口
SLC500
工控机
RSLinx OPC Server
硬件驱动程序
数据缓冲区
OPC接口
OPC客户程序
EC2000现地软件
上位机系统
图4:基于OPC技术的SLC500通讯系统结构
浙江长潭水电站计算机监控系统采用国家电力公司电力自动化研究院自动控制所研制的的EC2000计算机监控系统,由上位机系统、三套机组LCU和一套公用LCU通过以太网连接组成,上位机系统采用EC2000监控软件,机组LCU和公用LCU均采用工控机+PLC的模式,PLC采用罗克韦尔(RockWell)公司的SLC500(串口)型PLC,并采用罗克韦尔公司的RSLINX通讯软件。
RSLINX通讯软件支持最新的OPC技术,提供符合OPC规范的OPC服务器(RSLinx OPC Server),经过简单配置后实现与SLC500的连接。现地工控机监控软件采用OPC技术(自定义接口和异步方式),通过OPC客户程序访问RSLINX内含的OPC服务器(RSLinx OPC Server),实现与SLC500的通讯。系统结构如图4所示。
在其他工程中先后采用OPC技术实现了同罗克韦尔公司的SLC500(以太网)PLC,CONTROL LOGIX系列PLC(以太网),SIMENS公司的S7系列PLC(以太网,Profibus)通讯,并成功的应用于云南大寨电厂、湖南洪江电厂闸门等计算机监控系统中。
4 结束语
目前,已有270多家公司加入了OPC基金会,OPC技术在短时间内取得了飞速发展,现在国内外自动化领域的软硬件产品都在做这方面的开发工作,逐步实现了软硬件之间的标准化。
参考文献:
1. OPC Foundation, OPC Data Access Custom Interface Specification,Http:www.opcfoundation.org
2. David J , Kruglinski,Visual C++技术内幕[M],北京:清华大学出版社,1999
3. 马国华,监控组态技术及其应用,北京:清华大学出版社,2001