编辑: jingluoshutong | 2014-06-10 |
1 W支持开发 OP C服务器 开发 一个OPC服 务器 主 要有 以下 几个 步骤 (
1 ) 定义 O P C数据服务器的名称( P r o g I D ) 和类标 识( C I _ S I D ) , 然后根据规范对各个接 口ID进行定义 . (
2 ) 实现 O P C数据服 务器类厂对象 .从IClass―Factory基类 派生出TestOPCClassFactory类,然后重 载CreateInstance0成员 函数 ,通 过该 函数创 建CTest―Server服务器对象. (
3 ) 设计 O P C对象. 首先通过继承 I U n k n o w n类派 一28―3
6 O 元,年邮局订 阅号 :
8 2 .
9 4
6 维普资讯 http://www.cqvip.com 控制系统生出 O P C S e r v e r , O P C G r o u p和OPCItem三个类 ,分别 对应 O P C服务器对象 , 组对象和项对象 , 并重载 I U n ― k n o w n类中的接 口查询和引用计数函数 . 然后将 O P C 基金会 网站上提供的相应的头文件添加到工程中 , 通 过继承这些接 口派生出新的接 口类 , 实现每个接 口的 成员函数.在OPCServe r和OPCGroup类中增加指 向 相应接 口类 的指针成员变量 ,接 着修改接 口查询 函数.当客户程序查询某一接 口时 , 实例化接 口类 , 并返 回接 口指针变量.客户程序再通过该接 口指针进一步 调用接 口成员函数. (
4 )数据存储区的设计.可利用 C + + 标准模板库 ( S T L ) 中的包容器 , 通过包容器管理 O P C服务器中的数 据项 .由于 O P C服务器既要对底层硬件进行读 写操 作.又要通过 O P C接 口与客户程序进行交互 , 所 以对 数据存储 区的操作需要采用多线程模 型,以保证数据 存取的效率.为避免不同线程同时对数据 区中的数据 进行操作 . 还须考虑对临界区的互斥控制 . (
5 ) 界面设计.可以设计类似 Wi n d o w s中资源管 理器的用户界面 , 将各数据项用树 型结构表示 , 然后 设计数据项和硬件的设置界 面, 并与数据存储 区和硬 件接 口联系起来 , 实现相应的组态功能.在OPC服务 器程序关闭时 , 需要将数据项的属性以及硬件设置参 数作为组态文件保存起来 , 而在程序运行时能 自动调 入组态文件完成初始设置. (
6 ) 根据硬件的种类和特性 , 自行开发驱动程序 , 或者调用硬件厂商提供的 I / O DL L实现对现场设备进 行设置以及数据存取的功能. (
7 )从OPC基金会网站上获取 O P C标准组件并 在服务器上注册 ,然后利用 O P C客户端程序进行测 试.3.2通 过ATL开 发OPC服务 器ATL是 v c + + 提供 的活动模 板库 ,是专 门针对 C O M应用开发的.它 内部 的模板类实现了 C O M的一 些基本特征, 比如一些基本 的COM接 口, 也支持 C O M 的高级特征 . 如双接 口, 连接点等. 利用 A T L开发 O P C 服务器的主要步骤如下 : (
1 ) 用ATIJ创建一个 E x e进程外服务器. 将OPCDA规范 中的 I D L文件 , 加入项 目中 .进行 编译 , C l a s s V i e w中出现很多接口. 双击接 口可以看到每一接 口下的方法. (
2 ) S e r v e r 对象的添加 .创建一个简单的 A T L对象, 命名为 T e s t S e r v e r , 支持连接点 .在ATL生成 的对 象的IDL描 述 中加 入OPCSe~e r对象接口.在ClassView中右键单击 T e s t S e r v e r 类, 选择 I m p l e m e n t I n t e f f a c e和Impleme r t C o n n e c t i o n P o i n t ,并选择要 完 成添加的接 口, 可完成 O P C接 口和连接点接 口框架的 添加.然后按 O P C D A规范实现其它细节 .另外还要 在stdafx.h中加人群include OPCDA.h ,#include opccomn.h 这样就可使用规范定义的 C O M接121.还 要在OPCDA.cpp文件 中加入 : #i n c l u d e O P C D A ― i . C , # i n c l u d e o p c c o mn _ i . c 只有这样 才可使组件 对象 的接口暴露给客户程序. (