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

通讯协议016——全网独有的OPC AE知识三之事件

2023-07-18 09:17 作者:zhouwl72  | 我要投稿

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

事件是一种可检测的对OPC事件服务器、设备、OPC客户端具有重要意义的事情。事件可能与条件相关,也可能不相关。例如,转换到LevelAlarm状态和恢复正常是与条件相关联的事件。而操作员操作、系统配置更改和系统错误则是与条件无关的事件。

事件在OPC模型中没有直接表示。通过Event Notification告知事件发生,由OPCEventNotification3类实现。

    存在以下三种事件类型:

        1)条件事件:与OPCConditions相关的事件,表示进入或退出由OPCConditions和OPCSubConditions表示的状态转换。例如:FIC101转换为LevelAlarm状态和HighAlarm子状态。

        2)跟踪事件:不与条件相关联的事件,表示发生的事件涉及OPC客户端与OPC事件服务器内的“目标”对象的交互。例如:控制更改,操作员(OPC客户端)更改标签FIC101的设定点(“目标”)。

        3)简单事件:是除上述事件之外的所有事件。例如:由OPC事件服务器表示的系统/设备内的组件故障。

 

1、 事件通知

OPCEventNotifications使用由OPC客户端在事件订阅中提供的连接点回调接口发送到订阅客户端。OPCEventNotifications的层级结构如下图所示。

       

2、 简单事件通知OPCSimpleEventNotifications 属性

OPCSimpleEventNotifications具有以下标准属性。请注意OPCConditionEventNotifications和OPCTrackingEventNotifications也包括这些标准属性。

Source:生成事件通知的对象的引用。例如:当标签FIC101进入LevelAlarm条件(与条件相关的事件),Source就是标签名FIC101;它也可以是跟踪事件,如操作员更改FIC101的设定点值,Source就是标签名FIC101;对于简单事件,如系统错误,Source值可能为“system”。

Time:事件发生的时间。

Type:条件事件、跟踪事件、简单事件。

EventCategory:事件所属的类别。

Severity:事件的紧迫性。可能的取值范围为1-1000。

Messgage:描述事件的消息文本。对于与条件相关的事件,一般包括活动子条件的描述属性。

 

3、 跟踪事件通知OPCTrackingEventNotifications属性

OPCTrackingEventNotifications除了具备OPCSimpleEventNotifications的属性,还具备以下属性:

ActorID: 发起导致跟踪相关事件的操作的OPC客户端的标识符。例如,如果跟踪相关事件是FIC101的设置点的更改,则ActorID可能是对发起更改的客户端应用程序的引用,或者可能是指定更改的操作员的用户ID。

 

4、 条件事件通知OPCConditionEventNotifications属性

OPCConditionEventNotifications除了具备OPCSimpleEventNotifications的属性,还具备以下属性:

ConditionName:关联OPCCondition名称

SubConditionName:当前激活的OPCSubCondition的名称

NewState:表示条件的新状态。表示条件的Enabled、Active和Acked属性新值

AckRequired:是否需要确认的标识符。许多事件与条件相关的通知通常不需要确认,例如:接收到确认或转换到非活动状态。此外可以配置一些条件,对于转换到该状态,或子条件之间的转换(例如转换为LevelAlarm或转换从HighAlarm到HighHighAlarm)不需要确认。在这种情况下,服务器自动将条件置于已确认状态,因此将永远不会收到确认。

ActiveTime:转换到事件通知的相关条件或子条件的时间。

Cookie:服务器定义的与事件通知关联的cookie。客户在确认时使用此值。该值对客户端是不透明的。

ActorID:确认条件的OPC客户端的标识符。

 

5、 事件类别

EventCategories定义OPC事件服务器支持的事件分组。例如:事件类别可能包括“过程事件”、“系统事件”或“批处理事件”。事件类别可以为所有事件类型定义,即简单、跟踪和条件相关。特定事件类别可以仅包括一种类型的事件。给定来源(例如“System”或“FIC101”)可以为多个事件类别生成事件。事件类别的名称必须为在事件服务器中是唯一的。

事件类别的名称包含在每个事件通知中。事件订阅可以是根据事件类别筛选。

 

6、 订阅事件通知

为了接收事件通知,OPC客户端必须订阅这些通知。订阅通过后,创建一个OPCEventSubscription对象与OPC事件服务器进行交互。OPC客户端可以有一个或多个OPCEventSubscriptions对象与单个OPC事件服务器进行交互。

OPCEventSubscriptions是“可连接对象”,因为它们实现DCOM连接点接口。这是用于向OPC客户端发送事件通知的机制。

OPCEventSubscriptions提供了一个接口,允许OPC客户端指定筛选器。此外它们实现了标准的DCOM连接点接口,将事件发生通知OPC客户端。

 

7、 OPCEventSubscriptions属性

OPCEventSubscription具备如下属性:

Filter:用于选择客户端感兴趣事件的结构。空过滤器会导致OPC客户端接收所有事件通知。

OPCEventSubscription只有一个筛选器。

可以使用以下标准选择事件:

•事件类型:即简单、条件或跟踪。

•事件类别

•最低严重性,即严重性大于或等于指定严重性的所有事件。

•最高严重性,即严重性小于或等于指定严重性的所有事件。

•过程区域

•事件源

单个标准的值列表在逻辑上被“或”运算在一起(例如:如果指定两个事件类别,将接收两个类别的事件通知)。如果指定了多个标准,它们将被逻辑地“与”在一起,即仅那些满足所有标准的事件将被选择。例如:指定最低优先级和最高优先级,将导致事件的选择优先级介于两个值之间。

例如:

Type = CONDITION

Category = PROCESS

LowSeverity = 600

Area = AREA1, AREA2

    以上表示选择区域AREA1、AREA2内具有高紧急性(大于或等于600)的“过程”类别的条件关联事件。

        

8、 条件状态同步

OPC客户端通过向每个活动的OPCEventSubscription对象请求“刷新”,获得所有处于活动或处于非活动但未确认的条件状态。服务器通过事件回调机制向客户端发送适当的事件。当调用客户端的回调时,服务器将指示调用是用于刷新还是原始通知,刷新和原始事件通知将不会混合在同一个回调调用中。

此设计假设客户端只需要条件的当前状态信息,因此仅将与条件相关的事件通知刷新。需要注意的是,“刷新”不是一般的重放功能,因为服务器不需要维护事件历史记录。

刷新事件通知可能以任意顺序发送,并且可能不按顺序发送。当服务器回复刷新请求时,条件可能会更改状态,刷新事件通知可能不再反映客户端接收到它时的当前条件状态。类似地,客户端可以在接收到刷新事件通知之后接收原始事件通知。客户端需要比较时间戳,以确保其状态正确情况。

客户端必须显式调用Refresh()方法才能获得刷新事件通知。这是与OPC DA接口不同,在OPC DA接口中,激活或向组添加项目会导致隐式刷新。

 

9、 错误处理

OPC事件服务器可能会将内部或源错误报告为标准事件,可能是简单事件或条件相关事件。服务器错误的事件属于OPC_SERVER_ERROR事件类别。

在事件源失去通信的情况下,该事件源的当前活动条件源应该更新其质量属性以表示通信丢失。可以通过将质量设置为“坏”并将子状态设置为“通信故障”来完成。这一质量变化必须向所有订阅者发出事件通知。

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


通讯协议016——全网独有的OPC AE知识三之事件的评论 (共 条)

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