OPCServer概述资料下载.pdf

上传人:b****1 文档编号:16086808 上传时间:2022-11-19 格式:PDF 页数:5 大小:140KB
下载 相关 举报
OPCServer概述资料下载.pdf_第1页
第1页 / 共5页
OPCServer概述资料下载.pdf_第2页
第2页 / 共5页
OPCServer概述资料下载.pdf_第3页
第3页 / 共5页
OPCServer概述资料下载.pdf_第4页
第4页 / 共5页
OPCServer概述资料下载.pdf_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

OPCServer概述资料下载.pdf

《OPCServer概述资料下载.pdf》由会员分享,可在线阅读,更多相关《OPCServer概述资料下载.pdf(5页珍藏版)》请在冰豆网上搜索。

OPCServer概述资料下载.pdf

顾名思义,OPC是一种利用微软的COM/DCOM技术来达成自动化控制的协定,根据OPCSpecification的定义,OPCisastandardmechanismforcommunicatingtonumerousdatasources,eitherdevicesonthefactoryfloor,oradatabaseinacontrolroom.在现今的工业自动化中,我们需要一套整合的信息系统,由底层的各项装置采集信息(FieldManagement),中层的控制系统或图控应用程序进行程序的控制(ProcessManagement),再由最上层的整合软件将这些信息整合起来以供企业决策或效能提升,如下图所示:

OPC为硬件制造商与软件开发商提供了一条桥梁,透过硬件厂商提供的OPCServer接口,软件开发者不必考虑各项不同硬件间的差异,便可自硬件端取得所需的信息,所以软件开发者仅需专注于程序本身的控制流程的运作。

此外,由于COM/DCOM实作并隐藏了网络的细节,透过OPC可以很容易地达成远程控制的理想。

2.HowdoesOPCwork?

在说明OPCServer/Client运作方式之前,我们先简单介绍一下Microsoft发展的COM/DCOM是什么?

COM是一种发展软件组件的方法,所谓的软件组件,是指一个可以提供应用程序、操作系统、以及其它组件服务的二进制可执行程序。

事实上,发展自订的COM对象就好象是在建构一套可以动态执行的对象导向API一般。

你可以在应用程序执行的时期随意拼上或移除所需要的组件。

依据COM这样的概念,发展应用程序就像是堆积木一样,每一个COM组件就是一块积木,你可以利用各式各样不同的积木,拼凑出你所需要的应用程序。

在实作上,COM透过一组一组的接口(Interface)提供服务,所有COM组件的使用者,都必须透过这些Interface来使用组件提供的功能。

OPC的规格中便定义了许多OPCServer应该提供的Interface,要撰写一个OPCServer的COM组件,你必须在你的组件中加入这些接口,并提供它们的实作,Client便可以透过这些接口,操作连接到OPCServer的硬件装置,这也就是OPCServer/Client运作的方式。

以下的图标可以让这样的概念更清晰。

3.OPCServer架构如前面所述,OPCServer透过一组一组的接口提供服务,不过在实作的架构上,OPCServer共分为三层:

分别是OPCServer,OPCGroup,OPCItem其中每一个OPCItem对应到一个实际的硬件装置上的某一个channel或port;

每一个OPCGroup则包含了许多的OPCItem,同时并定义这些OPCItem更新的时间、方式,以及提供读取OPCItem值的接口;

而每一个OPCServer则包含若干个OPCGroup,同时提供操作这些OPCGroup的接口。

下图可以较清楚地说明OPCServer/OPCGroup/OPCItem间的关系:

4.OPCCustomInterface接下来的这一节,我们将讨论OPCServe的重点,也就是每一组接口的定义,以及它所提供的功能。

OPCServer提供的接口:

IOPCCommonHRESULTSetLocaleID(dwLcid)设定位置信息HRESULTGetLocaleID(pdwLcid)取得位置信息HRESULTQueryAvailableLocaleIDs(pdwCount,pdwLcid)查询可用的位置IDHRESULTGetErrorString(dwError,ppString)取得错误信息字符串HRESULTSetClientName(szName)设定Clinet的名称IOPCServerHRESULTAddGroup(szName,bActive,dwRequestedUpdateRate,hClientGroup,pTimeBias,pPercentDeadband,dwLCID,phServerGroup,pRevisedUpdateRate,riid,ppUnk)新增一个OPCGroupHRESULTGetErrorString(dwError,dwLocale,ppString)取得错误信息字符串HRESULTGetGroupByName(szName,riid,ppUnk)依据名称取得OPCGroup的介面HRESULTGetStatus(ppServerStatus)取得OPCServer的状态信息HRESULTSetClientName(szName)设定Clinet的名称RemoveGroup(hServerGroup,bForce)移除一个OPCGroupHRESULTCreateGroupEnumerator(dwScope,riid,ppUnk)产生一个OPCGroup列举器IConnectionPointContainerHRESULTEnumConnectionPoints(IEnumConnectionPointsppEnum)列举所有的ConnectionPointsHRESULTFindConnectionPoint(REFIIDriid,IConnectionPointppCP)找出一个ConnectionPointIOPCItemPropertiesHRESULTQueryAvailableProperties(szItemID,pdwCount,ppPropertyIDs,ppDescriptions,ppvtDataTypes);

查询可用的OPCItem属性HRESULTGetItemProperties(szItemID,dwCount,pdwPropertyIDs,ppvData,ppErrors)取得OPCItem的属性HRESULTLookupItemIDs(szItemID,dwCount,pdwPropertyIDs,ppszNewItemIDs,ppErrors)使用名称查询OPCItem的IDIOPCBrowseServerAddressSpace(optional)HRESULTQueryOrganization(pNameSpaceType)查询组织名称HRESULTChangeBrowsePosition(dwBrowseDirection,szString)变更浏览的位置HRESULTBrowseOPCItemIDs(dwBrowseFilterType,szFilterCriteria,vtDataTypeFilter,dwAccessRightsFilter,ppIEnumString)浏览OPCServer內所有定义的OPCItemHRESULTGetItemID(szItemDataID,szItemID)取得OPCItem的IDHRESULTBrowseAccessPaths(szItemID,ppIEnumString)浏览存取OPCItem的路径OPCGroupObject提供的介面IOPCGroupStateMgtHRESULTGetState(pUpdateRate,pActive,ppName,pTimeBias,pPercentDeadband,PLCID,phClientGroup,phServerGroup)取得OPCGroup的状态即设定信息HRESULTSetState(pRequestedUpdateRate,pRevisedUpdateRate,pActive,pTimeBias,pPercentDeadband,PLCID,phClientGroup)设定OPCGroup的状态信息HRESULTSetName(szName)设定OPCGroup的名称HRESULTCloneGroup(szName,riid,ppUnk)复制一个OPCGroupIOPCSyncIOHRESULTRead(dwSource,dwCount,phServer,ppItemValues,ppErrors);

以同步方式读取OPCGroup内的OPCItem(s)的值HRESULTGetItemProperties(szItemID,dwCount,pdwPropertyIDs,ppvData,ppErrors)取得OPCItem的属性HRESULTWrite(dwCount,phServer,pItemValues,ppErrors)以同步方式将值写入OPCGroup內的OPCItem(s)IOPCAsyncIO2HRESULTRead(dwCount,phServer,dwTransactionID,pdwCancelID,ppErrors,)以非同步方式读取OPCGroup内的OPCItem(s)的值,值会在读取硬件的动作结束后以callback的形式传回HRESULTSetState(pRequestedUpdateRate,pRevisedUpdateRate,pActive,pTimeBias,pPercentDeadband,PLCID,phClientGroup)设定OPCGroup的状态信息HRESULTWrite(dwCount,phServer,pItemValues,dwTransactionID,pdwCancelID,ppErrors)以非同步方式将值写入OPCGroup内的OPCItem(s)HRESULTCancel2(dwCancelID)取消前一次的非同步读取/写入HRESULTRefresh2(dwSource,dwTransactionID,pdwCancelID)更新OPCGroup內OPCItem(s)的值HRESULTSetEnable(bEnable)将OPCGroup设为EnableHRESULTGetEnable(pbEnable)传回OPCGroup是否为EnableIOPCItemMgtHRESULTAddItems(dwCount,pItemArray,ppAddResults,ppErrors);

在OPCGroup内新增OPCItem(s)HRESULTValidateItems(dwCount,pItemArray,bBlobUpdate,ppValidationResults,ppErrors)检查OPCItem(s)的名称是否可用HRESULTRemoveItems(dwCount,phServer,ppErrors)移除OPCGroup內的OPCItem(s)HRESULTSetActiveState(dwCount,phServer,bActive,ppErrors)高定OPCItem(s)是否为AvtiveHRESULTSetClientHandles(dwCount,phServer,phClient,ppErrors)设定OPCItem(s)的handleHRESULTSetDatatypes(dwCount,phServer,pRequestedDatatypes,ppErrors)设定OPCItem(s)的数据类型HRESULTCreateEnumerator(riid,ppUnk)产生OPCItems的列举器IConnectionPointContainerHRESULTEnumConnectionPoints(IEnumConnectionPoin

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 电大

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1