一种面向对象的实时故障诊断系统的设计陈毓生,赵兴盛,姜海泉(第二炮兵雷达所,北京102488)摘要:文章从分析传统专家系统入手,把WINDOWS下的可视化技术和面向对象技术引入到人工智能程序设计中来。讨论了故障树模型的面向对象表示方法及其推理算法。根据雷达故障诊断中的典型故障树,给出了一个基于VisualBasic语言的故障诊断专家系统设计实例。关键词:VisualBasic;故障诊断;专家系统;面向对象1前言传统的专家系统开发一般有两种方法:一种是采用专用的人工智能设计语言,如逻辑处理语言PROLOG和列表语言LISP,可以方便地编写出人工智能的程序;另一种是人工智能的外壳程序,如着名的专家系统MYCIN所开发的专家系统外壳工具DMYCIN,利用它只需要按其格式填入相应的知识库,就可以开发出具有一定水平的专家系统。但是随着计算机软件技术的日益发展,这两种工具都难以满足专家系统的需要,主要问题有:(1)实时性差,两种工具主要是完成逻辑推理过程,不具备数学处理能力,也不进行数学运算,开发的应用程序的局限性大,无法结合数据采集处理程序形成实时的诊断系统;(2)开放性差,在WINDOWS平台上,无法利用其通用性和开放性。VisualBasic(以下简称VB)语言开发人工智能程序有很大的优势。其作为一种面向对象的语言,不仅界面设计方便,可以把主要精力集中于专家系统的核心程序开发上,在短期内迅速开发出具有专业水平的软件。同时VB具有高级的接口函数,适应性好,虽然其低层控制能力比较差,但是它能通过高级API函数实现各种接口功能,也能连接WINDOWS下的动态连接库(DLL),功能大大扩展。另外,VB可与多种数据库连接,它提供的开放式数据库功能,使专家系统中的知识库、事实库等许多数据库的建立与管理都变得容易。2面向对象的故障树模型2.1故障树模型的面向对象表示故障树分析就是当系统运行在某种不期望状态时,对系统进行分析,利用故障树提供的数据、信息,找到所有可能使不期望状态发生的途径。不期望事件或故障事件是根节点,引起这一事件的原因是子节点。在对树的每一枝节进行分析时,若某个节点无法继续分析(即无子节点),该节点称为目标节点,它是引起故障的基本事件,也是诊断的目标。对每个故障树节点事件用一个对象表示(如图1)其成员数据表中包括该节点的代号、内容、类型、指向父、子节点的指针、路由选择以及所代表故障事件的细节。路由选择为在多个子节点的情况下的路径选择原则。故障事件的细节有该事件的对顶重要性及其它描述等。事件对顶重要性是指该节点事件的发生对父节点事件的发生的重要程度,它反映了该节点事件及其子树各节点事件对父节点事件发生的相对责任。显然,根节点没有对顶重要性,而目标节点的子节点指针代号:A1内容:系统失效类型:一般节点父节点:A0子节点:A2,A3······对顶重要性:0.4代号:A2内容:硬件失效类型:目标节点父节点:A1子节点:——······对顶重要性:0.14项为空指针。2.2故障树模型的诊断算法故障树节点对象具有封装性,可以用框架结构来表示。诊断时,所有节点对象都存放于一个表中,对应事件位置在表中固定,对象指针指向对象所在的位置,这样安排可以使系统尽快根据故障信息找到故障对象,并根据指针遍历故障树。在诊断过程中,从根节点的不期望事件(即故障事件)出发,根据路由选择方案选择子节点,并由对象指针指引遍历故障树,直至找到目标节点,系统停止诊断,得出诊断结果。故障树中每一个节点对象只表示一个故障事件,从而根据事件对象的父节点指针可以找到以该事件为前因的所有事件。同样,一个事件的所有前因事件都可以在该事件对象的子节点表中找到。如果诊断系统未发现任何基本故障事件,而的确有较高层故障事件发生,说明所建故障树尚不完善,需要对其进行补充:找到该较高层故障事件,在其子节点组中加入一基本故障事件。由于故障树用面向对象的表示,所要进行的操作只是加入新节点并改动与之相关的几个指针即可。3建造实例通常,在电子装备的故障诊断过程中,专家往往是依照对电路拓扑结构的分析和信号的实际处理过程,以由前到后或由后到前的顺序来逐级压缩故障。把专家...