迟海龙,汪华强
(1.中国水利水电科学研究院 自动化所,北京 100038;2.北京中水科水电科技开发有限公司,北京 100038)
目前水电厂都配置有计算机监控系统,运行人员主要通过监控系统的画面、图表系统和事件告警系统来了解掌握生产系统的实时运行信息,告警系统作为现代化水电站监控系统的重要组成部分,已经成为运行人员监视系统重要有利的工具。事实上、现代化水电站运行中,对警告系统的依赖程度大大增加。告警系统提供绝大多数生产系统的实时运行信息。如何让告警系统快速、准确、高效为运行人员提供生产运行信息,是目前水电站生产智能化的一个重要方向。
通过对某大型电站的告警信息进行分析发现,该电站全厂设备各类型信号由LCU 采集后未作任何判断处理直接上送至监控系统。针对2020 年每日告警一览表进行统计,发现全年共产生510 万条信号,平均每日产生1.4 万条信号,其中最多的一天产生了6.8 万条信号。监控系统每日告警信号繁多,给运行人员监屏工作带来一定压力,容易致使运行人员遗漏重要告警信息,存在延误处理造成事故的风险。目前对测点冗余重复告警和洪水告警有很多传统的处理策略,例如滤波、延时或闭锁等技术的采用有效减少告警抖动信息的数量,具体可参考迟海龙 等[1]相关的详细讨论。
告警到达速率是刻画告警的一项重要指标,它反映告警发生的频率,是告警处理的重要基础刻画,告警原则要满足以下3 点:
(1)体现单位时间内警报信息到达的数量 ,即在预定义的单位时间内实际到达告警的个数;
(2)体现各个信息之间的间隔长度及间隔分布密度,就是在原则1 相同的情况下要对不同的告警到达间隔疏密不同有所区分,到达间隔密集的要高于间隔稀疏的,即要考虑告警到达密度分布不均衡的影响 ;
(3)体现时间衰减因子各个间隔影响,就是在原则2 的相同情况下,对到达间隔密度发生的时间位置要有所区分,引入该因子是基于告警系统中一般认为时间较长的告警被作为陈旧告警,其信息由于已识别或者时间紧迫周期已过,表述意义没有最新的告警重要。告警速率的具体定义可以参考相关文献[2],此文不在赘述。一般过程工业告警系统的告警达到速率应该不要超过一定的数值,否则就会给运维人员带来识别上的压力和困难。2022 年国家标准GB/T 41261-2022《过程工业报警系统管理》[3]中对于告警速率有相关的推荐指标要求(表1)。具体实施时可按实际情况进行修正采用。
表1 平均报警率
对于报警系统的噪声问题国内外监控厂家或者学者有过相对充分和系统的研究,通常认为报警中存在的大量无效、低效甚至是错误的报警是告警系统的噪声,这些作为噪声的报警信息不仅干扰运行人员,有的甚至还会误导甚至蒙蔽麻痹了操作人员正常的操作能力,继而引发事故征候,甚至更大的生产事故。
噪声报警可能以如下形式存在于系统中:①无效状态报警信息。例如设备处于非工作状态或非正常状态下产生的报警,如机组停机检修等产生的大量无效报警。②模拟量或者开关量连续频繁的抖动或者限制变化产生的低效报警。这些报警信息充斥的大量重复低效的信息导致整个报警系统的有效、关键报警信息量过低,容易使操作人员产生疲倦麻痹的不良工作状态。③泛洪报警,当整个控制系统处于震荡或者大规模状态越迁时,系统会产生非常大量的点状态和数值变化。巨量报警信息“涌进”报警系统后,轻则导致系统通道阻塞,信息延迟等,重则可能使整个控制系统瘫痪,操作人员无法正常监控生产。
2.2.1 相同分组折叠策略处理
首先对告警的特征进行分析和判定,如果满足折叠要求就启动分组聚合策略。该策略就是判断每个告警之间的特征关联信息是否相同,这里告警关联信息可以选择测点的点名或者英文名字,如果相同则进行聚合。核心思想就是去除告警中相同冗余的部分,通过提取公共部分的方法将相同的重复告警“折叠”成一条复合告警信息,复合告警信息可以体现出告警复合的数目,同时也将差异部分进行降维度的压缩显示。这样可以最大限度消除重复信息。同时由于聚合操作中对任意告警都没有丢弃,所以整个折叠压缩过程信息是无损的。
图1 告警折叠版面示意图
2.2.2 相似分组折叠的方法
相似分组折叠的策略与相同折叠策略大致相似,只是在折叠中的折叠依据从相同的关键信息改为相似的一组测点信息。这里首先要计算每个告警之间的特征关联距离和属性相似度,相同相近的进行聚合。 但聚类算法由于计算指标公式比较复杂且计算复杂度较高,在实际应用中有性能瓶颈。所以可以通过预先认为设定或者相似测点频繁集算法来定义一簇测点族。相同族内的信息折叠一条信息,信息树的根节点信息为族内重要代表测点信息。例如系统在开关机组等控制过程中可能会产生各个相关设备动作及各种油气水参数变化等信息。这些信息可以定义为以开机过程为中心的一组测点群,通过相关测点分组方式折叠为一条开机信息告警。这样告警面板中信息简明扼要,可有效减少人员工作强度。
在方案中设置了规则分析引擎、规则数据库、告警面板、规则配置等模块 。规则分析引擎中又包括规则分析和规则栈,总体方案见图2。
图2 智能告警总体架构框图
当原始告警信息到达后首先要进入到规则分析引擎中 ,规则引擎首先提取出告警信息中的规则关键信息点,然后用得到的关键信息到规则数据库中查找已有的规则信息,当查到后需要将查到的规则压入规则栈中,原始告警到达规则分析引擎后,经过一簇规则序列处理后得到结论告警信息发送给告警面板或没有相关处理规则的时候,告警信息需按原样发送给告警面板。每个原始告警到达告警协议栈时都要经过协议栈中所有规则处理后决定其下一步处理方式 ,这样原始告警的生数据信息经过处理后变成了人为更容易识别的熟数据。规则配置模块为人为配置信息输入窗口,系统启动后会自动装载预设的规则信息。
规则引擎是由一系列规则构成的规则链。而构成规则链的规则则可以分为条件和动作两个部分。其基本的语法描述为: “ RULE parmeters WHEN conditions THEN acttions END ; ”其中“RULE”“WHEN” “THEN” “END”是构成 描述规则的基本框架的保留字。“WHEN”及 “conditions”构成了条件体,而“THEN actions”构成了告警评审体。当规则中的条件体满足时就会执行评审体中的命令。
当规则压入规则栈后,规则引擎就会在每个原始告警信息到达后,对信息进行顺次分析处理。规则在规则栈中是以链式的方式进行存储的,告警信息会通过每个规则的审查,如果该规则对该条告警信息适用则对其进行分析处理,处理的结果有如下3 种情况(图3):
图3 规则栈工作原理图
(1)适用该规则且满足该时序规则的预设条件子模式,则在处理过程中对告警进行缓存并“吞掉”该信息。直道最后一个模式结束的告警信息到达,规则会发出结论告警信息到面板;
(2)使用该规则且不满足该时序规则的预设子模式时,则将之前缓存吞掉的告警信息释掉,一并“吐出”,并给出该规则不满足的具体原因,发送到面板;
(3)不适用该规则,则顺次进入到规则链中的下一个规则处理中,直到找到使用的时序规则并处理之,或者如果规则栈中没有任何适用的规则,则该告警会保持原始状态发送至面板。
对于规则引擎来说每一条告警信息可被认为是一个事实(fact),工作中,每条事实告警都要顺序的通过规则链中的各个规则,并被之评审(review)。当事实满足规则的评审要求时,规则可能会对告警事实进行相关评审工作,比如修改告警的某些参数(等级、内容等)甚至丢弃或者删除。当一个事实告警被某条规则评审修改后满足后续告警的规则会重新被评审进而发生连锁式的修改。这种链条递进式的修改被称之为规则引擎的推导,通过推导可以让规则引擎对告警进行强大分析和处理,产生进一步故障溯源的衍生和次生高级告警信息。这种推导有利于我们对告警进行更进一步高阶处理。
传统告警浏览器中过滤操作一般通过按钮和开关等方式实现,这种方式虽然简单易用但也存在着逻辑表达能力弱,过滤效率和准确度不高及过滤条件不可随心定制等问题。本方案中增加了逻辑表达式方式描述过滤条件的、更高效的过滤方式。
过滤条件的定义:过滤条件可以采用逻辑操作符(与或非)进行连接。可采用传统的关系运算判断和逻辑操作等嵌套定义更准确、更深层的过滤条件。例如可查询等级为2 且告警已经确认的告警,可输入条件为:“alarm-level>2 & alarm-aked:1” 。 这里的条件由两部逻辑体构成,前者为关系运算(大于),可定义查找范围,后者‘:’为等于运算,可精确定义数值,最后由逻辑‘与’操作链接构成。过滤条件里除了采用常用关系运算外还设计了 “in”、 “match”等高级的集合操作命令,‘in’ 可以进行集合范围内查找,‘match ’可以使用功能更强大的正则表达式过滤,如“alrm_name match r‘.*SXLCU01.*‘”表示参数“alarmname”中包含“SXLCU01”的所有告警 。
过滤条件的纠错、自动补齐、保存:为了方便用户的使用,在过滤条件窗口里设计了条件纠错和自动补齐功能。当用户输入一个告警条件的表达式一部分时,系统会自动给出可能的后续命令字串提示,帮助用户快速准确地完成过滤条件编写。同时当输入的命令语法或拼写有错误时输入框会变为红色并在底部的提示框给出错误信息和修改建议。为了便于用户对过滤条件的重复使用,系统设计了将已经定义好的过滤条件进行备注保存,用户可在未来操作中通过快捷菜单快速定位并重复使用已有条件。
为了减少告警的数量,可以通过定义规则对原始告警进行评审处理。动态屏蔽的基本思路为:当一条告警事实进入到规则链中的一条规则时,首先判断条件体是否满足,如果满足就转入到评审体工作中。屏蔽审计设计了如下几种操作命令:
(1)接受:告警通过评审并原状进入展示模块中;
(2)丢弃:告警被丢弃,不再被用户查看到;
(3)重定向:告警可以重定向到自定义的展示列表中进行分类展示;
(4)删除:相同测点的告警信息将被删掉,只保留最新的一条告警信息;
(5)告警参数设定:对告警事实进行参数的修改,如修改告警等级、告警测点的状态等,并按需进行全系统的测点信息同步。
传统的报警系统对每个事件告警信息点的处理是分立进行的,即每个信息点之间是没有任何规则处理的,但实际生产系统中,很多信息点其实有着内在统一的联系,一簇事件信息往往和某个设备的某种工况一一对应。这些事件群通常都是按照内在逻辑关系和空间、时间关系以固定的模式顺序发生。这种事件群可称之为时序报警信息。
时序综合报警会以一种或多种的固定顺序,顺次发生或事件到达。为了讨论方便,把每一事件点用单个字母替代,例如‘a’事件可能对应的是“开机命令下达”,‘b’事件可以是“PLC 命令收到”。这样就可以把按照时间先后顺序到达的事件描述为‘ab$’,其中‘$’符号代表这一模式的结束,所以每个顺序的事件告警都可以对应一个预定义的字串。同样地,每个字串也代表了某种顺序发生事件链[4]。
按照前述规则字串与事件对应关系,为了更好描述顺序规则,引入计算机系统中对字串有着更强表达能力的正则表达式(Regular Expression)来描述。正则表达式可以描述顺序的乃至周期循环的各种事件的信息。该方法可以表达分支(或)循环、某个子模式的重复等信息。具体语法描述可以从相关互联网在线文档中获得。
举例来说,如图4 所示正则表达为“kc(z|j)+d$”,每个字母的代表含义如图4 左边的表格所示,这里代表的含义为先发生‘k’事件之后是‘c’,后面的括号代表的是一个子模式的整体。括号里面有两个事件,‘z’和‘j’事件是或的关系‘|’,即出现‘z’和‘j’其中之一,括号后面的加号代表这个子模式会重复一次或多次(大于等于1 次)也就是“zjzj”, “zzz”,“jjj”……这些子串都是满足的。最后以‘d’事件结束整个时序规则。反映到具体事件信息上就是‘命令下达’后紧随‘命令收到’,后面就是若干次的‘增磁’或者‘减磁’动作,最后以命令到位结束本次顺序事件过程。如果事件顺序满足这个规则则报告一条综合信息‘命令执行成功’,如果不满足此规则会给出不满足规则的具体原因。
图4 时序告警正则状态转换图
由上述所示的基本时序规则可以演化出多种与时序相关的规则,如等价点规则和多点联合规则等。等价点规则也称对偶点规则,就是两个测点总是对偶相伴出现,例如开关站断路器的两个触点“合闸动作”和“分闸复归”等,这时可以定义等价点规则将两个告警综合为一个告警“断路器动作”,从而减少告警数量并更加准确表达设备变化情况。对点联合规则定义为:当一组测点动作但是动作的先后时间顺序并不固定,这时可以将这一组动作测点的告警信息综合为一条联合告警信息。典型场景为:一组泵设备的动作,如1 号水泵2 号水泵3 号水泵在一起启动时。可能出现1 号、2 号、3 号,2 号、3 号、1号…等不同顺序的告警序列,可用该规则识别此种告警的序列并综合为“XXX 泵组启动”等告警信息。
当时序规则发现并注意到事件没有按照预设的模式发生时,智能规则系统会启动异常分析机制并把分析的结果报告出来,从某例中我们可以看到该次顺序时序事件缺少d,即缺少“调节到位动作”标识信号异常时候报警信息,同样地分析人员可以从事件信息点名中看出这是一个时序规则综合报警信息,并且从信息内容可以看到本次事件集合出现问题,时序规则没有满足并且不满足的原因是该规则所期待的“调节到位动作”这一事件没有如期望那样到达。或者5.3 章节中联合点规则异常时可报告诸如“2 号泵设备启动未发现”等异常信息。通常来说,异常事件的信息等级要比正常事件等级更高,更需引起运行人员的注意。该综合信息可以及时给运行人员传达重要且准确的异常溯源的信息。方便人员对生产过程中的异常给与足够的重视并及时的纠正、解决问题[5]。
本文针对目前很多水电站都面临的告警数量日益增多问题,提出并开发了告警智能化的分析和收敛策略。该策略里通过折叠相似告警的方式可提高版面资源的利用率,降低索引难度;通过规则引擎的告警评审策略可进一步屏蔽无效告警,还可从告警关联内在语义上进行综合分析收敛,提高告警表达的准确度,从而解决大中型水电站控制中心及水电远程控制中心目前所面临的部分困扰。未来还可对事件的各项参数进行进一步的统计分析,并基于统计数据研究模拟量动态智能阈值参数设定的策略和动态告警等级划分等工作,更为有效地降低告警系统对运维监盘的压力,为企业“降本增效”的既定战略助力赋能。