现代雷达装备的复杂程度和技术含量不断提高,可维修性、可测试性对装备的作战能力、生存能力、机动性、维修人员、保障费用产生了重要影响。传统的测试主要利用外部测试仪器对被测设备进行测试,这种测试方法费用高、操作复杂,且只能离线检测。为了提高雷达的维护性能,缩短雷达故障诊断时间,在现代雷达系统中,机内测试BIT(Built-in Test)装置发挥着重要作用。常规BIT故障诊断通过编写一个结构化的程序,每次测试中一旦出现故障便可进行诊断测试,以便故障隔离达到所要求的级别。这种基于结构化的程序将描述算法的过程性测试信息和控制性判断信息合二为一地编码在程序中,导致可维护性和适应能力比较差,不能灵活、高效地利用历史经验和专家知识,测试诊断结果缺乏解释,难以对设备排故与改型设计提供充分的依据[1]。特别是对于雷达设备在工程实际中大量出现的多并行过程监测、突发及多态故障诊断需求使得常规BIT故障诊断的技术手段和方法显得很不适应。因此,通过在雷达BIT故障诊断中使用专家系统技术,可极大地增强系统诊断程序的的灵活性和可维护性;对知识库的不断扩充和完善,可以大大提高系统的诊断能力,在一定程度上克服常规BIT故障诊断的不足。
本文以基于CAN总线的雷达BIT故障检测系统硬件结构为基础,设计了一种基于专家系统的雷达装备BIT故障诊断方法,对专家系统的诊断知识表示和推理控制进行了详细描述。该系统在具体设计中,采用Windows操作系统作为用户平台,故障诊断软件开发工具使用C++ Builder 6.0,采用Access 2000关系数据库,应用面向对象技术和可视化技术实现系统故障诊断功能。
1 BIT检测系统硬件组成
某型雷达技术体制先进,新技术含量高,包含了大量的大规模、超大规模集成电路,微波集成组件和各种功能模块,从高频到低频、从数字到模拟,分布在各个组合中,有些组合相距较远,属于典型的分布式结构。根据BIT的设置应尽量不影响雷达主通道工作的设计原则,确定了全机故障检测采用分散检测,集中显示、控制处理两级层次结构。第一级为雷达监控分系统主控台,由工业计算机组成,其定时采集各分系统的自检信息,完成雷达状态显示、雷达操作控制、人机接口、分系统故障信息综合、诊断及雷达遥控接口;第二级为分系统监控模块,由单片微处理器和传感器接口电路组成,在不影响雷达系统正常工作的前提下,不间断地对分系统工作状态进行监视,提取监测点征兆特征,完成对分系统的状态监测和与主控台通信等功能。与一般的通信总线相比,考虑到CAN(Controller Area Network)总线数据通信具有突出的可靠性、实时性和灵活性的特点,二级系统通过CAN总线连接,从而构成一个具有完整协议的计算机网络。BIT故障检测硬件组成框图如图1所示。
每个CAN模块或带CAN总线接口的单元都有一个唯一的ID号,用来识别不同的模块。各分系统状态及控制等报文均通过ID识别,由各CAN模块或分机本身的监控电路完成本分机状态的收集及上报。主控台接收来自各分机的工作状态信息,进行逻辑分析、判断并以友好方式在主控台界面实时显示出来。规定监测点故障用“1”表示,正常用“0”表示,CAN模块只要发现所监控的点发生状态改变,如由“0”变为“1”或由“1”变为“0”,就必须将结果上报到主控台。
2 故障诊断专家系统结构
故障诊断专家系统结构如图2所示,系统由诊断推理模块、动态数据库、解释机构、知识库管理模块和诊断知识库等组成。诊断推理模块根据BIT测点信息实现对各种规则的匹配和综合分析,给出诊断结果和维修对策,并通过解释机构提供推理的解释;动态数据库用来存放雷达分系统传送过来测点检测结果以及推理过程中的一些中间结果信息;知识库管理模块对诊断知识数据库进行管理,实现知识获取、知识更新、知识检验和知识查询功能,通过系统设计的友好交互界面,用户可以方便地诊断知识内容,并进行添加、修改、保存、删除等操作;诊断知识库用来存储系统的故障诊断知识。
3 诊断知识表示
3.1 诊断树模型
根据雷达BIT拓扑结构,系统采用层次诊断模型进行故障隔离诊断。模型主要按功能分为三个层次:系统级、分系统级、模块级。故障诊断隔离过程为:整机→分系统→模块,系统级诊断从整机隔离故障到分系统,以功能划分的分系统作为诊断目标,隔离故障到其中的某一个分系统;分系统级诊断从分系统隔离故障到模块(最小可更换单元)。
层次诊断模型采用基本结构如图3所示的诊断树[2]表示。诊断树将要进行诊断的系统按组成结构进行逐层分解,形成一棵倒置的树,诊断树节点对象由整机系统、分系统、模块或可更换单元组成,雷达整机构成了故障树的根节点,分系统构成故障树的中间节点,可更换单元模块构成树上的叶节点。连接两个节点对象的分支表示这两个节点的父子关系,在推理规则的作用下,故障从整机隔离到各分系统可更换单元模块。
3.2 诊断树的数据库表示
诊断树上每个节点都可以用一个统一的框架结构封装为类对象表示,存放在一个节点数据表中,节点数据表的结构如表1所示,数据表每行的字段按照ID、NAME、PARENT、TYPE、TESTPOINT、CODE和CONCLUSION等顺序排列。