目前我国汽车持有量正在快速增加,进口车也越来越多,且车型复杂、种类繁多,因而使许多维修单位由于缺乏有关维修专家的技术指导而不能维修或难以满足维修的需要。为了提高车辆的利用率减少经济损失,开发汽车故障诊断专家系统,利用计算机这种先进的设备进行故障诊断是形势发展的需要和必然趋势。
汽车故障诊断专家系统是一种能模拟维修专家的诊断思路进行故障诊断的计算机智能软件程序。开发这样一个系统,首先需要将汽车维修领域专家的大量实际维修经验进行汇总和提炼,编成知识库,构成专家系统的核心部分;其次需要建立推理机,推理机可根据用户提供的故障迹象或异常现象,利用知识库中的知识,按一定推理策略进行推理,进而得出诊断结果。该专家系统的结构如图1所示。
1 总体设计
建造一个实用的汽车故障诊断专家系统,不仅要有友好的人机界面,高效的推理策略,方便的知识获取手段,还应有完善的数据库和图像库,以及强大的帮助系统,其总体结构方框图如图2所示。其中,故障诊断模块根据确定性故障与非确定性故障的不同类型而采用了不同的诊断方法,对于确定性故障主要采用了诊断树的方法来描述诊断流程,从故障现象出发,列出所有可能产生此类现象的故障部位,再根据现象用最方便的判断方法逐一排除,最终确定准确的故障部位;而对于非确定性故障,如发动机异响故障因故障现象与原因之间逻辑关系不明显或不明确的情况,采用了模糊诊断方法,通过模糊统计来模拟维修专家在判别异响部位时的推理方式,从而找出故障原因,以便由此入手,进行维修,而无须靠人工来做出诊断,大大节省了时间,提高了车辆维修的效率。数据库提供大量的有关汽车的各种数据,包括汽车的一般数据、使用数据、发动机和底盘的维修调整数据等,以便于维修工人工作时即时查询,而无须费时去查阅书本资料。图像库则给用户提供大量的精美汽车图像,并附有各种车型的简介。
2 各功能模块的设计
2.1 故障诊断模块的设计
该模块以人机对话的方式搜索用户所掌握的故障线索,模仿维修专家的诊断思路进行推理,进而一步步找出故障部件及原因,其诊断流程框图如图3所示。根据汽车的具体情况将诊断模块分为三个部分,其详细结构框图见图4。
以发动机系统为例,在建立柴油发动机的诊断子模块时,针对其故障特点,采用了较形象的树状图示诊断方案。当进行诊断时,系统根据用户对询问的回答确定下一步显示的树枝,直到诊断进行到树叶(找出故障原因)为止。此时,确定按钮由失效变为可用(未诊断完则为失效状态),按下去后可弹出预览及打印屏幕,其人机界面见图5。
2.1.1 诊断软件设计中的难点分析
实现此故障树诊断法,首先在表单上画好所有的树状图,初始化时,先设定全屏所有对象的可见性VISIBLE=.F.,然后根据每个按钮、询问文件之间的逻辑关系,编写按下此按钮时要执行的动作(CLICK属性)。例如:某一个按钮按下时,执行程序:
thisform.line25.visible=.t.
thisform label11.visible=.t.
2.1.1.1 错选反悔功能的设计
有时,当用户按下一个按钮后,在已显示出了相应的诊断内容后,发现选错了,反悔并回过来按下其上一级或上几级的某个按钮。系统必须允许这种错误的发生,并实现他的要求,即在每个按钮的CLICK属性内加入一些语句,使除了应该显示的内容VISIBLE(可见)外,其余对象的属性均变回VISIBLE=.F.(不可见),这就需要逐条的控制每一对象。例如:已按下右边的按钮,并弹出下一级的内容后,用户反悔,又按下左边的另一个按钮,则系统将右边弹出的内容重新设置为VISIBLE=.F.,隐藏起来,并弹出左边的内容(见图6)。
当用户的诊断完成后,允许实现浏览及打印功能。首先,要判断用户是否已完成诊断,即判断是否有某一条支路的最后结果已显示。若没有则不允许进行浏览。然后,以每步所对应的内容作为一条记录,将此条支路的诊断过程中的全部记录添加到USER.故障字段中,即可实现浏览等功能。编写完每一条支路的添加内容后,既完成了一个表单的设计。
2.1.1.2 诊断记录过程的设计
这部分的难点在于:添加诊断过程记录的设计。最初曾设计为在每个选择按钮中加入一条语句,将该部分的诊断过程以记录的形式添加到表中,但后来考虑到用户可能会反悔,如何辨别已添加的错误记录并删除它,一直是一个很大的问题。经过反复的研究与试验,最后决定采用现有的方法,即不理会用户的诊断步骤,只以其最后确定的那条诊断支路为准。先根据最后结果判断是哪一条支路,然后在确定按钮中将该条支路中的内容进行添加。
2.2 数据库模块的设计
汽车数据库模块主要包含5个部分:数据库、工作界面、信息检索、打印输出口、系统引导信息处理。数据库部分是整个系统的数据源,是系统最重要的组成部分之一。根据汽车数据极其庞大而复杂的特点。整个系统的构造采用了“树状分支,模块关联,分部构造”的数据库方式,其结构见图7。
与数据库模块相应的,工作界面也采用了交互式的关联调用方式。各工作界面对应相应的数据库,又相互可调用。由于采用了结构化编程,各工作界面以子函数方式出现,既增加了系统的灵活性,也使整个系统更为层次分明。整个工作界面网络如图8所示,整个系统的工作环境是一个相互连接的网状结构,在这个工作界面网络中,用户可以简单的在各个部分数据中跳转,而无须自己关心所在的数据库层次,同时,各数据界面均与检索界面、打印界面紧密连接,数据获取更方便快捷。
数据检索模块是整个系统的一个中心环节。因为,衡量一个数据库系统是否成功,很大程度上决定于其检索功能的快速性、完善性。根据汽车数据记录条目量大、数据字段数多、字段占用字节量大的特点,汽车数据库系统采用了视图检索的新方式。通过工作界面获取检索条件,以参数形式传递给视图,利用视图进行检索,再由视图生成检索结果的临时数据表。将临时数据表映射到检索界面中,实现检索结果的显示。这种方式使用了结构化查询(SQL)方式的视图检索,检索条件的传输与判别较为简易,在使用RUSH MORE技术时,能表现出令人满意的查询速度。同时,采用生成临时表方式,能大大减少对CPU及内存的占用,加快系统性能。在实际检验中,系统在8个数据库(50000多个数据)中检索298条符合复杂条件关系的记录,仅耗时0.27秒,查询结果令人满意。并且,在系统中还利用了视图的临时表可发送更新性质,增加了检索结果编辑功能。用户可先利用检索界面检索到所需的数据记录,并利用该功能对数据进行修改,发送到原数据表中,更好的实现数据管理。