OPC AE server的实现
日前实现了OPC AE server,特此记录备查。
1、事件分三类,从下图可知每类都包含啥内容了,CONDITION看起来主要是一些越限,熟悉其它协议的朋友应该对这个不陌生,一般这种事件产生时,会带上一些发生时刻的相关属性值,跟DLT645协议有些像。SIMPLE有批量状态和系统信息,TRACKING是系统被写数据时产生的事件记录,DLT645协议里面也有类似这种,如表清零事件。
OPC_SIMPLE_EVENT
OPC_CONDITION_EVENT
OPC_TRACKING_EVENT
2、CONDITION事件的参数属性
典型数据举例
ftTime=1685580327295,wChangeMask=209,wNewState=1,dwEventType=4,dwEventCategory=1,dwSeverity=90,wQuality=0,bAckRequired=0,ftActiveTime=1685580303499,Source=一期水控制域/一期污水/271AI_001,Message=酚氨回收废水进水管PH,Condition=HH,Subcondition=HH
用AE模拟客户端小工具可见如下属性:
这些属性的定义见标准的107到110页。
ftTime产生时间 ftActiveTime消除时间
wNewState由A WORD bit mask of three bits specifying the new state of the condition: OPC_CONDITION_ACTIVE(bit1),
OPC_CONDITION_ENABLED(bit0),
OPC_CONDITION_ACKED(bit2).
其中bit2和bit1的4种状态如下(另一种AE模拟客户端小工具):
报警已产生,但未被确认和消除
报警已确认,但未被消除
报警已被消除,但未被确认
报警已被确认并被消除
3、事件状态机转换(标准的21页),说明了事件的状态转换,触发条件,产生规则。
4、有的AE服务端带自动过滤一定程度的重复事件的功能,这个仁者见仁的功能,可以选择性的实现,有的属性是通过其它属性关联计算得出或者完全由用户指定。了解各种调试小工具各个控件的含义以及协议规范对开发大有裨益。