VC环境下的OPC客户端程序开发

上传人:2127513****773577... 文档编号:67742145 上传时间:2022-04-01 格式:DOC 页数:5 大小:105KB
收藏 版权申诉 举报 下载
VC环境下的OPC客户端程序开发_第1页
第1页 / 共5页
VC环境下的OPC客户端程序开发_第2页
第2页 / 共5页
VC环境下的OPC客户端程序开发_第3页
第3页 / 共5页
资源描述:

《VC环境下的OPC客户端程序开发》由会员分享,可在线阅读,更多相关《VC环境下的OPC客户端程序开发(5页珍藏版)》请在装配图网上搜索。

1、精选优质文档-倾情为你奉上VC环境下的OPC客户端程序开发来源: 08-07-30 15:41:00 作者:赵健 师奕兵编辑:studa0714 支持Intel Xeon 5000系列处理器 高密度 高能效 易管理 低成本Save 70% on our Premium Blend: Worldwide Shipping Quoted Upfrontwww.WholeHPremier OPC Trending solution for realtime process control & 摘 要 本文通过OPC 数据访问规范,介绍了有关OPC技术的基本概念、数据访问方式以及编写OPC客户端接口程

2、序的一般。同时给出了一个具体实例,用Visual C+编写了一个OPC客户端接口程序,并利用OPC服务器KEPServer对其进行测试,实现了OPC客户端与OPC服务器之间的数据交换。 关键词 OPC服务器;OPC客户端;COM技术1 引言 随着通信技术、机技术和自动化技术的快速,大范围信息共享的需求在自动化系统中显得越来越来越重要,控制系统已逐渐发展成为以现场设备层、过程控制层和中央管理层三个层次组成的系统,因而对其开放性也提出了更高的要求。在传统的控制系统中,现场设备之间以及现场设备与控制软件之间的信息共享主要是通过驱动程序来实现的,不同厂家的设备使用不同的驱动程序,使得软件开发商不得不开

3、发大量驱动程序来连接这些设备,即使设备厂家在硬件上做小小的改动,程序就可能重写,这也势必造成工业控制软硬件的升级与维护不便,给用户和软件开发商带来巨大的工作负担。同时,由于不同设备的驱动程序也有所不同,使得不同的应用程序也不能同时访问同一设备的数据,因此,需要制定一种统一开放的接口标准,使应用程序能够方便的存取一台或多台现场设备的数据,为不同厂商的软硬件提供一种系统集成和数据交换的途径。正是在自动化系统开放性要求的驱使下,促使了OPC技术的产生。2 OPC技术简介 OPC(OLE for Process Control)是基于微软公司的DNA(Distributed InterNet Appl

4、ication)构架和COM (Component Object Model)/DCOM(Distributed COM)技术,根据易扩展性而设计的,OPC规范定义了一个工业标准接口,这个标准使得COM技术适用于过程控制和制造自动化等应用领域。OLE最初意思为对象链接与嵌入,是微软的复合文档技术。随着后续版本OLE2中导入了COM技术之后,现在的OLE在原版的基础上增加了更多新的功能,包括结构化存储、统一数据传输和自动化等,它已经成为独立于计算机语言、操作系统甚至硬件平台的一种规范,进一步推广了面向对象程序设计的概念。OPC正是建立在OLE2规范之上,为工业控制领域提供了一种标准的数据访问机制

5、。2.1 OPC数据访问规范 OPC规范是由世界主要的自动化设备制造商、OPC基金会和微软公司共同协商制定而成的,为不同厂商的设备和应用程序之间实现了接口标准化。它把硬件供应商和软件开发商分离开来,在设备、数据库等数据源和客户之间架起了一座桥梁,为解决统一接口标准提供了解决方案。这其中包括OPC数据访问规范(OPC DA)、OPC报警和事件规范(OPC AE)和OPC数据访问规范(OPC HDA)等,而OPC数据访问规范是最常用的规范之一。 通过对OPC数据访问规范的分析可知,在OPC数据访问规范中主要包括3类对象,分别是OPC Server、OPC Group和OPC Item。OPC服务器

6、对象维护有关服务器的信息并作为OPC组对象的包容器,能够动态地创建和释放组对象;OPC组对象除了维护有关自身的信息之外,还提供了包容OPC项的机制,从逻辑上管理OPC项。它提供了客户组织数据的一种方法,客户可以对其进行读写,还可以设置客户端的数据更新速率。当服务器缓冲区内的数据发生改变时,OPC将向客户发出通知,客户得到通知后再进行必要处理,而无需浪费大量的时间进行查询;OPC项则表示了与OPC服务器的连接,它并不提供对外接口,客户端不能直接对其进行操作,而是通过组对象对其进行操作的。图1表示了这3类对象的相互关系以及它们与OPC客户端程序之间的关系。图1 OPC DA服务器对象与OPC DA

7、客户端的对应关系2.2 OPC数据访问方式 OPC客户端在对OPC服务器进行数据访问时,可以选择两种不同的访问方式,即同步访问方式和异步访问方式。其中同步访问方式的实现相对简单,OPC服务器将OPC应用程序所要求得到的数据访问结果作为方法引数返回给OPC应用程序,此时OPC应用程序一直处于等待状态,直到结果被返回为止。当客户数目较少并且与服务器交互的数据量也较少的时候可以采用同步访问方式。与此相对,异步访问方式的实现较为复杂,OPC服务器接到OPC应用程序的要求后,立即将方法引数返回,OPC应用程序随后可以进行其它处理。当OPC服务器完成数据访问时,触发OPC应用程序的异步访问完成事件,将数据

8、访问结果传送给OPC应用程序,OPC应用程序在VC的事件处理程序中接收从OPC服务器传来的数据。当有大量客户和大量数据交互时,异步访问方式的效率更高,能够避免客户数据请求的阻塞,从而最大限度的节省CPU和资源。图2和图3分别表示了两种数据访问方式的处理过程。图2 同步数据访问处理 图3 异步数据访问处理3 VC环境下OPC客户端程序设计 OPC客户端程序在设计时需要遵守OPC数据访问规范,实现规范所规定的全部必需接口。同时,客户端模块需要有独立的设备连接界面和监控运行界面,并能够支持多服务器的连接。下面详细介绍VC环境下的OPC客户端程序开发步骤,并给出关键源代码: (1)包含OPC头文件。首

9、先创建新的工程,编辑StdAfx.h文件,加载opcda.h、opccomn.h、opcerrors.h、opcprops.h、opcquality.h以及opcda_i.c、opccomn_i.c文件。 (2)初始化COM库。由于OPC是基于COM技术制定的,所以在使用接口类之前必须首先使用CoInitialize(NULL)函数对COM库进行初始化,如果成功,函数返回值等于S_ OK。 HRESULT h1; h1=CoInitialize(NULL); if(h1!=S_OK) return(FAUSE); (3)通过OPC服务器的ProgID查询注册表中相关CLSID。每个COM服务器

10、都有一个字符串型的ProgID,通过ProgID可以得到全球惟一的CLSID,使用CLSIDFromProgID( )函数实现ProgID到CLSID的转换。 h1=CLSIDFromProgID(ProgID,&CLSID); (4)连接OPC服务器,查询对象的IID_IOPCServer接口。在连接OPC服务器前,OPC客户端需要事先指定机名和OPC数据访问服务器名,建立连接后,创建OPC组并添加OPC数据项。 h1=CoCreateInstance(clsid,NULL,CLSCTX_ LOCAL_ SERVER,IID_IOPCServer,(void*)&m_OPCServer);

11、(5)创建OPC组,查询IOPCItemMgt接口。IOPCServer接口的AddGroup()可以创建一个有指定名称和属性的OPC组。 h1=m_IOPCServer-AddGroup(L,” ”,TRUE,800,111,&TimeBias,&PercentDeadBand,LOCAL_ID,& m_ GrpSrvHandle,&RevisedUpdateRate,IID_IOPCItemMgt,(LPUNKNOWN*)m_IOPCItemMgt); (6)添加OPC数据项。使用IOPCItemMgt接口的AddItem()方法可以添加具有特殊属性的指定数量的数据项。 pOPCItemM

12、gt-AddItems(ItemNumber,ItemArray,(OPCITEMRESULT*)&pItemResult,(HRESULT*) & pErrors); (7)OPC的数据项读写。对OPC数据项的读写可以有同步与异步之分,对于大量的数据传输,异步是更佳的选择,但对少量的数据传输,同步表现得更好。本程序采用异步访问方式,需要指向IOPCAsyncIO2指针。h1=m_IOPCItemMgt-QueryInterface(IID_IOPCAsyncIO2,(void*)&m_IOPCAsyncIO2);void CAsynOPCDlg:OnRead ( ) 实现异步读数据。h1=m

13、_IOPCAsyncIO2-Read(1,phServer,1,&dwCancelID,&pErrors); delete phServer; void CAsynOPCDlg:OnWrite( ) 实现异步写数据。h1=m_IOPCAsyncIO2-Write(1,phServer,values,2,&dwCancelID,&pErrors); delete phServer; (8)OPC连接断开,释放接口指针。当程序退出或停止服务器时,依次删除Item(RemoveItems)、Group(RemoveGroups),释放资源。 void CAsynOPCDlg:OnStop( ) 停止

14、服务器。h1=m_IOPCItemMgt-RemoveItems(1,phServer,&pErrors);删除Items。h1=m_IOPCServer-RemoveGroup(m_GrpSrvHandle,TRUE);删除Group。m_IOPCServer-Release( );释放服务器。m_IOPCServer=NULL;CoUninitialize( );关闭COM库。图4 OPC客户端程序 使用OPC技术之后,我们就可以通过OPC客户端直接访问由硬件供应商提供的OPC服务器,从而达到直接获取现场设备数据的目的。图4显示的即是基于VC开发的OPC客户端程序对OPC服务器KEPServer的访问界面,实现了OPC客户端与OPC服务器进行数据交互的功能,为开发其它功能更加完善的OPC客户端软件提供了基础。4 结束语 自动化系统的趋势是控制与管理一体化,于自动化领域的OPC技术统一了数据访问的接口,使控制系统进一步走向开放,实现了信息的集成与共享,其优越性是显而易见的。OPC技术的出现改变了原有的控制系统模式,获得了自动化设备厂商的广泛认可。绝大多数的工控设备厂家都为其硬件提供了OPC服务器,这使得开发OPC客户端软件也具有更广阔的应用前景。专心-专注-专业

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!