聂国健, 雷林林, 葛智君, 罗剑武
(工业和信息化部电子第五研究所, 广东 广州 510610)
随着我国制造业的快速发展, 大量新型电子、机电产品尤其是多功能部件的应用、 多种技术的集成, 使得产品的结构和功能更加复杂, 系统的可靠性问题、 质量问题逐渐凸显, 因此, 对复杂系统的可靠性进行分析显得尤为重要。
目前, 国内外对工业产品的可靠性分析方法,主要包括故障树分析、 二元决策图和马尔科夫链等[1]。 动态故障树是基于传统故障树理论进行扩展, 在静态故障树的基础上增加顺序相关性、 系统可修复性和冷、 热备件等特性。 动态故障树分析方法主要是以马尔科夫状态转移过程为基础的分析方法, 其主要思路是将动态故障树模型转换为已知的数学模型, 从而能够对系统进行分析。但是, 如果系统的结构和功能较为复杂, 将复杂系统整个动态故障树转换为马尔科夫模型时, 将会因为模型计算分析的“组合爆炸” 问题而导致计算极其复杂, 甚至无法计算。
本文针对复杂系统动态故障树分析计算的难点, 研究了动态故障树模块化分析方法、 基于二元决策图的静态子树分析方法和基于马尔科夫链的动态子树分析方法, 并提出了基于逻辑规则和时序规则化简冗余马尔科夫链的方法, 降低了动态故障树分析与求解的复杂度, 为动态故障树分析提供了一种新的分析方法。
动态故障树是在静态故障树的基础上, 引入表征动态特性的新的逻辑门类型, 动态故障树至少包含一个专用动态逻辑门的故障树[2]。 动态故障树把传统的故障树分析扩大到动态系统性能,是静态故障树的一种扩展, 具有顺序相关性、 公用资源库、 各种可修复系统和冷/热备件等动态特性。 动态故障树主要用于解决静态故障树所不能解决的复杂系统故障分析问题。
在复杂系统中, 如果相关事件依赖某种指定的顺序发生时系统才会发生故障, 就需要采用动态故障树来建模, 进行系统故障分析。 目前, 故障树分析中常用的动态逻辑门主要有[3]: 优先与门 (PAND: Priority-AND Gate)、 顺序相关门(SEQ: Sequence Enforcing Gate)、 功能相关门(FDEP: Functional Dependency Gate)、 冷 备 件 门(CSP: Cool Spare Gate)、 温备件门(WSP: Warm Spare Gate) 和热备件门(HSP: Hot Spare Gate)。
故障树分析的首要任务就是做好定性分析。定性分析的基本任务和作用就是识别系统所有可能的故障模式, 并按照系统单元的重要性和最小割集的阶数来排序轻重次序。
设动态故障树中含有n 个底事件: X1, X2,…, Xn。 Ci= {Xi1, Xi2, …, Xin} 为其中某些底事件组成的集合, 若集合中的事件都发生时, 顶事件必然发生, 就把Ci称为故障树的一个割集。 若Ci是一个割集, 且在Ci中任意去掉一个事件后就不再是割集, 则Ci就是一个最小割集, Ci中的事件个数被称为该最小割集的阶数。
在动态故障树分析中, 由于引入了失效顺序的概念, 与事件出现顺序相关的任何特性, 都会影响系统的工作状态, 顶事件发生不仅是多个基本事件的组合, 还包含基本事件的顺序失效关系,所以在进行动态故障树的定性分析时, 要考虑故障树割集中的顺序问题[4]。
故障树定量分析的主要工作内容是计算顶事件的发生概率、 结构重要度和概率重要度等参数。一般来说, 故障树的定量计算工作量较大, 可借助相应的计算机辅助工具进行量化计算。
计算顶事件发生概率的一般步骤为: 首先,求出故障树的最小割集, 顶事件状态可以用故障树全体最小割集的布尔代数表示; 然后, 将全体最小割集进行不交化处理, 化为两两互斥事件;最后, 求最小割集的不交积之和。
在进行动态故障树的定量分析时, 通常需设置系统分析的前置条件: 1) 底事件之间是相互独立的; 2) 每个事件只考虑发生或不发生2 种状态; 3) 底事件的故障分布都服从指数分布。
基于以上假设条件, 如果底事件的失效率为λ, 工作时间为t, 则该底事件的失效概率为:
当λ≤0.001 时, 等式简化为:
在动态故障树的定量分析中, 除了计算顶事件的发生概率, 还应确定出系统重要度。 重要度是指当系统的一个部件或者系统的割集发生失效时, 对顶事件发生概率的贡献程度, 是时间、 部件的可靠性参数和系统结构的函数。 它在系统的可靠性预测、 分配、 运行、 维修和存储管理中都有重要的指导性作用。 重要度分析的内容主要包括概率重要度和结构重要度。
概率重要度是指在只有第i 个部件由正常状态转为故障状态时使顶事件发生变化的概率, 其定义用公式表示为:
式(3) 中: g (t) ——故障树的故障概率函数;
qi(t) ——第i 个底事件的故障概率函数。
结构重要度就是第i 个底事件在故障树中所处位置的重要程度, 其定义用公式表示为[5]:
通常情况下, 复杂系统的动态故障树模型中只有少部分部件在本质上为动态特性。 因此, 在用综合方法对整个动态故障树进行分析时, 为了降低计算难度, 首先将整个动态故障树进行模块化分解,将模型中的静态逻辑门和动态逻辑门区分开来, 分离出相互独立的静态子树和动态子树。 其中, 静态子树可以采用二元决策图(BDD: Binary Decision Diagram) 进行分析求解, 而动态子树则转换为对应的马尔科夫链进行分析求解[6]。
动态故障树模块分解法的算法流程如图1 所示: 首先, 对复杂系统的动态故障树模型进行预处理, 减小故障树的规模, 产生一个等价和便于分析的故障树; 其次, 对预处理过的动态故障树进行模块化分解, 分离得到该故障树的所有静态子树和动态子树; 再次, 针对其中的静态子树采用BDD 进行分析, 动态子树则转换为对应的马尔科夫模型,并利用逻辑规则和时序规则简化马尔科夫模型后进行分析, 分别求解各个子树顶事件的发生概率; 最后, 以各个子树顶事件发生概率作为各个子模块动态故障树中底事件的故障概率, 根据子模块动态故障树的类型采用相应的分析方法, 求出整个模块动态故障树顶事件的发生概率, 即为系统动态故障树顶事件的发生概率。
BDD 的基本思想就是利用图的形式定义一种数字函数, 通过函数“图” 可以直观地根据函数变量的输入值来确定函数的输出值, 从而既能直观地了解函数的结构, 又能很快地对函数进行运算来获取函数结果[7]。
在把故障树转化为BDD 结构时, 实际上已经获得了系统的所有故障模式和传播途径。 BDD 的每一个中间结点表示系统的底事件, 从根结点到叶结点的每一条路径则代表底事件发生或不发生的不交化组合。 通过对从根结点到叶结点为故障状态的路径进行搜索, 获得故障树的最小割集。 在故障发生路径的搜索过程中, 只需注意结点的底事件发生, 而由这些结点的底事件组成的集合就是系统的割集; 对这些割集进行最小化, 得到的就是系统的最小割集。
基于BDD 的故障树定量分析包括顶事件发生概率和底事件重要度的计算。
a) 顶事件发生概率的计算
假设BDD 包含底事件x1, x2, x3, ..., xn, 底事件对应的故障概率为q1, q2, q3, ..., qn。 为了计算方便, 定义节点的回溯集族为节点的回溯集的集合。 这里我们假设叶节点为故障状态(H (1)) 的回溯集为
那么顶事件发生的概率为:
b) 底事件重要度的计算
1) 概率重要度的计算
同样利用回溯集的概念计算底事件xi的概率重要度。 在系统的BDD 已知的情况下, 分别设和, 使用减支法可以得到两个不同的, 对这两个BDD 分别求顶事件的发生概率, 得到qf1, qf2, 于是概率重要度为:
2) 结构重要度的计算
因为部件的结构重要度等于所有部件的故障概率均为0.5 时该部件的概率重要度, 故结构重要度可以利用求解概率重要度的方法求解。 首先给各个部件的故障概率均赋值0.5, 然后求解部件的概率重要度即可。
当系统结构部件的寿命时间和故障后的修理时间均服从指数分布时, 只要适当地定义系统的状态, 这样的系统就可以用马尔可夫过程来描述[8]。 马尔可夫过程包括状态转移图、 状态转移矩阵和状态转移概率等。 假设已知系统两个部件的初始状态和故障概率, 则可以通过状态转移图来表示马尔科夫转移过程, 如图2 所示。
把动态故障树转换为相应的状态转移图, 我们可以得到其所有的故障模式和传播途径。 在马尔可夫状态转移图中, 每一步转移都对应着系统的某个部件故障, 如果一条马尔可夫链最后的状态为系统故障, 则该链上所有的转移加上对应的顺序关系就为系统的一种故障模式。 以最终的系统故障状态为起点, 沿马尔可夫状态转移过程向前回溯, 就可以找出动态故障树对应的所有的故障模式。
根据系统故障树转化后的马尔科夫模型, 假设某时刻系统在ti状态的失效率为λi, 即x (ti) =λi, 马尔科夫过程可以用数学表达式表示为:
对马尔科夫链不同链长的状态转移链分别推导出计算公式, 在应用时只要套用这些对应的计算公式, 然后综合各个条链的分析结果, 便可得到整个系统发生故障的失效概率。
BDD 技术从逻辑角度实现了动态故障树的失效模式, 为了能准确、 有效地表现动态故障树所描述系统的失效特点, 我们将故障树的时序规则作用于系统故障的最小割集, 这样才能真实地反映故障树基本事件发生的先后顺序。 将时序规则作用在最小割集, 得到系统所有顺序割集的方法[9],如下所述。
a) 在仅含有一个基本事件的最小割集中, 此最小割集不形成其他顺序割集, 该基本事件失效,就等效于故障树的顶事件失效。
b) 在含有多个基本事件的最小割集中, 根据时序规则将最小割集中的基本事件集分别进行有序排列, 这种排列组合的特点是: 1) 排列长度由最小割集中基本事件的个数来确定; 2) 基本事件排列的位置次序满足动态逻辑门的时序规则; 3)用零代替排列中的空闲位置。 对所有的基本事件有序排列先后进行组合, 组合后的排列即为最简马尔科夫链。
综合以上分析可得, 形成最简马尔科夫链的步骤如下所述。
a) 利用模块化分解方法分离动态故障树, 形成对应静态逻辑结构和动态逻辑门的时序规则。
b) 对静态逻辑结构运用BDD 技术进行处理,形成故障树结构函数的BDD 结构形式。
c) 对BDD 结构形式进行深度优先遍历算法,形成最小割集, 计算最小割集的长度Li; 置i=1。
d) 获取第i 个最小割集的长度L2及元素集A。
1) 在动态逻辑门的时序规则集中选择A 所对应的时序规则集B, 计算其长度L3; 置j=1;
2) 对B 中的第j 个元素, 以L2为长度进行有序排列(空位置置0), 得到有序排列集C {j};
3) 如果j=1, 则合成C {j-1} 和C {j}, 其结果重新赋值给C {j};
4) 如果j<L2, 则置j=j+1; 重复步骤2);
5) 如果j=L2, 则将C {j} 赋值给第i 个简化的马尔科夫链M {i}; 置i=i+1; 重复步骤4)。
以某机电产品供油系统模块的动态故障树(如图3 所示) 为例, 供油系统(O1001) 中的3个模块以或门方式组成。 其中, 模块O1004 是由传感器故障和油箱泄漏(O1005 和A1006) 构成的或门; 模块A1006 是由2 个部件构成的与门, 所以, 只有部件B1010 和B1011 同时失效才导致模块A1006 失效; 软件故障Q1009 为优先与门, 仅当底事件B1012 先失效后, 且底事件B1013 发生故障, 才会导致Q1009 失效。
针对图3 所示的某供油系统的动态故障树模型, 根据本文分析方法, 可以分离出系统动态故障树的逻辑规则和时序规则。 由逻辑规则可形成故障树的等效静态结构, 利用BDD 技术, 得到相应的等效最小割集。 将动态门的时序规则应用于最小割集中, 则容易形成最简的马尔科夫链。 通过最简马尔科夫模型, 可以方便地分析出系统的最小割集和计算出系统的失效率。 利用计算机程序运行计算后, 得到系统最小割集和顶事件发生概率结果如图4 所示。
本文针对复杂系统动态故障树分析在直接转换为马尔科夫模型计算时, 存在“组合爆炸” 的问题, 提出了基于模块分解思想的动态故障树分析方法, 研究了基于时序规则简化冗余马尔科夫链的方法。 通过时序和逻辑规则分离化解动态故障树后, 能够有效地简化动态故障树求解最小割集和失效率的复杂度。 该方法为工程技术人员进行动态树故障分析提供了一种参考, 有利于工程技术人员在解决复杂系统的故障问题时, 快速准确地找出故障原因, 可以提高工程技术人员进行故障分析的工作效率。