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

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

2023-07-22 10:00 作者:zhouwl72  | 我要投稿

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

11)HRESULT EnableConditionByArea(

[in] DWORD dwNumAreas,

[in, size_is(dwNumAreas)] LPWSTR* pszAreas

);

将指定的过程区域置于启用状态。服务器只能为源本身已启用并且不包含在禁用层次结构中的区域生成条件关联事件。

此方法的效果在事件服务器的范围内是全局的。如果服务器支持多个客户端,将为所有客户端启用条件,客户端将开始接收相关条件事件。

 

12)HRESULT EnableConditionByArea(

[in] DWORD dwNumAreas,

[in, size_is(dwNumAreas)] LPWSTR* pszAreas

);

将指定的过程区域置于启用状态。此方法的效果在事件服务器的范围内是全局的。因此,如果服务器支持多个客户端,为所有客户端启用条件,并且所有客户端将开始接收条件相关事件。

由于此方法的全局影响,一些事件服务器实现者可能会选择不实现它。在这种情况下,服务器应该返回E_NOTIMPL。

    一个条件可能与多个来源相关。这些来源可能是分布于多个区域。启用一个区域的条件不会改变与其他区域中的源关联的同名条件的启用/禁用状态。例如,LevelAlarm”条件,在“区域1”中为源启用,而在“区域2”中为源禁用。

 

13)HRESULT EnableConditionBySource(

[in] DWORD dwNumSources,

[in, size_is(dwNumSources)] LPWSTR* pszSources

 );

将指定事件源的所有条件置于启用状态。服务器将为这些条件生成与条件相关的事件。

此方法的效果在事件服务器的范围内是全局的。因此,如果服务器支持多个客户端,为所有客户端启用条件,所有客户端将开始接收条件相关事件。

由于此方法的全局影响,一些事件服务器实现者可能会选择不实现它。在这种情况下,服务器应该返回E_NOTIMPL。

一个条件可能与多个源相关联。启用一个源的相关条件,不会更改其他源相中相同名称条件的启用/禁用状态,例如,可以为“A100”启用“LevelAlarm”条件,为“FIC101”禁用“LevelAlarm”条件。

 

14)HRESULT DisableConditionByArea(

[in] DWORD dwNumAreas,

[in, size_is(dwNumAreas)] LPWSTR* pszAreas

);

将指定的过程区域置于禁用状态。服务器将停止为这些条件生成与条件相关的事件。

此方法的效果在事件服务器的范围内是全局的。因此,如果服务器支持多个客户端,所有客户端的条件都被禁用,所有客户端将停止接收条件相关事件。

由于此方法的全局影响,一些事件服务器实现者可能会选择不实现它。在这种情况下,服务器应该返回E_NOTIMPL。

一个条件可能与多个来源相关。这些来源可能是分布于多个区域。禁用一个区域的条件不会改变与其他区域中的源关联的同名条件的启用/禁用状态。例如,LevelAlarm”条件,在“区域1”中为源禁用,而在“区域2”中为源启用。

 

15)HRESULT DisableConditionBySource(

[in] DWORD dwNumSources,

[in, size_is(dwNumSources)] LPWSTR* pszSources

);

将指定事件源的所有条件置于禁用状态。服务器将停止为这些条件生成与条件相关的事件。

此方法的效果在事件服务器的范围内是全局的。因此,如果服务器支持多个客户端,所有客户端的条件都被禁用,所有客户端将停止接收条件相关事件。

由于此方法的全局影响,一些事件服务器实现者可能会选择不实现它。在这种情况下,服务器应该返回E_NOTIMPL。

一个条件可能与多个源相关联。禁用一个源的相关条件,不会更改其他源相中相同名称条件的启用/禁用状态,例如,可以为“A100” 禁用 “LevelAlarm”条件,为“FIC101” 启用“LevelAlarm”条件。

 

16)HRESULT AckCondition(

[in] DWORD dwCount

[in, string] LPWSTR szAcknowledgerID,

[in, string] LPWSTR szComment,

[in, size_is(dwCount)] LPWSTR* pszSource,

[in, size_is(dwCount)] LPWSTR* pszConditionName,

[in, size_is(dwCount)] FILETIME* pftActiveTime,

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

[out, size_is(,dwCount)] HRESULT **ppErrors

 );

客户端使用AckCondition方法来确认事件服务器中的一个或多个条件。客户端通过IOPCEventSink::OnEvent回调接收来自条件的事件通知。此AckCondition方法专门确认条件处于活动状态或正在转换转换成不同的子条件(并且没有该条件的其他状态转换)。一个或多个条件属于特定的事件源——事件通知的源。对于每个相关条件事件通知,相应的源、条件名称、活动时间和Cookie作为OnEvent回调参数的一部分由客户端接收。

 

17) HRESULT CreateAreaBrowser(

[in] REFIID riid,

[out, iid_is(riid) LPUNKNOWN* ppUnk

);

为客户端创建一个OPCEventAreaBrowser对象,并将接口返回给客户端。此对象将支持IUnknown和IOPCEventAreaBrowser接口。客户端可以使用此接口浏览服务器上可用的过程区域。

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


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

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