朱茂强,陶 军
(武汉科技大学 汽车与交通工程学院,湖北 武汉 430065)
随着系统规模和复杂性的不断增加,对系统进行可靠性分析变得尤为重要。故障树分析是解决大型复杂系统可靠性问题的有力工具,但在面对大型复杂系统的建树问题时,传统的人工构建故障树已经不符合工程实践的需求[1-2],计算机自动建树成为可靠性领域的一个热点研究问题。
常见的故障树自动建树方法有以下几种。传递函数法[3]是为每一个部件建立与之对应的故障传递函数,可表征多种故障模式;决策表法[4-6]是将部件输入事件与输出变量值关联,形成一个扩大版的真值表;泰勒法[7-8]是对传递函数法的改进,主要基于最小树(minitree)模型,并通过传播方程、事件陈述和决策表描述部件的“最小树”模型。然而,上述方法并不适用于大型复杂系统。这些方法单从系统抽象本身或简单的“两态”分析出发,缺少对部件多故障行为的描述和复杂系统结构的处理算法,很难在不简化系统结构的情况下对大型复杂系统进行有效分析。为此,该文提出了一种基于标准化模型的多态故障树建造方法,并在此模型的基础上,提出能够处理存在串、并联结构和反馈回路结构系统的自动建树算法。最后以冷却系统为例进行建树分析,验证模型和建树算法的可行性。
系统的多态表达是基于对部件的多态描述。有别于传统建树好坏“两态”的建树原则[9-11],多态部件模型规范化地描述系统中各部件的失效等级,并以输出偏差的方式定义部件的故障等级。这里将偏差划分为以下五个等级,即正常状态(δ=0),可控正偏差(δ=+1),可控负偏差(δ=-1),不可控正偏差(δ=+10),不可控负偏差(δ=-10)。不同故障等级对应的部件故障事件作为布尔变量相互独立,将部件的实际偏差值乘上一个系数得到部件的偏差等级,逻辑表达式如下:
(1)
式中,Or—部件或系统偏离正常值后的实际输出值;On—系统或部件正常时的输出值;η—可靠性因子,其值为百分比,大小反映了系统对输出精度要求的高低,一般由有经验的工程师确定。
运用基于流的故障传递原理进行故障树自动建造,需要对部件间流变量偏差的传递进行合理约束。首先,通过故障模式和影响分析(FMEA)列出了所研究部件的所有状态;然后,根据部件的结构原理通过每个状态下的边际贡献(本质上类似于偏导数)描述部件的输入变量和输出变量之间的关系。这种关系可以用下面几个公式进行规范化解释。
Yj(y)=fj(X1(x1),X2(x2),…,Xn(xn)|Z)
(2)
公式(2)描述了在给定部件状态Z下,输入变量X1,X2,…,Xn的联合偏差对输出Yj造成的总偏差。工程实践中,关心的更多的是单一输入变量偏差对给定输出的偏差影响。当一个部件处于正常状态下,其单个输入偏差Xi对输出偏差Yj的贡献可表示为:
(3)
如果将其从部件的正常(δ=0)状态推广到全状态下(δ=0,±1,±10),则会有公式(4)。
(4)
通过对部件的内外部特性进行分离,将部件的输入输出特性通过统一的规则进行约束,以实现不同部件的外部特性一致;内部则以多变量的方式定义部件属性,以表达部件模型的多态属性,这样可以极大地提高部件模型对实际故障状态描述的准确性。
2.1.1 防卫过度系统
部件模型使用防护过度系统(GTS)进行描述,该系统是AltaRica3.0[12-15]块定义的核心,主要由以下元素组成:
(1)状态变量,描述系统状态的一组量。其值可以定义在有限域(如布尔或符号常数的枚举)或无限域(如整数、浮点数或符号常数)中。
(2)流量变量,描述系统实现的传递函数,即系统的输入输出。像状态变量一样,流变量也有多个值域。流量变量在功能上取决于状态变量:一旦设置了状态变量的值,流变量的值就被唯一地确定。
(3)事件,系统中可能发生的一组事件(包括故障)。
(4)转换,转换的三元素
(5)断言,用于根据状态变量的值计算流量变量的值。
2.1.2 部件模型规范与描述
新的部件模型需要在系统层识别不同偏差的故障原因,并对不同偏差输入、输出进行准确定义,这就要求部件模型能有准确描述部件行为特性和流变量传递关系的能力。因此,在传统控制流模型[16-17]基础上,通过引入GTS机制所包含的变量、事件、转换、断言机制,将输出流通过其他流变量和内部变量以断言的形式确定,将部件正常状态和其他多态故障用事件表征,并以转换触发。
如图1中流量阀,在正常状态下,输出变量CO2受输入变量CO3控制并与输入变量CO1相等,输出偏差直接受输入变量CO1、CO2偏差的线性影响;当部件出现全通故障的情况下,输入变量CO3的偏差无法对输出变量CO2产生稳定影响,输出变量CO2完全取决于输入变量CO1;当流量阀阻塞故障,部件切断了CO2输出,CO1、CO3偏差将无法作用与输出,输出故障仅由部件自身故障导致;当部件处于导通卡死的情况下,输出变量CO2的输出仅由输入CO1决定,CO3失去对输出的控制。
图1 流量阀
表1为流量阀标准化描述的状态与流变量关系表,边际贡献直接反映输入与输出的关系。不同状态下,部件会表现为不同的输入输出特性。
基于GTS的新部件模型如图2所示,模型包含三个状态变量,基于部件结构定义了三个流变量,并根据工作状态定义了四个故障事件,通过变量定义的断言关系可规范成表2输出断言表的形式。
表2 输出断言表
图2 流量阀的AltaRica3.0模型
重新规范系统的结构形式,将系统的组成元素和链接进行一致化定义,以方便建树时的识别处理。部件模型可以用层次结构组合,通过输入和输出形成连接,通过转换、同步形成关联,以上共同构成系统的结构模型。
2.2.1 组件层次结构
新的部件模型结合了面向原型和面向对象两种语言形式的优点。封装了内部特性的GTS部件模块可以凭借以下两种不同的方式去使用。一种是通过声明模块并直接使用它,即块定义,用于面向原型的实例。第二种是使用面向对象的实例,需要预先定义一个与模块对应的类,然后将其实例化到块或类中。
部件模型是一组结构化的类定义、实例化和块的层次结构。为了构建部件模型,可以在块和类之间执行不同的操作:继承、组合、聚合和克隆。组合和继承用于构建部件的层次模型。聚合和克隆用于创建具有此层次结构的分支的层次模型,并且可以在不同分支之间共享组件。由于是面向原型的范例,这种聚合操作是被允许的。
2.2.2 组件关系
组件间除了层次结构外,还存在交互链接,即部件间的交互方式。新的系统模型提供了两种机制来表达组件之间的交互:连接、事件同步。
连接,即通过断言传递流变量值。系统模型中,不存在条件变量的断言被称为数据流。在断言是数据流的情况下,重复应用赋值语义规则是可行的,例如,计算指令“v:=w;w:=v”,它表达了变量的双向传递。数据流不仅拥有语义规则的程序终止,而且存在至少一个块指令的重新排序,这使得可以按部件依赖关系确定的顺序评估所有指令。若是部件内的条件动作断言,即非数据流的指令,需要检查已评估变量与重置后的未评估变量之间的一致性。
事件同步是表示组件之间交互的另一种方式。新的系统模型提供了一种强大的同步机制,包括强制两个或多个事件同时发生。正如断言可以链接不同部件的流变量一样,同步也可以链接它们的事件(以及转换)。不同之处是,同步会修改它们所涉及的事件和转换。
将封装了GTS的部件类或块以图形化的方式表示,新的系统模型实际上是一个用“线”链接“框”的层次结构,用以描述封装部件流变量之间的约束(断言),封装部件也可以通过同步断言来触发事件的发生。从用户的角度来看,新的系统模型可以图形化地创建、编辑和建模。故障树的自动建造分析包含部件模型库的建立、系统的搭建、规范系统边界条件以及自动建树算法对系统模型的处理等主要步骤,其流程如图3所示。
图3 故障树自动建造流程
以给定系统输出偏差定义为故障树的顶事件,通过系统输出逆向查找符合顶事件输出偏差的断言,回溯过程会更改部件状态变量和流变量的值,卫士转换系统(GTS)触发对应的故障事件,并作为部件故障合成到顶事件下。流变量的偏差输入作为输入故障,在下次遍历时,以子故障树的方式合成到上层系统故障树下,逻辑门关系是由断言语句的条件关系描述,算法逻辑如图4所示。当遍历出现有环连接回路时,算法通过识别节点变量值判断节点是否先前被触发来识别环路,环路在同一级遍历中只会被遍历一遍,且会用反馈回路进行标识。
图4 自动建树算法
为了便于理解,下面以冷却系统为例,介绍部件的多态划分、部件和系统结构模型的搭建,以及故障树的建立。
冷却系统结构如图5所示,对其进行有关多态故障树分析的系统建模。首先对其结构进行分析,冷却系统通过两条管线将冷却剂从储罐输送至反应堆。从组件的角度来看,这两条线是相同的。每个水泵都由一个泵和两个阀组成,且共用一个水箱。
图5 冷却系统
其次,构建冷却系统包含的部件模型(如图6所示)。通过将通用的部件(Pump、Tank、Valve)使用类定义为可复用模块。为提高分析的精度,将水箱分为空(δ=-10)、不足(δ=-1)和充足(δ=0)三个状态;阀门作为结构性部件,只考虑通断两种状态;水泵作为可以全域工作的部件,在系统中考虑其正常工作(δ=0)、降级运行(δ=-1)、故障停运(δ=-10)三个状态。
图6 部件系统模型
系统结构搭建时,通过实例化这些类、创建特定部件到指定元素模块中并链接它们来构建冷却系统模型。如Line1子系统模块中,实例化了VI、VO两个阀门和P水泵,并嵌入系统模块TK作为共用水箱。Line1的数据流断言将这些部件连接,形成串联结构。Line2和Line1是完全相同的结构,使用“clones”语句将其直接复制使用,Line1、Line2为并联结构。冷却堆作为系统中唯一的控制对象,使用“block”直接定义,其包含一个输入流并使用“observe”对变量进行监听。为描述两个水泵之间的共同原因故障,在系统层申明了evPumpsCCF事件,并用转换定义了触发条件。系统层断言将两路供水与反应堆相连,两路供水互为备份,断言中用“or”表达这种关系,系统模型如图6所示。
以系统模型为输入文件,将顶事件设置为冷却水供应不足,建树过程如下:
(1)依据顶事件的定义,将系统观察变量oCooledReactor偏差设置为-1。
(2)系统输出断言组合关系为两条供水线路“或”的关系,Line1、Line2可能出现的输出组合为{-10,-1}{-1,-10},将其组合到顶事件下。
(3)以其中组合{-10,-1}为例,向上遍历,导致Line1输出为-10的原因有输出阀VO故障、水泵输出故障、输入阀VI故障、水箱空;导致Line2输出为-1的原因有水泵降级、水箱水位低;当遍历到水箱时,算法会将没有输入的部件定义为边界输入,遍历会返回上一多输入节点,即反应堆节点。
(4)当前节点返回到反应堆后,遍历剩余输入组合{-1,-10},遍历结果与步骤(3)类似。
(5)当最后一次遍历到边界输入后,算法检测到不存在没有遍历的多输出节点后,系统遍历完成。
依上述步骤建立的以冷却水供应不足(δ=-1)为顶事件的故障树如图7所示。在所建故障树的底事件中,存在关联状态和关联事件,系统模型中定义的同步事件规定了在Line1中水泵故障的情况下,Line2中的水泵也有一定几率出现相同状态,关联底事件已用虚线标出;冷却系统中只存在一个水箱,在“与”逻辑下,水箱水位低和空两个状态不能共存,且水位低优先于水箱空,二者为关联状态。这些并不影响建树结果,只会在后处理分析的时候起作用。
图7 冷却不足故障树
上述实例介绍了部件、系统模型的定义方式和对串并联系统的多态故障建造的算法处理过程,建树结果的一致性表明,以流变量传递的方式进行故障树的自动建造是可行的。该方法在冷却系统搭建上,实现了对部件模型的重复利用(如阀门的重复使用)和系统结构的层次化模块化描述;在建树处理算法上,相比于传统无条件的穷举建树,加入了对输出的条件判断,极大地优化了算法复杂度,同时针对有环回路的识别,进行状态变量判断,优化了传统自动建树手动标识控制回路的步骤,提高了建树效率[18]。
冷却系统的实例验证说明了基于部件模型的多态故障树自动建造和流变量回溯建树算法思路的可行性,为工程师进行大型复杂系统的故障树分析提供一种高自由度的建树思路和方法。该方法解决了传统组合式故障树建造无法对复杂结构处理的问题,同时,基于模型的建树思路在系统设计初期进行可靠性优化时,可以实现系统结构和可靠性模型的同步修改,实现快速的故障建树与分析[19]。
多态的引入,提高了建树质量的同时,也为建树带来了巨大的运算量,为此引入的部件GTS结构极大地降低了建树运算复杂度。所提出的自动建树算法在实现对系统自动建树的同时,因其部件模型标准和算法处理机制的高度统一,建树结果高度统一,因此推广后可作为评判系统可靠性优化的统一标准。
目前的部件模型和系统搭建尚以类代码的方式搭建,对编程语言的要求较高,后期可以开发成图形化的软件,以表格的方式实现对部件的描述与搭建,且可以重复使用。而在系统搭建时,通过对已构部件的拖拽与连接即可实现对系统的构建,这将极大降低故障树建造的使用门槛,有利于故障树分析的进一步推广。