发明名称 具有表决功能的可修混合公共贮备系统模型及可靠性仿真算法
摘要 一种具有表决功能的可修混合公共贮备系统模型的可靠性仿真算法,其步骤如下:1,读取部件信息和仿真信息:C<sub>i</sub>,S,Ftype,Fa,Fb,Fc,Rtype,Ra,Rb,Rc,Stype,Sa,Sb,Sc,WorkStyle,StandbyTypa,RestoreWork,S.PRes,S.SProb,ST,TN;2,将当前仿真次数SN置为0;3,仿真次数加1,SN=SN+1;4,初始化各部件的仿真数据,并对各部件进行第一次故障抽样,产生事件数组ES(ET,CS,Etype),并将其按时间顺序排列。并进行“第一次抽样处理”;5,取出事件数组中的第一个事件ES(ET,EC,Etype)1,并调用“事件表处理”处理该事件;6,当前仿真次数是否小于总仿真次数,SN<TN,若是,转3;否则,转7;7,可靠性指标计算;8,结束。本发明在系统可靠性建模与仿真技术领域里具有较好的实用价值和广阔地应用前景。
申请公布号 CN102663226B 申请公布日期 2016.05.04
申请号 CN201210058418.9 申请日期 2012.03.07
申请人 北京航空航天大学 发明人 孙宇锋;常增柱;许健;赵广燕
分类号 G06F19/00(2011.01)I 主分类号 G06F19/00(2011.01)I
代理机构 北京慧泉知识产权代理有限公司 11232 代理人 王顺荣;唐爱华
主权项 具有表决功能的可修混合公共贮备系统模型的可靠性仿真方法,其特征在于:该方法具体步骤如下:步骤1,读取部件信息和仿真信息:C<sub>i</sub>,S,Ra,Rb,Rc,Stype,WorkStyle,StandbyType,RestoreWork,S.PRes,S.SProb,ST,TN;步骤2,将当前仿真次数SN置为0;步骤3,仿真次数加1,SN=SN+1;步骤4,初始化各部件的仿真数据,并对各部件进行第一次故障抽样,产生事件数组ES(ET,CS,Etype),将其按时间顺序排列,并进行“第一次抽样处理”,其流程如下:①令i=1;②取出部件C<sub>i</sub>,其是否为首发件?是,置部件C<sub>i</sub>状态为“正常工作”,转③;否则,置部件C<sub>i</sub>状态为“备份”,转⑤;③部件C<sub>i</sub>备份性质是否为冷?是,抽样其故障时间C<sub>i</sub>.LL,将其记录到事件数组中,转⑥;否则,转④;④部件C<sub>i</sub>备份性质是否为温?是,抽样其温寿命C<sub>i</sub>.WL和热寿命C<sub>i</sub>.HL,并计算两类折算因子η<sub>1</sub>和η<sub>2</sub>,若部件状态为“正常工作”则将其热寿命作为其故障时间记录到事件数组中,若部件状态为“备份”则将其温寿命作为故障时间记录到事件数组中,转⑥;否则,即其备份性质为热,抽样其故障时间C<sub>i</sub>.LL,将其写入事件表中,转⑥;⑤部件C<sub>i</sub>备份性质是否为冷?是,转⑥;否则,转④;⑥i<N?是,i=i+1,转②;否则,转⑦;⑦结束;步骤5,令i=1,取出事件数组中的第一个事件ES(ET,CS,Etype)<sub>1</sub>,并调用“事件表处理”处理该事件,其流程如下:①读取一条新的“事件记录”ES(ET,CS,Etype)<sub>i</sub>,把系统当前时间CT置为ET;②根据事件主体以及事件的类型调用不同的事件处理模块:a)判断CS部件是否为开关?是,转c);否则转b);b)判断该事件是否为故障事件?即Etype=0?是,调用“开关处理部件故障”模块处理ES(ET,CS,Etype)<sub>i</sub>,然后转③;否则,判断该事件是否为修复事件?即Etype=1?是,调用“开关处理部件修复”模块处理ES(ET,CS,Etype)<sub>i</sub>,然后转③;否则,转③;c)判断该事件是否为故障事件?即Etype=0?是,调用“开关故障事件”模块处理ES(ET,CS,Etype)<sub>i</sub>,然后转③;否则,判断该事件是否为修复事件?即Etype=1?是,调用“开关修复事件”模块处理ES(ET,CS,Etype)<sub>i</sub>,然后转③;否则,转d);d)判断该事件是否为开关延时结束事件?即Etype=2?是,调用“开关延时事件”模块处理ES(ET,CS,Etype)<sub>i</sub>,然后转③;否则,调用“开关重启事件”模块处理ES(ET,CS,Etype)<sub>i</sub>,然后转③;③判断N/R/K系统是否失效,若失效则进行“停机事件处理”;④对相关可靠性指标统计量FFT(i)、DT(i)、SS(i,t)、SF(i)、FE(i,t)进行积累;⑤令i=i+1,按时间顺序取出事件表中的下一个事件ES(ET,CS,Etype)<sub>i</sub>,若下一个事件的发生时间大于仿真总时长,即ET>ST,则转⑥,否则,转①;⑥结束;步骤6,当前仿真次数是否小于总仿真次数,即SN<TN?若是,转步骤3;否则,转步骤7;步骤7,可靠性指标计算;步骤8,结束;其中,S表示开关;Stype表示部件备用寿命分布函数类型;Ra,Rb,Rc分别表示部件备用寿命分布函数参数;WorkStyle表示部件的工作性质;StandbyType表示部件备用类型;RestoreWork表示部件修复后是否立即工作;S.PRes表示开关允许重启次数;S.SProb表示开关切换成功概率;ES(ET,CS,Etype)表示事件数组;ES(ET,CS,Etype)<sub>i</sub>表示事件数组的第i个事件;ET为事件时间;CS为产生该事件的部件;Etype为事件类型;FFT(i)表示第i次仿真中首次故障发生前的时间;DT(i)表示第i次仿真中系统总停机时间;SS(i,t)表示第i次仿真中t时刻时系统的状态;SF(i)表示第i次仿真中系统失效次数总和;FE(i,t)表示第i次仿真中t时刻前,系统是否发生过故障;t表示时间;Ts表示临时抽样的部件或开关的维修时间;其中,步骤5中所述的“开关处理部件故障”模块的流程如下:(i)抽样生成该故障部件的维修时间,生成事件ES(CT+Ts,CS,1),并将其加入事件表中;(ii)故障部件发生故障前状态是否为“备份”?是,转(viii),否则转(iii);(iii)开关状态是否为“延时”?是,转(iv);否则,转(vi);(iv)开关当前处理事件是否为“强行上位事件”?是,转(v);否则,转(viii);(v)将开关当前处理事件类型改为“直接上位事件”,转(viii);(vi)N/R/K系统是否失效?是,转(vii);否则,转(viii);(vii)开关是否处于维修状态?是,转(viii);否则,调用“开关处理上位请求”模块,上位类型为1;(viii)结束;其中,步骤5中所述的“开关处理部件修复”模块的流程如下:(i)开关状态若为“延时”或“维修”,则将该修复部件写入“开关待处理修复部件数组”S.RWQ中,转(vi);(ii)N/R/K系统是否失效?是,调用“开关处理上位请求”模块,上位类型为直接上位,转(vi);否则,转(iii);(iii)修复件的工作性质是否首发件?是,转(iv);否则,将修复件状态改为备份,进行备份件首次抽样处理,转(vi);(iv)修复件修复后是否继续工作?是,转(v);否则,将修复件状态改为备份,进行备份件首次抽样处理,转(vi);(v)当前工作件数量是否达到首发件总和?是,调用“开关处理上位请求”模块,上位类型为强行上位;否则,调用“开关处理上位请求”模块,上位类型为直接上位;(vi)结束;其中,步骤5中所述的“开关处理上位请求”模块的流程如下:(i)是否紧急上位事件?是,转(ii);否则,转(iii);(ii)是否有备件可用?是,记录“开关当前处理事件”,转(iv);否则,转(ix);(iii)替换件是否为空?是,转(ix);否则,根据上位类型分别记录“开关当前处理事件”,转(iv);(iv)将开关状态设置为“延时”;(v)根据开关动作成功概率抽样开关切换是否成功?是,转(vi);否则,转(vii);(vi)开关动作延迟时间是否大于0?是,生成开关相应的延时事件,写入事件表中,转(ix);否则,立即调用“开关延时事件”,转(ix);(vii)开关允许重启次数是否大于0?是,转(viii);否则,开关设置为维修态,抽样开关维修事件,写入事件表中,转(ix);(viii)开关动作延迟时间是否大于0?是,生成相应的开关重启事件,转(ix);否则,立即调用“开关重启事件”;(ix)结束;其中,步骤5中所述的“开关延时事件”模块的流程如下:(i)开关当前处理事件类型是否为“强行上位”?是,将被换件置为备份状态,并且依据其冷、温、热不同性质,进行故障时间的折算,进而删除或者替换事件表中原有的该部件的事件记录;否则,转(ii);(ii)将替换件置为工作态,并且依据其冷、温、热不同性质,生成或者折算其故障时间,并添加或者替换事件记录,转(iii);(iii)将开关状态置为“正常”,清空开关当前处理事件数组,转(iv);(iv)开关立即故障变量S.Fail是否为0?是,调用“开关修复事件”模块,转(v);否则,开关故障,抽样生成开关维修事件,写入事件表,并将S.Fail值置为0;(v)结束;其中,步骤5中所述的“开关重启事件”模块的流程如下:(i)开关当前重启次数加1,开关立即失效变量是否为1?是,开关故障,抽样生成开关维修事件,写入事件表中,并将立即故障变量和开关当前重启次数置为0,转(vi);否则,转(ii);(ii)根据开关动作概率抽样开关切换是否成功?是,转(iii);否则,转(iv);(iii)开关动作延迟时间是否大于0?是,生成开关延时事件,写入事件表,清空开关当前重启次数,转(vi);否则,立即调用“开关延时事件”模块,清空当前重启次数,转(vi);(iv)开关当前重启次数是否等于允许次数?是,开关故障,抽样生成维修事件,写入事件表,清空开关当前重启次数,转(vi);否则,转(v);(v)开关是否延时?是,生成开关重启事件,写入事件表,转;否则,转(i);(vi)结束;其中,步骤5中所述的“开关修复事件”模块的流程如下:(i)开关状态置为“正常”,开关当前处理事件信息数组是否为空?是,转(ii);否则,转(iii);(ii)开关待处理修复部件数组是否为空?是,转(v);否则,调用“开关处理部件修复”模块按开关待处理修复部件的优先级别分别予以处理,转(v);(iii)开关待处理部件修复事件数组是否为空?是,调用“开关处理上位请求”模块处理开关当前事件,转(v);否则,转(iv);(iv)开关当前处理事件中的替换件是否修复后继续工作?是,调用“开关处理上位请求”模块处理当前事件,转(v);否则,调用“开关处理部件修复”模块按开关待处理修复部件的优先级别分别予以处理,转(v);(v)贮备系统是否失效?是,调用“开关处理上位请求”模块,上位类型为1;否则,转(vi);(vi)结束;其中,步骤5中所述的“开关故障事件”模块的流程如下:(i)开关是否为“延时”状态?是,将开关立即故障变量置为1;否则,开关故障,抽样生成开关的维修事件,写入事件表;(ii)结束;其中,步骤5中所述的“停机事件处理”模块的流程如下:(i)找到CT时刻后最早的非故障事件ES(ET,CS,Etype)<sub>i</sub>;(ii)计算出仿真当前时间与该时刻后最早的非故障事件发生的时间差T=ET‑CT;(iii)将CT时刻后所有故障事件发生的时间均向后延迟T;(iv)结束;其中,步骤7中所述的可靠性指标有以下几个:a)MTTFF:系统平均首次故障前时间,其计算公式为:<maths num="0001" id="cmaths0001"><math><![CDATA[<mrow><mi>M</mi><mi>T</mi><mi>T</mi><mi>F</mi><mi>F</mi><mo>=</mo><munderover><mo>&Sigma;</mo><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mrow><mi>T</mi><mi>N</mi></mrow></munderover><mi>F</mi><mi>F</mi><mi>T</mi><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow><mo>/</mo><mi>T</mi><mi>N</mi><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000858210040000051.GIF" wi="1221" he="142" /></maths>如果第k次仿真中系统未发生故障,取单次仿真总时长作为FFT(k)替代值进行计算,所以,若要得到MTTFF的精确值,必须将仿真时长设得足够大,通常取3倍的MTTFF;b)Am:系统平均可用度,其计算公式为:<maths num="0002" id="cmaths0002"><math><![CDATA[<mrow><mi>A</mi><mi>m</mi><mo>=</mo><mn>1</mn><mo>-</mo><munderover><mo>&Sigma;</mo><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mrow><mi>T</mi><mi>N</mi></mrow></munderover><mi>D</mi><mi>T</mi><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow><mo>/</mo><mrow><mo>(</mo><mi>S</mi><mi>T</mi><mo>&times;</mo><mi>T</mi><mi>N</mi><mo>)</mo></mrow><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000858210040000061.GIF" wi="1268" he="143" /></maths>c)A(t):系统点可用度,其计算公式为:<maths num="0003" id="cmaths0003"><math><![CDATA[<mrow><mi>A</mi><mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow><mo>=</mo><munderover><mo>&Sigma;</mo><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mrow><mi>T</mi><mi>N</mi></mrow></munderover><mi>S</mi><mi>S</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>t</mi><mo>)</mo></mrow><mo>/</mo><mi>T</mi><mi>N</mi><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>3</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000858210040000062.GIF" wi="1179" he="142" /></maths>d)NF:系统平均故障次数,其计算公式为:<maths num="0004" id="cmaths0004"><math><![CDATA[<mrow><mi>N</mi><mi>F</mi><mo>=</mo><munderover><mo>&Sigma;</mo><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mrow><mi>T</mi><mi>N</mi></mrow></munderover><mi>S</mi><mi>F</mi><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow><mo>/</mo><mi>T</mi><mi>N</mi><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>4</mn><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000858210040000063.GIF" wi="1140" he="146" /></maths>e)R(t):系统可靠度,其计算公式为:<maths num="0005" id="cmaths0005"><math><![CDATA[<mrow><mi>R</mi><mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow><mo>=</mo><mn>1</mn><mo>-</mo><munderover><mo>&Sigma;</mo><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mrow><mi>T</mi><mi>N</mi></mrow></munderover><mi>F</mi><mi>E</mi><mrow><mo>(</mo><mi>i</mi><mo>,</mo><mi>t</mi><mo>)</mo></mrow><mo>/</mo><mi>T</mi><mi>N</mi><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>5</mn><mo>)</mo></mrow><mo>.</mo></mrow>]]></math><img file="FDA0000858210040000064.GIF" wi="1142" he="143" /></maths>
地址 100191 北京市海淀区学院路37号