如何开发OPC Server.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
如何开发OPC Server

如何开发OPC Server 首先我们先来看一下什么是OPC ???????OPC (OLE for Process Control——用于过程控制的OLE)是基于Microsoft公司的DNA(Distributed Internet Application)构架和COM(Component Object Model)技术的一个工业标准接口,是根据易于扩展性而设计的。 ? 再来了解一下OPC的用途 OPC主要适用于过程控制和制造自动化等应用领域。?OPC是以OLE/COM机制作为应用程序的通讯标准。OLE/COM是一种客户/服务器模式,具有语言无关性、代码重用性、易于集成性等优点。OPC规范了接口函数,不管现场设备以何种形式存在,客户都以统一的方式去访问,从而保证软件对客户的透明性,使得用户完全从低层的开发中脱离出来 然后我们再来看看OPC Server的组成 ???????一个设备的OPC Server主要有两部组成,一是OPC标准接口的实现;二是与硬件设备的通信模块。 ??????实现OPC?标准接口 ? [图1] 在这些接口中,IOPCServer?是OPC Server的主接口,通过它实现OPC Server在操作系统中的安装和注册。此接口是必须要实现的,其所有方法也必须实现。其它的接口都是可选的我们就不做介绍了,下面主要来介绍如何实现IOPCServer接口。 在IOPCServer接口中共有六个法: 1、?IOPCServer::AddGroup HRESULT AddGroup( [in, string] LPCWSTR szName, ?[in] BOOL bActive, [in] DWORD dwRequestedUpdateRate, [in] OPCHANDLE hClientGroup, [unique, in] LONG *pTimeBias, [in] FLOAT * pPercentDeadband, [in] DWORD dwLCID, [out] OPCHANDLE * phServerGroup, [out] DWORD *pRevisedUpdateRate, [in] REFIID riid, [out, iid_is(riid)] LPUNKNOWN * ppUnk ); ???????此方法是在OPC Server上建立一个组。下在我们来实现这个方法: …. …. 首先要对组名(szName)进行检查,看是否有效或是否已经有这个组。 if (szName != NULL) { ??????????????RequestedName = szName; ??????????????if (RequestedName == ) ?????????????????????RequestedName = pSvrObject-DefaultGroupName(); ???????} ???????else ??????????????RequestedName = pSvrObject-DefaultGroupName(); ?????? ???????for (i=0; ipSvrObject-NumbrGroups(); i++) ???????{ ??????????????pGroup = pSvrObject-GetGroup(i); ??????????????if (RequestedName == pGroup-Name) ?????????????????????return (OPC_E_DUPLICATENAME); ???????} ???????这需要在内存中维护OPC Group(组)的列表(还要有OPC?项的列表)。 ???????如果szName(组名)正确并且没有建立过该组,就开始根据传过来的参数进行组的建立,建立好后将该组加到自己的组列表中以备后用。 ??????????????最后将新建组的接口指针返回给客户端。 ????? ? 2、IOPCServer::GetErrorString HRESULT GetErrorString( [in] HRESULT dwError, [in] LCID dwLocale, [out, string] LPWSTR *ppString ); ???????为Server的错误代码返回相应的错误字符串。 ?????? 代码略 3、?IOPCServer::GetGroupByName HRESULT GetGroupByName( [in, string] LPCWSTR szName, [in] REFIID riid, [out, iid_is(riid)] LPUNKNOWN * ppUnk ); 通过指

文档评论(0)

153****9595 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档