- 1、本文档共5页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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 );
通过指
您可能关注的文档
- 大孔吸附树脂法-没有幻灯片标题.ppt
- 大孔容拟薄水铝石的生产控制.doc
- 大孔径、高孔密射孔防砂.ppt
- 大孔树脂在医药研发中应用.ppt
- 大学之所以为大.ppt
- 大学之魂.ppt
- 大学入学感言.doc
- 大学培训大纲 - 美国大学培训大纲.ppt
- 大学授课模板avaliaodesempenh淡色素雅.ppt
- 大学数学 方差分析.ppt
- Power Up五级精品课件PPT-Unit 5 Fun foods Lesson 8.pptx
- Power Up五级精品课件PPT-Unit 7 Feeling it Lesson 3.pptx
- Power Up五级精品课件PPT-Unit 1 In style Lesson 2.pptx
- Power Up五级精品课件PPT-Unit 3 Jim-nastics Lesson 4.pptx
- Power Up五级精品课件PPT-Unit 1 In style Lesson 6.pptx
- Power Up五级精品课件PPT-Unit 9 Lights camera action Lesson 1.pptx
- Power Up五级精品课件PPT-Unit 7 Feeling it Lesson 5.pptx
- 2024广告制作协议书,广告合同范本.docx
- 2024国营企业实行劳动合同制度暂行规定 劳动合同(国营企业).docx
- 2024上海家居装饰装修施工合同.docx
文档评论(0)