opc技术实现及应用

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

合肥工业大学
硕士学位论文
OPC技术实现及应用
姓名:汪辉
申请学位级别:硕士
专业:控制理论与控制工程指导教师:陶维青
2003.2.1
旦旦竺丝查生些丝生旦
I圣l3一I添加ATL支持
选择“是(y)”按钮,关闭弹出的对话框,将在工程中加入ATL支持的相关代码,这些相关代码包括了COM库初始化的功能。

3.3.2创建COM服务器
然后,在需要创建OPC服务器的地方加入如下代码:
IOPCServer木PIOPCServer2NULL:
HRESULT
hr=CoCreateInstance(CLSID—SIMATICOPCServer,NULL,CLSCX—LOCAL—SERVER,IIDIOPCServer,(void¥})&pIOPCServer):
其中CLSID—SIMATICOPCServer是所要创建的OPC服务器的CLS【D号,可从OPC服务器供应商相关文献中查到。

CLSCX—LOCAL—SERVER表示创建本地进程外服务器。

IID-IOPCSeryer是IOPCServer接口的接口ID号
PIOPCServer是OPCServer对象的IOPCServer接口指针。

同时在源文件得头部用“#Include”包括服务器输出的##.h文件和##i.h文件,其中##为服务器工程名。

#include”服务器路径\##.h’
#inelude”服务器路径\##_i.C”
3.3.3添加Group
首先在服务器里使用OPCServer对象IOPCServer接口的AddGroup函数创建…个group,AddGroup函数返回OPCGoup对象的IOPCItemMgt接口,该接口提供了增加,删除和控制一个组内的Item的功能。

AddGrouP函数定义如下:
HRESULTAddGrouP(
n,string]LPCWSTRszName,
n]BOOLbActive,
n]DWORDdwRequestedUpdateRate,
[in]OPCHANDLEhClientGroup,
[unique,in]LONG*pTimeBias,
22
IOPCServer的RemoveGrouP函数删除Group,释放IOPCSeI-ver接口,关闭OPC服务器。

需要注意的是,在删除Group时,RemoveGroup函数的参数bForce可以决定如果存在该Group的一个引用,是否强制删除该Group。

最后释放所有内存和接口,如果调用了CoInitialize函数,就调用CoUllinitialize函数,完成关闭COM库,释放相关资源,断丌RPC连接等功能。

如果加入了ATL支持代码,相关代码会完成关闭COM库,释放相关资源,断丌RPC连接等的功能。

3.4OPC服务器的实现
本文使用VC6.0,ATL3.0模板库为工具来实现OPC服务器。

3.4.1建立服务器框架
1.用ATL向导建立一个进程外COM服务器。

用ATL向导添加两个COM对象:OPCServer,OPCGroup。

选择VC6.0插入菜单的“新建ATL对象”菜单项,出现如下界面
图3—2添加COM对象
2.加入OPC对象
选择Category选项框内的Objects选项,选择Objects选项框内的Simple
Object选项,确定将显示如下界面。

OPC技术实现驶心用
幽3—3设置COM对象属性I
在ShortName框内输入COPCServer,其它选项用默认值。

选择Attributes标签,显示如下界面:
图3—4设置COM对象属性2
在Interface双选框内选择Custom类型,其它选用默认值,确定退出。

向导将自动加入对象COPCServer和接口ICOPCServer。

同理加入COPCGroup对象。

3.4.2实现OPCServer对象
OPCServer对象包括lOPCCommon,lOPCServer,IOPCItemProperties三个接口和一些可以选择实现的接口。

IOPCCommon接口用来获取错误字符串,设置客户名和LocaleID。

OPC技术‘耍蜕及}№川
lOPCASYncl0IOPCASYnCl02.IConneCtionPolntContalne
IConnectionPoint七个接口和一些可以选择实现的接El。

IOPCGroupStateMgt接口用来获取Group的信息。

IOPCItemMgt接口用来添加,删除和浏览Item,修改it8111属性。

[OPCSyncl0接口实现同步数据访问。

lOPCAsyncl0,lOPCAsyncl02接口实现异步数据访问。

IConneCtionPointContainer接口和IConnectiOnPoint接口实现连接点,用来连接客户方的连接器,实现异步数据访问和数据的自动刷新。

OPCGrouP对象实现方法与OPCServer对象的实现方法类似。

下面将介绍OPCGroup对象实现时所特有的地方。

1.连接点的实现。

利用ATL向导可以很容易的实现IConnectionPointContainer接口和IConnectionPoint接口,向导将为接口lOPCDataCallback产生一个连接点容器的代理包装类CProxyIOPCDataCallback,完成连接点的相关操作。

编译连接整个程序后,在VC6.0的ClassView窗口内,选择COPCGroup类,打开右键菜单,选择ImplementConnectinPoint菜单项,弹出如下界面:
图3—5连接点向导
选择IOPCDataCallBack,确定,连接点向导将自动产生CProxyIOPCDataCallback类。

36。

相关文档
最新文档