飞机电源系统故障诊断专家系统研究
2014-08-29庄绪岩徐亚军包勇
庄绪岩+徐亚军+包勇
摘 要: 针对飞机电源系统故障诊断的现状,为提高故障诊断的效率提出利用专家系统开发工具CLIPS建立飞机电源系统故障诊断专家系统。以西锐SR20飞机的电源系统为诊断对象,采用CLIPS为开发工具建立知识库、推理机。利用Eclipse开发环境编写专家系统人机界面程序,通过嵌入CLIPS JNI插件实现Java程序对CLIPS程序的调用,最终实现包括知识库、推理机、人机界面等模块在内的专家系统整体性能。最后阐述了专家系统在故障诊断领域的广阔应用前景。
关键词: 故障诊断; 专家系统; 人工智能; 人机界面
中图分类号: TN99?34; TP182 文献标识码: A 文章编号: 1004?373X(2014)15?0117?04
Study on fault diagnosis expert system for aircraft power?supply system
ZHUANG Xu?yan, XU Ya?jun, BAO Yong
(Civil Aviation Flight University of China, Guanghan 618307, China)
Abstract: In view of the present situation of fault diagnosis for the aircraft power?supply system, the fault diagnosis expert system for aircraft power?supply system, which is built up with expert system development tool CLIPS, is put forward to improve the efficiency of fault diagnosis for the aircraft power?supply system. The power?supply system of Cirrus SR20 is chosen as diagnosis object. CLIPS is adopted as a development tool to build up knowledge base and inference engine. The man?machine interface programs are compiled by means of Eclips. The embedded CLIPS JNI is used for Java program to call CLIPS program. The total performances of the expert system, including knowledge base, inference engine and man?machine interface are completed ultimately. The broad application prospect of the fault diagnosis expert system is elaborated at the end of the paper.
Keywords: fault diagnosis; expert system; AI; man?machine interface
0 引 言
飞机电源系统作为整个飞机的“血液系统”在飞机的整个运作过程中起到非常重要的作用,如果电源系统出现故障将影响到其他系统的正常工作,从而导致整个飞机系统的瘫痪。随着机载用电设备增多, 飞机电源系统的地位愈显的重要,电源系统中的任何故障如果不能及时检出并得到纠正, 故障就可能进一步扩大, 致使上层系统的状态发生变化, 影响飞行任务执行, 甚至危及飞行安全[1]。建立一整套完备的飞机电源系统故障诊断系统对于飞机的排故以及飞机的安全飞行是非常必要的。
专家系统(ES)作为人工智能最重要和最广泛的一个应用研究领域,它能够以人类专家的水平完成特别困难的某一专业领域的任务。在过去30多年中专家系统取得了很大进展,其基础理论研究不断深入,并有所创新[2]。在故障诊断领域,专家系统作为一种故障诊断方法已被广泛使用,它是一个具有丰富的专门领域知识的计算机程序,它应用人工智能技术, 根据专家提供的知识及其推理能力, 模仿人类专家决策的思维过程, 解决原本需要由专家才能解决的复杂问题[2?3]。本文参考了大量文献,著作,在前人研究的基础上继续深入研究,研究的主要思路是采用CLIPS专家系统开发环境,建立专家系统底层文件,通过Eclipse开发平台、Java编程语言编写专家系统的人机界面程序,通过界面的控件调用执行CLIPS程序,从而实现专家系统故障诊断的功能。
1 专家系统
1.1 概 述
专家系统是用来对人类专家的问题求解能力建模的一种计算机程序,可以根据系统的应用环境和所执行任务的不同选择合理的专家结构系统,直接关系到专家系统的适用性和效率[4]。
专家系统作为人工智能一个重要的分支是在20世纪60 年代初期产生并发展起来的一门新兴的应用科学, 而且正随着计算机技术的不断发展而日臻完善和成熟[5]。
专家系统主要由人机界面、知识库、解释机、推理机、工作内存等组成,其中人机界面是用户与专家系统之间的通信机制;知识库是专家系统包含领域知识的部分;工作内存是专家系统包含执行任务时发现的问题事实的部分;推理机是专家知识的处理器,它将工作内存中的事实与知识库中的领域知识相匹配,以得出问题的结论。一个简化专家系统的结构及工作流程如图1所示。
图1 专家系统结构图
根据求解问题的性质不同专家可分为解释专家系统、诊断专家系统、设计专家系统、控制专家系统等。据调查显示每4个以建造的专家系统中就有一个是作用于诊断活动[6]。本文所设计的专家系统就是以飞机故障诊断为目的的,故障诊断专家系统具有下列特点:
(1) 能够了解被诊断对象各组成部分的特性以及联系;
(2) 能够区分一种现象及其所掩盖的另一种现象;
(3) 能够向用户提出测量数据,并从不确切信息中得出尽可能正确的诊断。
1.2 开发流程
专家系统的开发过程不同于传统的程序开发设计,因为其问题通常没有算法去求解,而是通过推理来获取一个合理的解决方法,其开发的一般步骤如下。首先,知识工程师通过与专家进行对话而获取专家知识,然后知识工程师将知识编码到知识库中,随后专家评估系统并返回意见给知识工程师。专家系统的开发流程如图2所示。
图2 专家系统开发流程
2 专家系统设计
2.1 CLIPS开发工具
飞机电源故障诊断专家系统是由CLIPS专家系统开发工具开发。CLIPS(C Language Integrated Production System)是一种多范例编程语言,它支持基于规则的、面向对象的和面向过程的编程。在语法方面,CLIPS规则与Eclipse、CLIPS/R2和Jess语言的规则极为相似。由于CLIPS具有可移植性,所以,它可以安装在多种类型的计算机上,从PC机到CRAY超级计算机都有。同样,由于CLIPS是由C语言开发而来,从而用CLIPS开发的程序也具有很强的移植能力,可以将CLIPS编写的专家系统运行在PC机上,也可以运行在移动设备上。
2.2 创建CLIPS专家诊断系统
2.2.1 诊断对象
本文所选择的故障诊断对象是西锐SR20飞机电源系统,该机型电源系统原理如图3所示。
图3 电源系统原理图
该电源系统主要故障是发电机故障,蓄电池故障,外部电源故障,以及电路保护系统故障等。
2.2.2 专家系统的建立
基于规则的专家系统里的知识被定义为由事实激发而产生新的事实或结论的规则,其中知识表示(Knowledge representation,KR)在专家系统中具有非常重要的作用[6]。首先,专家系统是专为某一类基于逻辑(Rule of Logic)即推理的知识表示设计,通常是根据推理理解从事实中得出结论,由于人们并不擅长推理,从而可以借助专家系统中的知识库以及推理功能轻松的得出有效的结论或者方法。 其次,知识的表示影响到专家系统的开发、效率、速度和维护。
(1) 建立知识模板
在建立模板以及建立知识库时都是按照对象?属性?值(Object?Attribute?Value triple,OAV)三元组思想建立的。1#发电机OAV表见表1。
根据表1可以建立一个发电机ALT1的知识模板(框架),具体CLIPS程序代码举例如下:
(deftemplate part
(slot name)
(slot output
(allowed?values normal low high)(default normal))
(slot switch (allowed?values on off)(default on))
(slot circuit?breaker
(allowed?values activated nonactivated)(default nonactivated))
(slot previous?part)
(slot question)
(slot engagement
(allowed?values engaged disengaged)
(default disengaged)))
表1 发电机OAV表
[对象\&属性\&值\&默认值\&
Part\&Name\&ALT1\&\&Output\&high\&
normal\&normal\&low\&Switch\&on\&on\&0ff\&Circuit?breaker\&activated\&nonactivated\&nonactivated\&Previous?part\&VOLT REG\&\&Question\&Is it work normal ?\&\&engagement\&engaged\&disengaged\&disengaged\&]
(2) 建立知识库
根据前一步建立的模版创建知识库,具体CLIPS代码举例如下:
(deffacts Part?information
(part (name ALT1)
(previous?part A/C?BUS?1)
(question " Does ALT1 work normal ?"))
(part (name ALT?2)
(previous?part ESSENTIAL?BUS?2)
(question " Does ALT1 work normal ?"))
………)
(3) 推理机
完成前两步的工作后便可以着手创建推理机来实现具体的推理功能。本文专家系统的推理机是由一系列规则(rules)及函数(functions)组成,规则的一般结构是这样的,模式条件=>动作。其中等号和箭头左边的是条件部分,条件可以是一个或多个组成,当左边条件满足时就会执行箭头后面的动作部分。其内部匹配算法采用Rete算法,如图4所示。
在Rete网络中主要有Root节点、Alpha节点和Beta节点三种类型节点,其中Alpha节点包含一个输入和一个存储区,Beta节点包含两个输入和两个存储区,Beta存储区和Alpha存储区。
图4 Rete网络图
Rete算法具体执行过程如下所示:
(1) 导入需要处理的事实到Facts集合中。
(2) 如果Facts不为空,选择一个Fact进行处理。否则停止匹配过程。
(3) 选择Alpha网的第一个节点运行,通过该节点进入Alpha网的下一个节点,直到进入Alpha memory。否则跳转到下一条判断路径。
(4) 将Alpha memory的结果加入到Beta memory中,如果不为Terminal节点,则检测另一个输入集合中是否存在满足条件的事实,满足则执行join,进入到下一个Beta memory重复执行(3)。若另一个输入集合无满足条件的事实,返回到(2)。完成所有条件匹配意味着规则(rules)的LHS(Left?Hand?Side)匹配完成,如果最终节点的存储区含有的元素不为空,将规则(rules)加入议程(Agenda)中等待执行[7?8]。
本文推理机CLIPS代码举例如下:
(defrule start
=>
(printout t "Please enter your fault part name."crlf)
(bind ?name(read))
(reset)
(assert(current?part ?name)))
(defrule ask?decision?part?question
?part