赵 岩,李 佳,解世禄,王德义,陈 娟
(1.国营长虹机械厂,广西 桂林 541002;2.西门子数字工业软件有限公司,北京 100102;3.北京机电工程研究所,北京 100074;4.北京航天自动控制研究所,宇航智能控制技术重点实验室,北京 100070;5.北京航空航天大学 机械工程及自动化学院,北京 100191)
运载火箭是一种依靠火箭发动机产生反作用力的高速飞行器。运载火箭由若干可分离的部分组成,称为级。每个阶段都是由箭体、动力系统以及控制系统组。箭体部分作为运载火箭的主体,承载了箭上各个系统所有重要的仪器和设备。
运载火箭发射前必须进行地面测试,以提高火箭发射成功率。目前运载火箭通常都采用了故障诊断系统,故障诊断系统必须在发射前准确定位故障,以快速将其排除[1-2]。故障树分析是故障诊断系统的基础,也是现有故障诊断技术最有效、最基本的手段。朱大奇、王东、金星、周琦钧、安晨亮等人[3-7]在故障树分析基础上,提出了基于故障树的智能型故障诊断方法较好地反映了故障诊断过程中各个底事件和中间事件对系统故障的影响。传统故障树分析主要是分析系统故障产生的原因而不考虑诊断效率,文献[8-10]为减少故障诊断时间,给出故障树最小割集的定量分析方法,计算故障树各最小割集的发生概率及最小割集重要度,以此为依据,从大到小排序,确定故障诊断的最优程序采。从而使故障诊断的一次命中率得以提高。
针对故障范围较大的情况,文献[11]提出了故障树与故障字典法结合的故障诊断方法,能够区分故障是全局故障还是局部故障,缩小故障范围,使诊断简单和易于实现,从而有效地确定可能的故障检测点。利用故障树分析方法,文献[12-15]解决了传统专家系统知识获取的“瓶颈”问题,以故障树的形式全面、系统地表述专家知识。文献[16-18]将故障树与专家系统相结合,提出了一种基于故障树和专家系统的故障诊断方法,通过故障树自动生成专家系统诊断规则库,实现诊断知识的自动获取。文献[19]在基于故障树和专家系统的故障诊断方法的基础上,融合模糊神经网络相,运用模糊神经网络的在线自学能力,保证知识库的完整性和正确性。
由于常规地面测试无法产生足够的故障数据,为了高效地获得更多故障数据需要进行故障注入。故障注入指按照选定的故障模型,用人工的方法产生故障并施加于特定的被测系统中,以加速该系统的错误和失效的发生,同时记录和分析系统对所注入的故障的反应信息和输出信号[20]。文献[21-22]为了解决液压作动筒的故障诊断问题,提出一种基于AMESim软件仿真的故障注入方法,采用的小波包分解及能量谱的特征提取方法,有效地获取了系统信息,并与支持向量机方法相结合设计了故障诊断系统。由于软件实现的故障注入方法具有灵活性好,开发成本低,注入过程易于控制等优点。
文献[23-24]采用基于软件故障注入的方法构建了故障注入系统。故障注入也可用来验证故障诊断系统,文献[20]采用故障注入方法实现了对系统硬件和软件性能的检测,在与实际使用之前即验证了故障诊断系统的可靠性和稳定性。传统的运载火箭控制系统数据杂乱而分散,对系统进行故障诊断比较困难。文献[25]针对传统的故障模拟系统在航天器测试中设备通用性差等不足,提出一种利用MIL-STD-1553B总线以下简称1553B)为故障注入介质的故障注入系统,把加入的故障注入系统作为一个单独的节点,提高了设备的通用性及航天器测试效率。
本论文在前人研究的基础上,采用基于1553B总线的软件故障注入方法,即在系统中用故障注入节点来完全模拟指定子系统的运行及特定故障的发生,以获取这些故障传递的过程即失效链,可以为反馈迭代设计提供数据支持。通过1553B总线集中获取运载火箭各个子系统的运行状态数据,通过基于故障树的故障诊断算法确定故障链路,定位故障,完成故障诊断。
运载火箭控制系统是由一系列能够完成特定功能的单机子系统所组成的综合性功能系统,一般固体运载火箭总线设备主要包括主控制组合、安全控制组合、Ⅱ级控制组合、激光捷联惯测组合、光纤速率陀螺组合、多星分离控制装置、组合导航模块、以及Ⅰ、Ⅱ、Ⅲ级伺服子系统。
运载火箭原理如图1所示。其中速率陀螺、激光捷联惯测组合测量火箭飞行时的加速度、角速度等信息,通过1553B总线发送至箭载计算机。箭载计算机中导航计算模块计算得到运载火箭运行过程中的位置、速度、姿态等参数。导引计算模块和关机计算模块根据这些信息分别计算处导引信号和关机指令,姿控系统根据接收到的导引信号、姿态偏差等信息,通过1553B发送控制指令给伺服作动系统控制作动器的运动;而关机指令则通过时序控制系统控制发动机的点火或关机,保证火箭按照预定的姿态运行在预定的轨迹上。时序控制系统在运载火箭飞行过程中按要求的时间序列控制发动机点火关机、整流罩分离、级间分离和星箭分离等多项关键动作。
图1 运载火箭原理
基于1.1节对于运载火箭控制系统的组成和图1的工作原理,本文采用MADe软件平台建立了全系统的顶层可靠性模型,如图2所示,该模型考虑了控制系统的所有组成部分:1553B总线,惯性测量装置,制导系统,姿控系统(含伺服系统),时序控制系统,电源系统,以及发动机系统(伺服系统的控制对象)。
图2 运载火箭控制系统可靠性模型
本论文重点以伺服系统为研究对象,基于该模型生成系统的故障树,通过虚拟故障注入,分析系统的故障链路,为后续的故障诊断方法提供支撑。
伺服系统是姿控系统的主要组成部分,如图3所示是伺服系统的详细模型,包括气源装置,气动调压阀,油箱,液压管路,二次电源,电机,液压泵,过滤器,安全阀,旁通阀,伺服阀,蓄能器,旁通阀,作动筒,放大器等元部件。
图3 伺服系统的可靠性模型
分析控制系统各部件的故障机理和故障模式是进行故障诊断的前提。本项目通过MADe.完成了所有组件和子系统的失效分析。此处不再赘述细节。
为了满足故障诊断和定位的需求,需要完成显控计算机、速率陀螺、激光惯组、二次电源、时序通路、伺服机构以及配电系统部分的实时故障诊断。
通过建立运载火箭控制系统各子系统的故障树模型,描述出所有引起运载火箭控制系统故障的中间事件,然后对各级中间事件进行分析,归纳出引起中间事件现象发生的所有底事件,就可以建立运载火箭系统的故障树。控制系统故障树如图4所示。其中顶事件A为“运载火箭控制系统故障”,中间事件划分为七组单机系统子故障树,其中:
图4 运载火箭控制系统故障树模型
B1为箭载计算机故障;
B2为时序电路故障;
B3为二次电源故障;
B4为速率陀螺故障;
B5为伺服机构故障;
B6为激光捷联惯测组合故障;
B7为配电器故障。
更深层次的故障树限于篇幅关系,在此不做展开。
故障树模型建立之后,通过1553B总线数据获取各个底事件所对应的节点设备的测试参数,经过与系统阈值的对比,找到引起控制系统故障的节点设备并分析失效链路,直至找到所有引起故障的最底层原因,算法过程如图5所示。
图5 失效链分析方法
找到所有引起故障的最底层原因后便可推导出失效链,失效链可能存在多条,分别对应不同的故障原因。
根据虚拟仿真平台,把得到的所有系统和元部件的故障树作为故障诊断的数据库,这样系统中任何一个单元发生故障,都可以基于数据库判断出来。
运载火箭控制系统是由一系列复杂的子系统和元件组成,功能十分强大,控制系统内部有着众多的传感器元件,在地面测试的过程中,通过1553B总线可以获取到当前控制系统各单机子系统的工作参数,这就为运载火箭控制系统的故障诊断提供了数据支持。
运载火箭控制系统中主要的信号都通过1553B总线进行传输。典型的1553B总线系统采用双总线冗余设计,变压器耦合方式,其拓扑结构如图3所示。
1553B总线终端分为总线控制器(BC)、远程终端(RT)和总线监视器(BM),主控组合作为1553B总线的BC,其余子系统如安全控制组合、Ⅱ级控制组合、激光捷联惯测组合以及各级伺服子系统系统等作为RT。
在1553B总线中,BC是指在数据总线上启动或开始信息传输任务的唯一终端,主控组合作为BC可控制其余子系统的数据传输;RT是运载火箭各个子系统到数据总线上的接口,它在BC控制下传输数据并对BC来的命令做出响应,每个RT都被预设了唯一的字地址。系统运行时主控组合控制各个子系统进行自检和时间同步,在地面测试时,主控组合会将自检结果、子系统时间同步结果、时序通路测试结果发送给地面测试系统。
安全控制组合、Ⅱ级控制组合也发送相应的时序测试结果,并向主控组合发送二次电源测试数据。激光惯组和光纤速率陀螺将测量结果和电压、温度等信号传输给主控组合。Ⅰ、Ⅱ、Ⅲ级伺服子系统将伺服系统内的数据发送至主控组合。消息流如图6所示。
图6 运载火箭控制系统总线结构
故障诊断系统需要对运载火箭控制系统进行实时的故障诊断,首先需要完成计算机、速率陀螺、激光捷联惯测组合、电源、时序通路以及伺服机构1553B通信数据的采集、分析。本方案将故障诊断系统作为BM,接入原有系统中,BM是接收总线上传输的信息和提取经选择的信息的终端,它不参与总线的事务处理。通过BM可对总线上数据源进行记录和分析,系统结构如图7所示。
图7 故障诊断系统结构
1553B 总线定义了严格的消息格式,故障诊断系统主要监听BC到RT、RT到BC、RT到RT消息,每种消息类型都对应有不同的命令字、数据字、状态字组合方式和发送顺序,BM可以监听到以上消息的数据字、命令字和状态字。
由于总线上会传输各种消息,如:BC-RT、RT-RT、RT-BC,同时由于RT终端以及子地址的不同,所以1553B总线上会传输着各类复杂的通信消息,为了能够进行区分,根据BusTools_MemoryRead采集到的命令字设置隔离条件,获取到所读取信息的远程终端RT、子地址、数据字个数,实现对1553B总线不同子系统所传输的不同消息的筛选。调用的API和代码如下:
dev_num=BusTools_FindDevice(MY_CARD_TYPE,MY_INSTANCE);
status=BusTools_API_OpenChannel(&ch_id,PI_B_MODE |API_SW_INTERRUPT,dev_num,MY_CHANNEL);
start_ptr =last_ptr =current_ptr =0;
status =BusTools_BM_Init(ch_id,1,1);
status =BusTools_SetInternalBus(ch_id,0);
status=BusTools_BM_MessageAlloc(ch_id,NUM_BM_BUFFERS,&num_bm_buffers_actual, BT1553_INT_END_OF_MESS);
status =BusTools_MemoryRead(ch_id,BM_MSGSTART_PTR,2,&start_ptr);
last_ptr =current_ptr =start_ptr;
status =BusTools_BM_StartStop(ch_id,1);
while (继续进行诊断)
{
status =BusTools_MemoryRead(ch_id,(((last_ptr <<3)+ 8)* 2),2,&command_word);
……//根据command_word判断消息类型
status =BusTools_MemoryRead(ch_id,(((last_ptr <<3)+ 10)* 2),2,&data_word1);
……//读取data_word1中的数据,诊断火箭子系统是否正常
}
status =BusTools_API_Close(ch_id);
获取到各个设备测试数据后,采用失效链分析方法诊断和定位故障,通过用户界面实时显示出来。
由于运载火箭控制系统的复杂性,通常情况下,很难获得系统的故障数据,实际分析到的失效很难在实际装置中全部复现。因此需要对系统注入一些故障来模拟。本文采用了两种故障注入的方式,第一种方法是通过建立的虚拟模型来进行虚拟故障注入,获取故障的影响程度和故障链路,得到的信息可以辅助进行故障诊断。第二个方法是针对实际的运载火箭系统,通过数据总线系统里用故障注入计算机作为远程终端来替换原来的远程终端,用软件注入的方法来进行故障模拟。
针对运载火箭控制系统平台,进行故障注入的试验时,会把要进行注入故障的某个特定子系统,有一个新的远程终端(RT)来取代,这个新的RT就是作为一个故障注入远程节点,也是一个计算机,在其上用软件注入的方式来模拟故障。故障注入的示意图如图8所示。
图8 故障注入系统结构
系统运行时,故障注入模块首先需要模拟这个子系统的功能并向总线发送正常信号。根据系统要求,子系统进行自检和时间同步是通过模式命令和带数据字的模式命令发送的,其消息格式如图9,另外故障注入系统还必须响应RT-BC、RT-RT消息。
图9 1553B 总线定义的部分消息格式
首先调用BusTools_BM_Init、BusTools_SetInternalBus、BusTools_RT_Init等函数,将板卡初始化为RT。
初始化工作完成之后,调用BusTools_RT_MessageWrite写入故障数据和不需要进行故障注入部分的正常数据,调用BusTools_RT_StartStop函数,开启RT功能,响应总线消息。同时调用预设的中断函数RT_Event_Handlere处理方式命令,接收带数据字的方式命令中的数据字,再通过BusTools_RT_MessageWrite将返回值写入总线。最后调用BusTools_API_Close等函数断开连接。调用的API和代码如下:
dev_num =BusTools_FindDevice(MY_CARD_TYPE,MY_INSTANCE);
status =BusTools_API_OpenChannel(&ch_id,API_B_MODE |API_SW_INTERRUPT,dev_num,MY_CHANNEL);
status =BusTools_BM_Init(ch_id,1,1);
status =BusTools_SetInternalBus(ch_id,0);
status =BusTools_RT_Init(ch_id,0);
Abuf_RT1.enable_a =1;
Abuf_RT1.enable_b =1;
Abuf_RT1.inhibit_term_flag =1;
Abuf_RT1.status =0x0800;
Abuf_RT1.bit_word =0x0000;
status =BusTools_RT_AbufWrite(ch_id,RT,&Abuf_RT1);
while (继续进行故障注入)
{
……//把要注入消息的命令字放入Cbuf_RT1SA2T中
status =BusTools_RT_CbufWrite(ch_id,RT,sa,1,1,&Cbuf_RT1SA2T);
……//把数据字放入msg_buffer_write中
status =BusTools_RT_MessageWrite(ch_id,RT,sa,1,0,&msg_buffer_write);
}
status =BusTools_RT_StartStop(ch_id,1);
//等待测试结束
status =BusTools_RT_StartStop(ch_id,0);
status =BusTools_API_Close(ch_id);
在每一个子系统所对应的虚拟模型上,本文都尝试了故障模拟的方法,并观察因为注入的故障对整个系统带来的一系列影响,我们称之为故障链路,本文仅以气源系统故障为例。
当气源发生故障时,会导致其它元部件也相应地出现故障,从而形成系统的故障链路(如图10中有数字标志的元部件组成的链路),通过故障链路可以更好的分析和定位故障,如上所示,其中数字代表故障的传递顺序,气源故障会导致伺服系统的作动机构输出异常,从而会影响姿控系统的控制精度(图11故障链路所示),接着影响到火箭发动机喷管的运动特性(图12所示)并最终导致火箭的运动偏离预定轨道。
图10 气源故障发生后作用到伺服系统的失效链仿真
图11 气源故障发生后作用到姿态控制系统的失效链仿真
图12 气源故障发生后作用到控制系统的失效链模拟
在图10中,1号的气源故障发生后,引起伺服系统故障,故障按如下路径传,气动安全阀2→油箱3→液压入口管4→入口过滤器5→液压入口管6 →液压活塞泵7 →液压管路8→液压止回阀9→伺服阀10→液压作动器11→线性旁通阀12。
图中序号为12的伺服系统故障,导致伺服系统的输出13故障。
图中序号为13的故障传递到发动机14,进一到控制系统15的输出发生故障。
通过故障模拟,为实际的试验流程及试验项目的设置提供了很好的指导。
首先建立系故障诊断模块,然后进行故障注入,一旦系统发生故障,会启动故障诊断算法,并给出故障诊断结果。
故障诊断系统以工控机为平台,用PCI-1553B板卡作为总线通信设备,基于MFC开发了故障诊断软件和故障注入软件。
故障诊断软件由总线数据采集和处理模块,数据库管理模块,故障诊断模块和用户界面组成,用户界面如图13所示。数据采集和处理模块直接控制板卡,获取总线通信数据。
图13 故障诊断软件
数据库管理模块可读取Microsoft Access数据库中的故障模式和故障树信息,另外测试数据也可被保存在Access数据库中;故障诊断模块利用故障模式和故障树信息,对总线通信数据进行实时诊断,并将结果显示在用户界面上。
针对模型固体运载火箭部分箭载设备进行故障诊断系统和故障注入系统实验,被测试设备包括主控制组合,安全控制组合通,Ⅱ级控制组合,激光捷联惯测组合,光纤速率陀螺,Ⅰ、Ⅱ、Ⅲ级伺服子系统。系统结构如图14所示。
图14 测试系统硬件组成
在地面测试中,为了模拟伺服系统故障,让伺服系统气囊处于未充气状态,油箱仅由二次能源系统提供压力,其余均为运载火箭控制系统正常运行状态。部分测试结果如表1。启动故障诊断系统后,诊断结果为气源出现故障。
表1 部分测试数据
用类似的方法对本文的仿真内容进行了更多测试,得到了期待的结果,证明本文提到的故障注入和诊断算法是有效的。
本论文针对运载火箭控制系统的故障诊断和故障注入方法开展研究,由于该控制系统的信息传输全部是通过MIL-STD-1553B数据总线,所以在进行故障注入时,我们通过数据总线来注入故障、获取数据,并进行故障诊断。
故障诊断方法采用了故障树的方法,故障注入则用虚拟模型来进行故障注入和试验两种方式结合,试验结果表明本文采用的方法切实有效,为运载火箭的地面测试和故障诊断提供了很好的研究思路。未来将进一步开展各种试验,以便形成完备的测试数据集,进一步优化故障定位的深度。