EC2000监控软件实时数据库与客户程序的通讯接口实现
[复制链接]
摘要:本文针对分布式计算机监控软件EC2000实时数据库,阐明了客户程序与EC2000实时数据库的两种数据交换方式,并给出了相应的实现方法。关键词:实时数据库;通讯;OPC The Realization of Communication Interface Between the Realtime Database of EC2000 Software and Client Program Abstract: This paper aims at the distributed computer supervise and control software EC2000, illuminates two approaches about the data exchange between the realtime database and client program. The corresponding realization methods are given. Keywos: realtime database;communication; OPC 1 引言 EC2000为国家电网公司电力自动化研究院自动控制所研发的具有自主知识产权的分布式计算机监控软件,主要应用于水利水电自动化领域。EC2000采用C/S结构模式,采用面向对象的设计方法实现。 作为一种分布式的实时监控软件,对于EC2000 实时数据库对外的通讯接口,在EC2000最初功能设计时考虑的是提供统一函数接口供外部客户程序访问,在实际的功能应用中也实现了这一点。而随着工业控 制软硬件技术的发展,OPC作为基于WINDOWS NT操作系统的一种工业控制标准,逐步得到了越来越多的软硬件厂商的支持,为支持最新的技术,EC2000也提供基于OPC规范的接口供外部客户程序访 问。 下面简要介绍EC2000实时数据库对外部客户程序的两种通讯接口方式。 2 采用函数接口方式的数据通讯 EC2000 的实时数据库通过统一的函数接口提供操作接口,用来满足各客户程序的对实时数据库的读、写操作,并充分考虑到数据一致性的读写规则。通过EC2000提供 的函数接口,客户可以方便的通过这些函数接口实时的与本地或者网络上的实时数据库交换数据。客户程序访问EC2000实时数据库的过程如图1所示:
函数接口 OpenData ReqData ReadData WriteData CloseData AliveData 其它 |
图1:采用函数接口方式的客户访问示意图 客户进程访问实时数据库通过函数接口来实现,一般分以下几个步骤: 1)申请客户共享缓冲区 通过调用OpenData()函数来实现,它一般在客户程序开始时调用。 2)请求读操作 客户根据操作要求填写读请求缓冲,并通过ReqData()函数提交给内核进行处理。数据库内核负责根据要求建立客户共享缓冲区。客户户共享缓冲区用于用户接口函数与前景数据库内核之间进行通信。 3)读取数据 通过调用ReadData()函数来读取有关数据,该操作一般在每次读取数据时调用。读到的数据拥有多种属性,如品质,数值,类型等,便于客户程序的数据处理。 4) 写数据 客户根据操作要求填写写请求缓冲区,并通过调用WriteData()函数提交给内核处理,完成各种控制要求。 5)释放用户共享缓冲区 客户进程退出之前,应调用CloseData()函数来释放以前申请的共享缓冲区。 在EC2000的多个功能模块中均采用这种方式来实现对实时数据库的数据访问,取得了良好的效果。 3 采用OPC方式的数据访问 由于计算机监控系统的规模越来越大,不同厂家生产的现场设备的种类在不断的增加,而且不同厂家所提供的现场设备的通讯机制并不相同,计算机监控系统软件需要开发的设备通信驱动程序也就越来越多,而基于COM/DCOM 技术的OPC技术,提供了一个统一的标准,不同厂商只要遵循OPC技术标准就可以实现软硬件的互操作性。目前已有很多监控软件支持OPC技术。 EC2000支持双向OPC,本身既可以作为OPC SERVER供客户程序访问,也可以作为OPC客户访问其他OPC SERVER的数据。有关OPC规范的详细说明不再详述。 客户进程通过OPC 方式访问实时数据库,只要按照OPC规范就可以实现数据的读写。OPC SERVER一般提供两种接口,一类是自动化接口(COM接口),供采用VB,DELPHI等脚本编程语言的应用程序访问,一类是自定义接口供VC++等 语言访问。由于采用自定义接口的客户程序比采用自动化接口的客户程序效率要高,因此下面介绍基于自定义接口的客户异步通讯程序编写。图2为OPC SERVER与OPC客户程序访问结构图
图2:OPC SERVER与OPC客户程序访问结构图 OPC客户异步通讯程序的编写步骤如下: 1) 初始化COM。 2) 创建服务器对象,建立与服务器的连接,获得服务器接口。 3) 创建GROUP对象,设置数据刷新速率,死区等参数。 4) 向GROUP对象中添加需要操作的ITEM。 5) 设置回调函数。 6) 如果有数据变化超过死区范围,或者数据品质变化,服务器自动将变化的数据发送到客户户共享缓冲区,客户程序根据共享缓冲区的数据实现数据的读取。 7) 如果需要进行写操作,采用异步写实现。 8) 退出时删除ITEM,删除GROUP对象,删除服务器对象,释放客户共享缓冲区。 4 结束语 以上两种方式都很好的实现了EC2000实时数据库与客户程序的数据交换,而且均具有良好的开放性和实时性。采用函数接口的方式适用于各种应用程序,而采用OPC的方式适应了国际通用的工业控制标准,代表了技术发展的方向。 参考文献: [1] EC2000系统应用手册 [2] opc Data Access Custom Interface Standard Version 2.04, September 5,2000 [3] opc Data Access Custom Interface Standard Version 2.05A, June 28,2002
|