告警和事件在自动控制领域十分重要,它是保障系统安全运营的主要措施。OPC UA 设立了专门的一部分来规范告警和条件模型
《OPC 10000-9: UA Part 9: Alarms and Conditions》。
事件,条件和告警是OPCUA 信息模型中相对比较复杂的内容。应该根据应用的具体需求精心选取和实现。
事件,条件和告警都是表示了系统或者某一个组件的状态变化,例如:
在OPCUA 中,最基本的告警信息是事件。它是一个对象节点,包含了子类型和属性:
一些重要的属性
Time(事件发生的时间)
Severity(严重程度)
表示事件的严重程度,范围从1 到1 000 ,1 表示最低,1000 最高。在具体的应用中需要具体地定义每个事件的Severity值。
Message(通知消息)
SourceName(谁发出的消息,即事件源的名字)
条件是一个对象类型。是基本事件类型派生出来的,包含了BaseEventType属性,并且扩展了一些属性:
条件的特点是增加了名称·,状态以及方法:
EnableState
Disable方法
允许关闭该条件,不会向客户端发送。
Enable 方法
允许该条件。
Enable和disable 的状态切换可以通过Disable 和Enable 方法实现切换,也可以通过Server 端的应用程序来切换。
一些重要的属性
Quality -是产生该条件的过程值和资源的状态,例如,如果过程值为“不确定”,则相关的“液位报警”条件也值得怀疑。质量值可以是 OPC 10000-8 中定义的任何 OPC状态代码,也可以是 OPC 10000-4 中定义的良好,不确定和不良好。这些代码状态各种现场总线规范中的数据质量描述相似,但略微通用。
条件类型进一步派生出告警类型,它们的分层关系如下:
这是一种可实例化的条件类型。能够实例化。而Condition Type是abstract type 它为派生类提供一些有用的功能。但是不能实例化。
响应式条件增加了两个状态:
AckedState 响应状态
响应状态是客户端通过某种逻辑发送给服务器端,也可以当条件成立的现象消逝时,自动的产生(有服务器端处理)。
ConfirmedState 确认状态(可选项)
确认状态与响应状态有些区别,确认状态是操作员做了一些处理之后,进入确认状态。例如,马达温度高条件出现,操作员可以直接响应。如果采取某些措施之后,例如降低电机的负载,已降低温度,然后发送确认状态。
告警是在响应式条件类型基础上派生出来的。
相比之下,告警条件多了一些属性,状态和方法:
上面这些状态,属性和方法有些是可选项。
修改Severity的值将会触发事件,条件和告警。但是具体实现是还需要修改一些属性。下面是一个简单的触发程序:
在SCADA 和历史数据库中,都具有告警的管理(Alarm/Event Management)。专门有Alarm Viewer,告警的分类,历史存储等组件。OPCUA 的告警的信息模型要根据具体的应用来裁剪,选取和构建。不一定千篇一律。可以灵活应用。