欢迎光临散文网 会员登陆 & 注册

通讯协议019——全网独有的OPC AE知识四之接口(三)

2023-07-21 09:28 作者:zhouwl72  | 我要投稿

本文简单介绍OPC AE规范的接口对象OPCEventServer的相关知识,更多通信资源请登录网信智汇(wangxinzhihui.com)。OPC AE规范描述了OPC事件服务器应该实现的对象和接口,实现在多个OPC客户端间共享事件和警报条件。

6)HRESULT QuerySubConditionNames

[in] LPWSTR szConditionName,

[out] DWORD* pdwCount,

[out, size_is(,*pdwCount)] LPWSTR** ppszSubConditionNames

);

QuerySubConditionNames方法为客户端提供了一种查找相关条件的特定子条件的方法。条件名称是服务器特定的。

返回的子条件名称的数量将根据服务器的复杂程度而变化,但对于大多数服务器来说,预计小于10,这使得该接口比自定义枚举器更合适。

服务器上特定条件的可用子条件名称应为相当“稳定”,并且它们通常不会“在线”更改。但是,实际上允许服务器随时更改可用的选择。因此,客户应该这样做(或者至少允许作为一种选择)每次选择要呈现给最终用户时,都要做新的查询。

 

7)HRESULT QuerySourceConditions

[in] LPWSTR szSource,

[out] DWORD* pdwCount,

[out, size_is(,*pdwCount)] LPWSTR** ppszConditionNames

);

QuerySourceConditions方法为客户端提供了一种查找与指定的源(例如FIC101)相关联的特定条件名称的方法。条件名称是服务器特定的。

根据服务器的复杂程度,返回的条件名称的数量会有所不同,但对于大多数服务器,预计小于10,这使得该界面比自定义界面更合适枚举器。

服务器上特定源的可用条件名称将相当“稳定”,并且它们通常不会“在线”更改。但是,实际上允许服务器随时更改可用的选择。因此,客户应该这样做(或者至少允许作为一种选择)每次选择要呈现给最终用户时,都要做新的查询。

 

8)HRESULT QueryEventAttributes(

[in] DWORD dwEventCategory,

[out] DWORD* pdwCount,

[out, size_is(,*pdwCount)] DWORD** ppdwAttrIDs,

[out, size_is(,*pdwCount)] LPWSTR** ppszAttrDescs

[out, size_is(,*pdwCount)] VARTYPE** ppvtAttrTypes

 );

使用QueryEventCategories方法返回的EventCategories,客户端应用程序可以调用QueryEventAttributes方法以获取有关供应商特定属性的信息,服务器可以提供指定事件类别内的事件作为事件通知的一部分。简单服务器可能不支持某些甚至所有EventCategories的任何供应商属性。

特定事件类别的所有事件都有可能支持相同的属性信息。对于同一服务器中该类别的不同实例具有不同属性的事件类别,服务器应该返回所有属性的并集,而客户端必须允许事件中的某些事件通知属性为null。

 

9)HRESULT TranslateToItemIDs(

[in] LPWSTR szSource,

[in] DWORD dwEventCategory

[in] LPWSTR szConditionName,

[in] LPWSTR szSubconditionName,

[in] DWORD dwCount,

[in, size_is(dwCount)] DWORD* pdwAssocAttrIDs,

[out, size_is(,dwCount)] LPWSTR** ppszAttrItemIDs,

[out, size_is(,dwCount)] LPWSTR** ppszNodeNames,

[out, size_is(,dwCount)] CLSID** ppCLSIDs

 );

许多报警和OPC事件服务器都与OPC DA服务器相关联。由于这些服务器可以向与事件相关联的一些或全部属性提供数据访问接口,应用程序需要能够确定特定ItemID给相关源ID的一个或多个特定属性ID代码,以便能够通过数据访问接口访问属性,TranslateToItemID执行所需的转换。此功能有助于客户端希望使用OPC数据访问接口订阅给定事件或警报相关实时数据的情况。

给定事件源和关联属性ID代码的数组,返回项目ID的数组与每个属性ID对应的字符串。事件源以及关联的属性ID作为IOPCEventSink::OnEvent回调机制的一部分返回。给定事件类别的属性ID代码和描述也可以通过IOPCEventServer::QueryEventAttributes函数获取。服务器必须为没有相应项目ID的属性ID返回NULL字符串。

 

10)HRESULT GetConditionState (

[in] LPWSTR szSource,

[in] LPWSTR szConditionName,

[in] DWORD dwNumEventAttrs,

[in, size_is(dwNumEventAttrs)] DWORD* pdwAttributeIDs,

[out] OPCCONDITIONSTATE ** ppConditionState

);

返回与szSource和szConditionName。客户端必须释放返回的结构。

一些服务器可能没有维护足够的条件状态信息来完全实现此方法。在这种情况下,服务器应该返回E_NOTIMPL。如果服务器选择实现此方法必须为OPCCONDITIONSTATE的每个成员返回有效信息。

更多通信资源请登录网信智汇(wangxinzhihui.com)。


通讯协议019——全网独有的OPC AE知识四之接口(三)的评论 (共 条)

分享到微博请遵守国家法律