樊茜 何雨昂 刘海山 宋茜 焦震
摘要
针对航天型号伺服系统中的伺服飞控软件测试项多,故障诊断测试时间较长的问题,提出一种基于动态故障树的伺服飞控软件故障诊断方法。动态故障树完整展示了导致被测软件失效的逻辑错误,自上而下的分析软件故障模式,选择最少的测试点进行故障定位,在保证较高故障诊断率的前提下,降低测试时间,提高故障诊断效率和软件质量。
【关键词】动态故障树 故障诊断 伺服飞控软件
1 引言
在航天型号产品不断增多的大背景下,航天嵌入式系统由过去的软硬件协同完成基本功能,向“硬件软件化”的趋势发展,许多重要的功能由软件实现。在导弹与火箭的伺服系统中,伺服飞控软件的主要功能为接收控制系统的姿态指令,采集伺服机构各传感器信号,通过高速运算精确控制喷管或空气舵的摆角,软件产品质量直接影响甚至决定整个伺服系统的质量。
伺服飞控软件具有多指令、多总线、强实时等特点,导致其测试项多,测试不方便且测试时间较长等难题。为保证飞控软件的研制进度,进行故障诊断时需高效快速。如果故障定位不准确,将潜在故障遗漏在产品中,则会严重影响软件质量。为了解决以上问题,本文将动态故障树模型引入到软件故障诊断的过程中,利用故障树对软件故障进行分析。在保证较高故障检查率的前提下,获得最小测试集,缩短了故障诊断时间。
2 伺服飞控软件的结构组成
伺服飞控软件一般由总线指令解析模块、本地时钟管理模块、初始化模块、软件复位模块、总线接口和模拟采集接口等组成。其中,总线指令解析功能主要完成总线与控制系统通信,接收姿态指令和返回遥测数据等功能。本地时钟管理实现闭环运算,精确控制伺服机构的摆角,如图1所示。
从以上分析看出,伺服飞控软件具有多测试项、测试时间长等问题,传统的测试方法所需的故障诊断时间远远超出了项目研制进度允许的最大时间,需研究快速高效的故障诊断方法。
3 基于动态故障树的伺服飞控软件故障诊断方法
3.1 故障树的知识表示与推理方法
3.1.1 静态故障树
软件故障树分析是指通过系统的演绎推算,检查出可能导致系统失效的基础原因,计算引发故障的所有组合模式,统计各底事件对整个系统的顶事件发生的影响程度,以及预测故障发生的概率等。
如果故障树的某些底事件同时发生时,会触发故障树的顶事件,则称这些底事件所组成的集合为这棵故障树的割集。对于故障树的任意一个割集,假如去掉其中任意的一个底事件不再触发顶事件,则这个割集称为这棵故障树的最小割集。下面简要介绍静态故障树最小割集计算方法,为论文动态故障树模型的引出和分析提供铺垫。
3.1.2 动态故障树
静态故障树的逻辑门均为静态逻辑门,当系统的元素之间存在顺序相关性,或者具有冷热备件的情况,单纯的静态逻辑门已经不能满足分析的需求,因此引入了动态逻辑门的概念,可以表征系统的一些动态特性,比如时序关系、依赖关系。具有一个或一个以上动态逻辑门的故障树称为动态故障树。
常用的动态逻辑门有优先与门,顺序门,冷备件门,热备件门,功能相关门等。搭建伺服飞控软件的动态故障树主要用到优先与门、顺序门。这表明伺服飞控软件时序要求高,时序逻辑复杂。
(1)优先与门。优先与门指定了与门中的基本事件的发生顺序,是在与门的基础上扩展的动态逻辑门。假设如图3,优先与门具有两个基本事件A和B,并定义了它们之间的发生顺序为先A后B。则只有当先发生A且后发生B时系统才会故障,先发生B且后发生时A不会导致系统故障。同时A事件和B事件两个中只发生一个或者都不发生,不会导致顶事件发生。
(2)顺序门。“顺序门”与优先与门类似,都表示基本事件的时序性,顺序们可以由几个优先与门组合而成,如图4。顺序门指定基本事件按照一定的顺序发生,即从左到右的顺序,只有当左边的事件都先于右边的事件发生,而且所有事件都发生時,其顶事件才会发生。在这个过程中,即使有一个事件不按照顺序发生,事件就永远进入不了顶事件。
3.2 故障诊断方法设计
基于动态故障树的故障诊断方法,按照系统故障分析、动态故障树生成、最小测试集求解的步骤对软件进行分解与分析。软件故障诊断方法流程图如图5所示,顶事件的选取是分析的基础,是系统中关键功能可能出现的故障,是中间事件及底事件故障树形成的主要元素。故障树的形成过程就是列举故障原因,分清故障间关系。最终系统分析与最小测试集求解是整个流程的目的。
软件故障树把被分析软件当作一个整体,可以很好的展示导致系统失效的逻辑错误,采用自上而下流程分析软件系统故障模式。软件故障树结构类似一个倒立的树,树的输入输出是故障结果与故障原因的逻辑因果关系。通过故障树的演绎推算,检查出可能导致系统失效的基础原因,进而找到系统的脆弱环节,指导系统设计改进。在开发早期,使用软件故障树方法确定需要重点设计的环节。在软件研制阶段后期,通过故障树最小割集求解,完成快速故障诊断及定位工作。
基于以上原则,本文选取了伺服飞控软件的总线指令解析模块进行仿真试验,以验证本文方法的有效性。
4 仿真实验
仿真实验选取某型号伺服飞控软件的总线指令解析模块,利用故障注入的方法进行仿真,并记录传统的专家代码审查故障诊断时间和基于动态故障树的故障诊断时间,对比两种方法的优势和劣势。
某型号伺服飞控软件的总线指令解析模块组成如图6。
从图6可以看出,该软件的总线指令解析模块由总线初始化、指令响应等单元组成。该模块的功能点多,测试点多,且该系统为伺服飞控软件核心功能,直接影响整个系统的功能完备性。对软件进行故障注入,对比两种诊断方式的诊断结果。如表1所示。
由于传统专家代码审查需对总线指令解析模块的全部17个函数,即17个测试点进行查阅,传统方法的故障诊断率依赖专家经验,所以使用传统方法故障诊断时间长,诊断率有可能出现偏差。而本文方法通过构造总线指令解析模块的故障树,分析出完整的故障情况,再求得该树最小割集,得到最小测试集为9个。本文方法所需测试点的数目减少了大约50%,在缩短了故障诊断时间的同时,保证了高故障诊断率,实验结果表明本文方法有效可行。
参考文献
[1]沈作军.载人航天故障统计分析及其安全要求系统研究[J].中国航天,1997(11):21-24.
[2]龙兵,宋立辉,荆武兴,姜兴渭,李志.航天器故障诊断技术回顾与展望[J].北京:导弹与航天运载技术,2003.
[3]刘小明.基于故障树和神经网络的运载火箭故障诊断关键技术研究[J].电子科技大学硕士学位论文,2010.