首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 维修教程知识 > 单片机栏
基于OPC技术的系统集成设计与实现
来源:本站整理  作者:佚名  2009-06-16 13:16:04



3 OPC数据访问服务器的实现
    OPC服务器的实现一般有3种方法:通过快速开发工具开发OPC服务器;通过MFC(微软基本类库)提供的COM支持开发OPC服务器;通过ATL(活动模板库)开发OPC服务器。
    由于OPC快速开发工具功能有许多限制,而MFC开发基于窗口的应用程序虽然比较方便。但它不是开发COM组件的理想工具,需要手工添加很多支持COM的基础代码。ATL是VC++提供专门针对COM应用开发的活动模板库。它内部的模板类实现了COM的一些基本特征。比如一些基本的COM接口,也支持COM的高级特征。如双接口、连接点等,其基本目标是使COM应用开发尽可能的自动化。使用ATL可以快速地开发出高效、简洁的代码,同时对COM组件的开发提供了一定限度的代码自动生成以及可视化支持。所以在此采用ATL研究OPC服务器的开发。
    OPCDA规范规定OPCDA Server包含3种对象:Server对象、Group对象和Item对象。Server对象包含了OPCDA Server的相关信息,它可以对Group对象进行添加、删除,是Group对象的容器。Group对象包含了这个组的相关信息,并提供了逻辑上包含组织Item对象的机制。Item对象与数据项关联,每个数据项必须具备Value,Quality和TimeStamp三个属性。OPC数据访问服务器程序结构如图3所示。

    由于OPC数据服务器既要对底层硬件进行读写操作,又要通过OPC接口与客户程序进行交互,为保证数据存取的效率,所以采用多线程模型,创建exe形式的进程外OPC服务器。实现OPC数据访问服务器的主要步骤包括:
    (1)用ATL创建一个exe进程外服务器。将OPCDA规范中的IDL文件,加入项目中进行编译,将组件接口引入到工程中;
    (2)添加OPCServer对象。创建一个简单的ATL对象,命名为GstServer,按照OPC规范添加相应接口并实现其方法,其中AddGroup函数的实现是难点;
    (3)添加OPCGroup对象。Group对象是通过Server对象的创建实现的,因此不需要类型库,所以要在工程的OPCDA.cpp文件的对象映射中将其删除,然后用聚合实现接口的添加:

    BEGIN_COM_MAP()
    COM_INTERFACE_ENTRY_AGGREGATE()
    END_COM_MAP()
    (4)定义一个类CGstItem添加Item对象。OPCItem无需实现任何接口功能,只要根据实际情况增加相应的功能函数,如根据OPCltem的名称与数据源进行连接、读写数据源等;
    (5)数据存储区的设计。数据存储区包含了服务器程序定义的数据项。要根据项的数目确定缓存的大小,使得每个项都有相对应的内存空间;
    (6)OPC服务器的结构和功能大同小异,主要的区别在于硬件驱动程序。可以针对不同设备开发相应的读写接口类,并与相应的OPC服务器里的项对象连接起来,实现OPC服务器对现场数据的存取功能。


4 OPC客户应用程序的实现
    在该集成系统中,通过自行开发的OPC客户端实现集成平台和子系统的数据交换。在应用程序运行时,客户端将按照指定的采集频率对数据进行采集。
    自动化接口封装了COM底层的许多实现,使用户能比较轻松地进行数据访问,具有简单、易于编程等优点。该系统的OPC客户端程序使用VB6通过OPC自动化接口实现OPC数据访问。程序示例如下:
    (1)启动VB,新建一工程OPCClient,在VB主菜单的“工程”项中选择“引用”,在弹出窗口可用的引用选项中选择“OPC Automation 2.0”,就可以使用自动化接口;
    (2)声明使用的对象及变量

   
    (3)连接OPC服务器、建立OPC组和添加OPC项

   
5 结 语
    OPC作为一项逐渐成熟的技术已得到国内外厂商的高度重视,许多公司都在原有产品的基础上增加了对OPC的支持。由于统一了数据访问的接口,使控制系统进一步走向开放,实现了信息的集成和共享,所以用户能够得到更多的方便。相信随着技术的发展,OPC会越来越广泛地应用于工业过程控制领域。

上一页  [1] [2] 

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)

推荐阅读

图文阅读

热门阅读

Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:79,070.31000 毫秒