基于Visio故障树的舰炮故障诊断专家系统设计与实现

2017-02-09 09:14李贵阳应文健
舰船电子工程 2017年1期
关键词:连接点舰炮矩形

王 凯 李贵阳 应文健

(1.海军装备部 西安 710043)(2.92721部队 定海 316000)(3.海军工程大学兵器工程系 武汉 430033)

基于Visio故障树的舰炮故障诊断专家系统设计与实现

王 凯1李贵阳2应文健3

(1.海军装备部 西安 710043)(2.92721部队 定海 316000)(3.海军工程大学兵器工程系 武汉 430033)

论文给出了一种基于Visio故障树的故障诊断专家系统。首先介绍了Visio故障树的信息结构;其次给出了使用C#软件读取Visio故障树的方法,以及将故障树转化为规则库的具体方法;然后研究了故障诊断规则库的自学习方案。最后以某型舰炮为例进行了应用验证,显示效果良好。

故障诊断; 专家系统; 故障树; Visio

Class Number E92

1 引言

当前舰炮系统的故障诊断一般通过自动测试和专家系统来实现[1],而专家系统的诊断效果受限于知识库的完备性、推理机制的高效性和专家系统的学习进化能力等,国内外在故障诊断专家系统领域已经研究了很多年,并已有类似应用,但同样会受制于上述三个方面[1~5]。知识库是专家系统的核心,知识库的设计与建立是一个复杂的过程,涉及到知识的表示、使用和维护,一个设计良好的知识库对专家系统至关重要,不仅在开发和使用阶段事半功倍,而且在专家系统的学习进化方面可以取得良好效果[6~7]。知识库的表述有Access、Orcal等形式,将故障现象、推理规则和故障点之间的因果关系直接以数据列表的形式展示出来,但可读性差,后期维护是个问题[1,6]。而故障树采用的是图形的树状结构,直观易懂,随着故障树建模自动化的实现,效率显著提高[7~8]。

本文为此给出了一种基于Visio故障树的故障诊断专家系统,该舰炮故障诊断专家系统使用C#编程软件读取Visio软件编辑的故障树,并将其转化为故障诊断规则表,并研究了故障诊断专家系统的自学习方案,在实际应用中收到良好效果。

2 基于Visio故障树的舰炮故障诊断专家系统

2.1 Visio故障树读取分析

故障树方法是进行装备故障诊断的一种常见有效方法。在进行系统级故障分析时,由于系统组成部件较多,故障传播机理复杂,往往要绘制并存储大量故障树。图形化的故障树能够直观清晰的反映故障的传播方式以及故障事件之间的因果关系,它以图形的方式描述了客观世界中不同对象以及对象之间的关系,是客观世界的一种抽象化的模型,具有直观、简便的优点,在后期维护时也很方便[8]。本文采用了Visio软件来绘制故障树,Visio的绘图控件可以编程方式驱动,利用 Visio生成的图标都保留了原有的信息,有利于故障诊断系统利用编程语言编写程序遍历故障树流程图。如图1所示。

图1 Visio故障树示例

故障树包含了知识库和推理逻辑,分析读取Visio故障树,从而形成故障诊断规则库。主要方法有树—表转换法和图形属性法等。由于树—表转换法需将故障树先转化为初始属性表,进而转为规则表,过程较为繁琐,且涉及相关坐标计算,不太符合对象化操作,因此,本文采用了图形属性法。

图形属性法是一种直接获取故障树中的图形对象并访问图形的各种属性,并据此进行逻辑判断,按照既定顺序遍历整个故障树的规则库设计方法[9]。

1) 获取Visio中的对象

安装Visio SDK,利用封装类包括应用程序对象(CVisioApplication)、文档对象(CVisioDocument)、页面对象(CVisioPage)、形状对象(CVisioShape)等获取对象。 获取了页面或文档对象后,便可调用其方法Shapes()访问页面(或文档)中的形状集合(CVisioShapes)。形状集合表示页面(或文档)中的全部形状。通过调用形状集合类的方法Items(),用户可遍历集合中的所有形状(CVisioShape)。

2) 分析形状属性

逻辑图主要由两类要素组成:一类代表客观事物或节点;一类表示事件之间的关系。前者在图形文件中以各种图形来表示,如矩形、圆形或用户自定义的各种复杂图形;后者则以连接线的方式来表示。

前面所获取的形状中,既包括了表示各种对象的形状,也包括了表示对象关系的连接线。获得形状的主控形状后,利用其方法getName()可得到主控形状的名称。判断其主控形状的名称是否为“动态连接线”则可判断当前形状是对象或者对象间的关系。

3) 分析连接关系

要获取逻辑图中各对象之间的逻辑关系,需要对绘图文件中形状之间的连接进行分析,找出其连接的是哪些形状,并判断连接的方向。用户程序需要获取Visio绘图中的连接对象(CVisioConnect),利用其方法得到与之连接的形状对象(CVisioShape)及连接的部位。所谓连接对象,可将其理解为Visio绘图中的附着在形状之上的连接点。

取得连接对象之后,利用其成员函数便可访问该连接的相关信息, FromSheet()返回该连接点的连接线;ToSheet()返回连接点所依附的形状。图2中连接1的ToSheet()返回形状 A,FromSheet()返回的是连接线 D;连接2的ToSheet()返回形状 C,FromSheet()返回的是连接线D,其余依此类推。通过这些方法,可找出每一条连接线的名称、方向以及连接的形状。

图2 形状之间的连接

利用上述方法,可迅速地从Visio绘图中找出所有连接线,并列出与每一条连接线相连接的形状,读取连接线的属性(如名称、方向等),这些正是逻辑图中所描述的逻辑关系[3]。将其与前面所获得的逻辑对象结合起来,以数据库或表格的形式进行保存,从而完成规则库的设计。

2.2 规则库的产生

规则库的开发是故障诊断专家系统的核心,传统的规则库多数采用人工方式构建,但随着规则的日积月累,出现了诸如规则重叠、混淆和难以维护等问题,致使专家系统的推理中断,出现死循环,以至于酿成推理事故。因此,找到一种高效简便的方法实现故障树图形与编程语言之间的相互转换至关重要。

本文所采取的是一种基于图形的建库方案,其基本原理是通过软件将表述规则库的故障树几何图形进行拆分,然后再对几何图形属性(参数)进行计算和文本抽取,进而得到故障树图形之间的相互联系,利用此联系便可完成故障树由图形到数据的快速转化,方便故障诊断软件使用故障树所存储的信息。 显然这种方式充分借助了几何图形能够直观地关联规则的优点,有利于通过软件对故障树直接进行转换操作。

1) Visio主要对象模型与引用

Visio主要的对象模型如图3所示[10~11]。其中Documents表示在一个Application中打开的所有文档的集合,Document表示一个打开的文档;同理,Pages和Page分别表示页面的集合和一个页面。在图3所示的对象中,Shape和Connect是较常用的两个对象。Shape对象表示基本图形、组合、辅助线或辅助点、链接或嵌入的对象;Connect对象表示绘图中图形的连接点。

图3 Visio主要对象模型

若要获得Shape、Connect等底层对象的引用,必须先获得对象模型中较高级别对象的引用。例如,要想获得某个 Shape对象的引用,首先要引用包含图形的Page页面,然后引用包含当前页面中所有图形的Shapes集合,最后通过该图形在集合中的索引、名称或者唯一ID来从Shapes集合中引用该Shape对象。

2) 图形连接关系原理分析

在Visio中,图形的连接关系是通过Connect对象表示的。引用Connects集合对象有两种方式,一种直接获取当前页面的所有连接点集合;另一种则是通过形状对象的FromConnects属性来获得该形状上的连接点集合。

Connect对象的属性可以返回图形的连接关系。如ToSheet属性与FromSheet属性分别返回连接到的图形与创建连接的图形。FromPart属性和ToPart属性返回的是标识连接在图形中位置的整数常量。当获得Connect对象引用时,就可以利用上述属性得到该连接点所连接的图形,进而得到图形与图形之间的逻辑联系。

图4共有两个连接点l和2。当获得连接点1的Connect 对象引用后,通过Connect对象的ToSheet属性与FromSheet 属性可以返回矩形A与连接线C,通过Connect对象的 FromPart属性和ToPart属性可以得到连接点1位于连接线C 的上方,矩形A的下方,这样就得到关系A—C;同理,通过连接点2可以得到关系C—B。从而可知关系A—B,即矩形A 与矩形B相连,且矩形A位于矩形B的下方[10]。

图4 图形连接关系分析

3) 读取故障树

本文图1所示 Visio故障树对应的的Shape数据分析如表1所示。

表1 Shape数据分析

由上表可知,各形状的name和style是有区别的,具体如下:

矩形: name进程 style流程标准

圆角矩形:name圆角矩形 style基本

棱形: name判定 style流程标准

连接线: name动态连接线 style连接线

因此,可通过name来识别形状类型,找到圆角矩形(事先定义为故障现象入口),并开始下一步。遇到判定时,给出用户判断选择,然后进入下一步。

有关Connect连接线问题,可通过在Visio中先对连接线标识,如Y3、N3(见图5),再利用shape.text来识别连接线。需要用到Fromsheet和Tosheet两个属性。 Fromsheet表示起始于连接线自身形状,Tosheet表示终止于连接线目的形状。

示例:

图5 故障树部分结构示例

如图5所示,可得出:

点A: Fromsheet = Y3 Tosheet = 判定条件3 对应的形状

点B: Fromsheet = Y3 Tosheet = 故障点3对应的形状

点C: Fromsheet = N3 Tosheet = 判定条件3 对应的形状

点D: Fromsheet = N3 Tosheet = 故障点4对应的形状

注意:shape.name无法对应,不能用于区分,所以改用shape.text匹配来确认是哪一个形状。

具体实现流程描述如下:

1) 先遍历所有shape,以name是圆角矩形(故障现象)的图形为流程入口;

2) 遍历所有连接点,根据点的Fromsheet.Text和Tosheet.Name找到第一个判定条件;

3) 根据第一个判定条件,输入“Y”或“N”,遍历所有的连接点,根据点的Fromsheet.Text和Tosheet.Name找到下一个判定条件;

4) 如此往复循环,逐步往下走,直至走到最后一个形状,输出最终故障点,结束程序运行,完成故障诊断。

2.3 自学习模块

自学习模块是指在装备的使用与维护过程中,不可避免地将出现新的故障现象、原有的故障现象出现新的故障点等,如果诊断系统不具备学习能力,它就很难实现自我完善,一旦有了错误就会永远重复相同的错误,这样的系统也不会有生命力。此时就需要故障诊断专家系统能够支持知识的动态插入、删除、编辑等操作,完善整个故障树,从而完善整个故障诊断系统知识库,使之愈加趋于完整与成熟,便于日后装备故障的诊断更加地准确与方便。通常可分两种维护方式来实现:人工维护和自动维护。其中,人工维护需要用户直接对故障树在Visio软件中进行删除或添加等编辑,完善逻辑推理的操作,在后期集中维护中出现较多。而在日常使用中,更多地需要自动维护方式,比如增加新的故障点或删减原有故障点等,就需要依赖程序对故障树进行自动编辑,提高故障树完善的自动化能力,也减少了人工维护工作量。

本文主要采取以下方式:程序会自动学习那些推理成功的历史记录,在后续遇到相似度较高的故障现象时(自动匹配),会将这些历史推理结果同步呈现给舰员。程序会自动按照成功率从高到低来选取推理规则。如果是新的故障点,那么允许用户输入这个新的信息,并将其成功计数加一;如果是不需要的原本存在的故障点,那么允许用户对其进行删除,同时删除成功计数;如果出现新的故障现象,那么由用户创建新的故障树并加入系统知识库。

该方法的技术实现上主要是需要加入外界输入信息和成功计数,并反应到故障树中,涉及到故障树的编辑。该方法既充分利用先验知识,又提供了外界扩充功能,并对高概率事件给予高度重视,长时间使用,可有效记忆历史事件,提高了故障覆盖率,提高了诊断准确率。

3 应用分析

本文以某型舰炮电气系统的一些典型故障树进行应用分析,测试了离线故障诊断和自学习模块功能。

在对该算法的试验中,本文总共进行了21次、11个不同故障树的运行试验,没有出现失败案例。根据故障诊断结果可以得出,利用Visio软件绘制的故障树,利用本文所述方法可以遍历整个故障树,能根据实际情况作出相应的推理,完成故障诊断。而当有些故障现象对应的某一故障点有多种可能时,每种可能在每次故障诊断中以不同的大小概率出现。以历次故障诊断结果积累所获得的某个故障点的概率大小,即诊断成功率,作为下次故障诊断时优先选择哪一个故障点进行输出的依据,依次提高了诊断效率。在自学习模块中,自动维护可以实现简单的删减和增加故障点操作,从而使故障树逐渐得到完善;而通过人工维护方式则可直接在故障树上进行知识的动态插入、删除与编辑等较为复杂的操作,但又是一种十分简便易行的方法,可以在集中维护时进行。

4 结语

本文给出了一种基于Visio故障树的故障诊断专家系统,该舰炮故障诊断专家系统使用C#编程软件读取Visio软件编辑的故障树,并将其转化为故障诊断规则表,并研究了故障诊断专家系统的自学习方案,对知识库的构建和专家系统学习完善等方面提出了可行方法,在实际应用中收到良好效果。

[1] 王忠勇,张振兴,段琳琳,等.基于故障树的某型舰炮故障诊断系统的设计与实现[J].郑州大学学报(工学版),2010,31(3):46-49.

[2] 訾超.基于故障树的飞机故障诊断专家系统技术研究[D].郑州:郑州大学硕士学位论文,2015.

[3] 严军.基于故障树分析法的航空活塞发动机故障诊断专家系统研究[D].成都:电子科技大学硕士学位论文,2010.

[4] 郭伟伟.基于故障树技术的远程故障诊断专家系统的研究[D].西安:西北工业大学硕士学位论文,2007.

[5] 段壮志,张宗强,张成海.基于故障树分析法的挖掘机故障诊断知识库设计[J].长春工程学院学报(自然科学版),2012,13(1):119-122.

[6] 孙涛,李晓芳,石晨光等.基于本体的舰炮故障树建模方法研究[J].舰船电子工程,2014(8):103-106.

[7] 陈珊琦.故障树和事件树建模与分析的关键算法研究[D].合肥:中国科技大学博士学位论文,2015.

[8] 张朋,冷杉,常青.基于Visio平台的故障树自动建模软件开发[J].工业控制计算机,2015,28(1):89-91.

[9] 赵怡,郭会兵.基于Visio的规则库的设计与实现[J].电脑与信息技术,2009,17(4):42-51.

[10] 刘强,刘向君,马旭勃.利用Visio二次开发实现逻辑图自动分析[J].软件导刊,2009,8(1):13-15.

[11] 王飞漩,魏清新,王坤明.基于Visio二次开发的故障树存储方法研究[J].计算机测量与控制,2013,21(9):2372-2374.

Design and Implementation of Naval Gun Fault Diagnosis Expert System Based on the Visio Fault Tree

WANG Kai1LI Guiyang2YING Wenjian3

(1. Department of Naval Equipment, Xi’an 710043)(2. No. 92721 Troops of PLA, Dinghai 316000) (3. Department of Weapon Engineering, Naval University of Engineering, Wuhan 430033)

This paper presents a fault diagnosis expert system based on Visio fault tree. First the Visio fault tree information structure is introduced. Second, a method using C# to read Visio fault tree is given, including the concrete method of fault tree into rule base. Then the fault diagnosis rule base of self-learning plan is analyzed. Finally, an example application verification is given, and the result is good.

fault diagnosis, expert system, fault tree, Visio

2016年7月3日,

2016年8月23日

王凯,男,工程师,研究方向:舰炮保障。李贵阳,男,助理工程师,研究方向:舰炮保障。应文健,男,硕士研究生,讲师,研究方向:舰炮测试。

E92

10.3969/j.issn.1672-9730.2017.01.026

猜你喜欢
连接点舰炮矩形
大口径舰炮弹药储供系统可靠性研究
一门舰炮杀四方
一门舰炮杀四方
矩形面积的特殊求法
基于文本阅读的习作教学研究
从矩形内一点说起
我国冲突法对连接点的软化处理
创造沉浸学习的“连接点”
基于弹性厚粘胶层的结构性连接点响应建模和预测
巧用矩形一性质,妙解一类题