OPC数据访问服务器双向通信机制的实现

摘要:VCS2是由广东肇庆维光仪表有限公司委托开发的小型DCS系统.在VCS2系统软件方面,我们使用了OPC(OLE for Process Control)技术[1].OPC是OLE在过程控制方面的应用,为工业自动化软件面向对象的开发提供一项统一的标准,目的是为工厂底层设备或者控制室数据库中的大量数据源之间的通信提供一种标准的通信机制.本文详细介绍了小型DCS系统VCS2的OPC数据访问服务器开发过程中双向通信机制的实现.

关键词:组件对象模型;OPC接口;OPC数据访问服务器

中***分类号:TP273.5 文献标识码:A文章编号:1007-9599 (2011) 10-0000-03

Implementtation of Intercommunication Mechanism for OPC Data Access Server

Huang Hai

(Zhengzhou VCOM Science&Technology Co.,Ltd,Zhengzhou450001,China)

Abstract:VCS2 was a kind of mini DCS,developed under authorization of WeiGuang Zhaoqing Instruments Company.In the software of VCS2,OPC(OLE for Process Control)technology was used.OPC is an application of OLE(Object linking and embedding)technology in process control,which supplies uniform specifications for the design of industry automation software.The aim of OPC is to provide a kind of normative communication mechanism between date resources of devices or of database in control room.This paper discusses the development process of OPC data access server in VCS2.

Keywords:Component object model;OPC interfaces;OPC data access server

一、引言

随着计算机技术、网络技术、通信技术的发展,需要一种标准的通信机制来实现工厂底层设备或者控制室数据库中的大量数据源之间的通信,于是OPC技术应运而生。每个支持OPC接口标准的硬件厂商为其设备开发一个OPC服务器,主要负责从硬件设备得到数据并暂存起来;支持OPC接口的应用程序作为OPC客户通过与OPC服务器之间的交互来读写硬件设备的信息,所以,通过OPC服务器访问过程数据,可以克服异构网络结构和接口协议的差异,上层应用可以不关心底层的硬件特性以及OPC服务器与硬件通讯细节,就可以得到过程数据。然而技术的核心是微软的COM技术,而OPC服务器中异步访问机制的实现设计到COM的深层次编程技巧。

二、数据访问机能

首先,OPC DA客户要能够连接到DA服务器上,并建立OPC组对象和OPC数据项对象,为了访问过程数据,DA需要事先指定DA服务器的名称、运行DA服务器的机器名、DA服务器上Item的定义[2]。

其次,客户通过对其建立的Group与Item进行访问实现对过程数据的访问,客户可以选择设备或数据存储区作为其访问的数据源。客户的过程数据访问包括过程数据的读、写、刷新、订阅;其中读写还分为同步读、写和异步读、写[3]。

第三,完成通知,当服务器响应客户的过程数据访问的请求,并处理完时通知客户。这种情况经常发生在过程数据的异步读写时。

除了以上三个机能是OPC DA服务器必须实现的外,还可以提供DA服务器的地址空间的浏览和停机通知,即当服务器发生异常断开与客户的连接时,向客户发出通知。

三、异步访问过程

在组对象中,我们实现了IVCS Sync IO接口和IVCSSyncIO2接口,其中IVCS Sync IO用于同步读写,其中有Read和Write方法;IVCSSyncIO2用于异步读写,其中也有Read和Write方法[3]。其中同步读写比较简单,客户程序调用方法后知道读取或写入数据后Read和Write方法才返回,而异步读写的机制则比较复杂,下面以异步读取过程为例说明,异步写入则类似:

首先DA客户要利用DA服务器的组对象CVCS Group所提供的用于双向通信的接口IVCS Connection Point Container同服务器建立联系,此过程中将客户的ICallback接口指针传递给OPC服务器,此后客户调用IVCSASyncIO2接口的Read函数,向DA服务器发出从指定的数据源异步读取Item句柄数组指定的Item的请求。服务器接收到请求后立即回答客户的请求,服务器返回给客户一个取消ID,让客户取消此操作,此函数调用完毕并返回;然后服务器读取客户请求的Item的数据信息,并通过客户传来的ICallback接口指针调用客户的ICallback:OnRead Compete把这些Item的信息返回给客户,并刷新缓冲区,此时,异步读取完毕,客户对获得的数据作进一步处理,如***3.1。

***3.1异步读取过程

由上述过程可知,异步访问的关键在于接口IVCS Connection Point Container;所以我们必须在CVCS Group类中实现接口IVCS Connection Point Container。下面说明该接口的结构及实现过程。

四、双向通信机制的实现

在一般的交互过程中,客户总是主动的,而组件则处于被动状态,VCSVR通过自身暴露的接口监听客户的请求,一旦接收到客户的请求便做出响应。然而在双向通信中,我们还需要服务器才可以发起和客户的通信,因此,因此我们在服务器的CVCS Server对象和CVCS Group对象中都实现了一个ICallback接口,组件对象通过这种出接口与客户进行通信。这个接口是在我们的组件中定义的,但VCSVR并没有实现其中的方法,所以想使用CVCS Group的客户必须实现这个接口中的方法,在VCSVR中,我们提供了一个函数Advise(),用户可以调用该函数把他们实现的ICallback接口的指针传递给CVCS Group,于是,CVCS Group就可以在适当的时候调用此接口中的方法了,可连接对象的出接口也是一个COM接口,它包含一组成员函数,每个成员函数代表了一个事件(Event)、一个通知(Notification)或一个请求(Request)。在客户程序方,需要实现我们定义的ICallback接口。

在双向通信过程中,涉及到三个既***又相关的部分:客户程序、COM对象和客户实现的ICallback[4]。这三者的交互过程如***4.1所示:

***4.1客户与CVCS Group对象的通信

从***中可以看出CVCS Group对象、客户和ICallback之间的基本关系,客户程序把ICallback接口指针通过参数传递给CVCS Group对象,CVCS Group对象记录下ICallback接口指针,以后在必要的时候通过此接口指针调用其成员函数。尽管ICallback也是一个COM对象,但由于其特殊性,它位于客户程序内部,并不需要通过COM库来创建,因此ICallback不需要用CLSID来标识,也不需要类厂,可以用new来创建。ICallback也有自己的引用计数,有自己的接口查询方法即Query Interface成员函数。CVCS Group对象通过接口IVCS Connection Point Container管理接口ICallback。在他们内部都实现了一个CVCS Connection Point的类,该类实现了IVCS Connection Point接口,客户就是调用该接口中的方法把ICallback接口指针传递给CVCS Server的。如***4.2:

***4.2用于双向通信的CVCS Server和CVCS Group的结构部分

ICallback与CVCS Group之间的通信过程:如***4.3所示。ICallback接口,它由客户对象实现,而拥有该接口的类为TCallBack。下面给出了客户如何从一个基本对象IUnknown接口指针pUnk建立连接的过程:

***4.3双向通信过程

1.客户程序调用pUnk->QueryInterface(IID-IVCSConnectionPiontContainer,&pIVCSConnectionPointContainer)获取对象CVCSServer的IVCSConnectionPointContainer接口的指针。

2.客户程序调用pIVCS ConnectionPointContainer->FindConnectionPoint(IID_ICallback,&pIVCSConnectionPoint);获得接口ICallback对应的CVCSConnectionPoint对象的IconnectionPoint接口的指针,然后调用pIVCSConnctionPointContainer->Release来释放pIVCSConnctionPointContainer。

3.客户程序创建对象TCallback:pICallback=(Icallback*)new Tcallback。返回接收器对象Tcallback的指针。

4.客户调用pIVCSConnectionPoint->Advise(pICallback,&dwCookie)把Tcallback对象连接到CVCSServer组件对象,并保存组件对象给客户返回的连接标识dwCookie。

5.CVCSServer组件对象在适当时候通过pICallback调用接口ICallback中的函数(在客户程序中实现)与客户通信。ICallback在客户中,它能方便地访问客户,因此组件对象能由pICallback访问到客户。客户需要取消连接时,调用pIVCSConnectionPoint->Unadvise(dwCookie)以断开连接,并调用pIVCSConnectionPoint->Release()释放CVCSConnectionPoint对象。

五、结论

本文详细介绍了小型DCS系统VCS2的OPC数据访问服务器开发过程中双向通信机制的实现。实践也证明,这种机制实现不仅是可行的,而且是卓有成效的。VCS2是针对流程工业中小型单元设备的过程控制而开发的,以提供控制品质为核心以工程控制为重点的完整的小型DCS,主要应用在各种中小型工厂的控制系统中。为了克服传统的方法带来诸如系统升级和移植不便的缺陷,在VCS2中我们使用了OPC技术。这种实现机制应用于广东肇庆维光仪表有限公司委托开发的小型DCS系统。

参考文献:

[1]OLE for Process Control Data Access Standard(UPDATED)Version 1.0A.OPC Foundation:1997,9

[2]Richard C.Harrison.OPC,DCOM and Security.Intellution Inc:1998,2

[3]Chisholm.OLE/OPC Memory Management White Paper Al.Intellution Inc:1998,1

[4]潘爱民.COM原理及应用[J].北京:清华大学出版社,1999

OPC数据访问服务器双向通信机制的实现

转载请注明出处学文网 » OPC数据访问服务器双向通信机制的实现

学习

上海古瓷收藏家金晓东

阅读(27)

上海文化界的几位朋友相邀,长假中抽空去金晓东家一聚,品赏他珍藏的古瓷。那天,他特地从银行保管箱中取来了平日从不露脸的宝贝。当他打开一只只锦盒,取出一件件珍宝,大家几乎都惊呆了。那件方口圆底的唐开成四年(839年)襄阳太守故夫人罗倩的墓

学习

英国湖区 湖畔派诗人的诞生地

阅读(20)

本文为您介绍英国湖区 湖畔派诗人的诞生地,内容包括英国著名湖畔派诗人作品,英国湖畔诗人。“Iwander’dlonelyasacloud.Thefloatsonhigho’ervalesandhills……”英国著名的湖畔派诗人威廉?沃兹沃斯的一首《水仙》,生动地描述了英国湖区

学习

音乐表演的艺术表现

阅读(24)

本文为您介绍音乐表演的艺术表现,内容包括音乐表演和艺术表现的关系,音乐表演艺术论稿。音乐表演是音乐创作、欣赏的重要载体,通过音乐表演的独特视角与表现方式能对音乐作品进行再度呈现与创作,这对表演者来说是一项复杂而艰巨的过程,需要

学习

对组织学习的内容讨论和界定

阅读(20)

摘要:探讨了组织学习研究的若干基本问题,对组织学习的内容、过程、主体和类型进行了讨论和界定。关键词:组织学习;学习型组织;知识管理20世纪90年代初兴起的学习型组织使人们对组织学习有了较为深刻的认识,但有关组织学习的一些基本问题

学习

盛中国\濑田裕子:像名厨那样“烹调”爱情

阅读(103)

中国人喜欢用“琴瑟和鸣”、“珠联璧合”等美丽的词汇来形容理想的婚姻,但在现实中能真正达到“琴瑟和鸣”境界的夫妻却可谓凤毛麟角。有这样一对夫妇,丈夫是最早在国际上为中国争得荣誉的小提琴家之一,妻子是少年成名的日本钢琴家,他们一起

学习

神秘的印度之旅

阅读(29)

本文为您介绍神秘的印度之旅,内容包括印度朝圣之旅全集,印度之旅小说。这半年来,我们沿着郑和下西洋的足迹,已经先后到达了文莱、爪哇、泰国、柬埔寨和斯里兰卡,领略到了异国独特的民俗和文化。“郑和之旅”就要结束了,今天,我们将到达底站―

学习

水利信息化建设促进水利现代化

阅读(90)

本文为您介绍水利信息化建设促进水利现代化,内容包括水利规划好还是水利信息化好,水利数字孪生和水利信息化。水利信息化技术是水利行业现代化发展的必要手段。随着信息技术的不断发展,信息化在水利行业中的应用必然越来越广,在水利项目管

学习

麦迪的干拔跳投

阅读(61)

本文为您介绍麦迪的干拔跳投,内容包括麦迪的干拔跳投教学,麦迪干拔跳投小说。拿着老将底薪的麦迪依旧在场上拼杀着。对于麦迪来说,得到一个打球的机会,远远比其他东西更为重要。无论是当年凤凰振翅的高傲,还是如今虎落平阳的凄惨,毕竟有一些

学习

矿井的“一通三防”安全管理

阅读(31)

本文为您介绍矿井的“一通三防”安全管理,内容包括矿井一通三防实施细则,一通三防是指矿井通风防治什么。矿井的“一通三防”工作是煤矿开采中的一个重要组成部分,是矿井安全生产的基本保障,它直接影响到矿井的安全生产和井下作业人员的生

学习

试析 红色经典 影视剧的象征意义与励志作用

阅读(22)

本文为您介绍试析 红色经典 影视剧的象征意义与励志作用,内容包括红色电视剧意义和价值,红色电视剧热播现象背景及意义。[摘要]近年来,影视作品中的“红色经典”剧作,在当下娱乐化的消费社会掀起了收视热潮,以其精神性的象征符号意义及其具有

学习

传统建筑的传承与发展

阅读(22)

本文为您介绍传统建筑的传承与发展,内容包括传承传统建筑文化的方法,论中国传统建筑发展历程。中国传统建筑趋于对地域性的考虑,使建筑具有地域特色,传统建筑由于不同的地域和民族其建筑艺术风格等各有差异。现代建筑已经忽略了对地域性的

学习

诸葛亮为何六出祁山

阅读(30)

本文为您介绍诸葛亮为何六出祁山,内容包括诸葛亮六出祁山完整故事,诸葛亮六出祁山是哪几出。【摘要】诸葛亮北伐曹魏之战,是由弱者主动向强者发动的一场战争。六出岐山,北伐中原”不是所谓的妄动干戈,也不是“穷兵黩武”,更不是自取灭亡,这种

学习

小议粪便隐血试验

阅读(21)

本文为您介绍小议粪便隐血试验,内容包括粪便隐血试验检测方法论文,粪便隐血试验结果阴性。明目张胆的凶犯容易发现。潜伏着的凶犯难以寻觅。这是人们熟知的道理。其实诊断胃肠道出血也是如此。消化道黏膜的大小血管受到各种病变侵袭时容

学习

探访“美兆”高端体检

阅读(23)

本文为您介绍探访“美兆”高端体检,内容包括美兆体检价格表,美兆高端体检。2003年,北京美兆健康体检中心作为一家台资企业进入大陆,在当时,体检还是一个新鲜的产物。如今,在大陆地区已经发展了4家店面的美兆,还是和当初成立时一样:一个店面、

学习

“合伙人制”的机制设计

阅读(18)

本文为您介绍“合伙人制”的机制设计,内容包括合伙人制的机制,合伙制的设计与实施。合伙人机制,其实就是责权利高度统一的机制,出发点从权力开始,有多大权力,就有多大责任,并享有相对应的利益。“合伙人制”这两年在商界比较受关注,像万科、阿

学习

浅析电影《麦田》的叙事机制

阅读(58)

本文为您介绍浅析电影《麦田》的叙事机制,内容包括电影麦田情节,电影麦田评论。影片《麦田》的故事背景是根据史实改编的,这场发生在山西境内的惨绝人寰的黑色屠戮和金黄色的麦田带来的丰收愉悦形成了巨大的对比反差。导影将镜头对准了男

学习

企业高层次人才评估指标机制研究

阅读(33)

本文为您介绍企业高层次人才评估指标机制研究,内容包括企业人才考核评估维度,企业人才测评标准有哪些。文章主要讨论了高层次创新创业科技人员的评估方法、评估指标体系和怎样来展开评估及评估中存在的问题等。高层次创新创业科技人才在

学习

DHCP服务器的中继实现

阅读(21)

计算机专业学生学习网络管理技术,一般都是在大的同一网络环境中做实验,但这样会相互干扰,造成实验效果不好。本文利用分组教学,探讨虚拟机方法实现DHCP服务器的中继实验的环境,让学生顺利掌握这门技术。关键词:计算机专业;网络管理;DHCP中继;虚拟

学习

论企业激励机制

阅读(21)

本文首先就激励与激励机制的含义进行了简要的阐述,进而指出了企业激励机制中存在的问题,最后针对于此提出了几点改善企业激励机制的措施。关键词:企业;激励机制;措施随着我国社会经济的不断持续的发展,我国的企业发展规模也越来越壮大。企业之

学习

企业治理机制

阅读(24)

本文为您介绍企业治理机制,内容包括企业治理机制内容,企业治理机制是金融学范围吗。[摘要]借鉴新经济社会学的分析框架,引入制度环境变量条件下,企业理论更加趋近经济生活的真实,企业利益相关者的共同治理机制也被赋予了新的原则。中国独特制

学习

现代企业制度的建立及运行机制

阅读(18)

本文为您介绍现代企业制度的建立及运行机制,内容包括现代企业制度的基本特征和内涵,现代企业制度建设运行情况。【内容摘要】高校资产经营公司是随着产权制度的提出、高校企业改革的纵深发展而产生的,已经成为高校产业化组织的重要形式。

学习

负激励机制下内部协商定价的博弈分析

阅读(23)

在企业集团部各投资中心或利润中心间进行中间产品部转移价格谈判协商的过程中,引入惩罚性质的负激励机制,可使各中心在该机制下进行理性的协商定价博弈。本文通过模型分析得出如下结论:在负激励机制下,若中间产品存在外部市场(包括完全外部