From 95328ba5da923ee571ced128426e4590c2ba86e2 Mon Sep 17 00:00:00 2001 From: Robin Clark Date: Mon, 4 Oct 2010 21:39:24 +0100 Subject: [PATCH] edits from Andrew fish comments 01OCT2010 --- fmmdset/fmmdh.dia | Bin 3342 -> 3386 bytes fmmdset/fmmdh.jpg | Bin 35315 -> 35378 bytes fmmdset/fmmdset.tex | 128 ++++++++++++++++++++++++++++++-------------- 3 files changed, 87 insertions(+), 41 deletions(-) diff --git a/fmmdset/fmmdh.dia b/fmmdset/fmmdh.dia index 3069e7d6874ede7d98188a1b015b84021e9c6370..70a1e082a3e2e423136cd5f0f19085274cd25d81 100644 GIT binary patch literal 3386 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 Q=KazC0eN0I>Imup06kQ6z5oCK literal 3342 zcmV+p4e|0HiwFP!000021MOW~Z{s!=e$THEJTJR|tMGnlnklBcn0A3KHb7@z8_2fe zcq>bRtRxc@yT5%&N{(Y&vOSWh85#^QgV>>UMET=)EEZd zf;gRKvqd_;9{u~%$M3}G$M+XM%ofr2>fbz%mVx?2y3((%NB2eX@crfG^Ye3x7_Q>W|3yg>U8+HsqxTm<@b&_;sEG7?)w@wqi~sX^)d{ksq3U3p8@8=Gs@-DsnbVj1Q0MY=CXJ)5L_5GWJ~ zA@wk*6cTX4;rf|;xwy%&;*w#-<->|wtZpB&yvURrPLySjN8juO`}9X z?9jA2%;IiQ6xosczl)O9DHAB)eqC)}x^n0FVs?1pZjETT%JX7Y+~0n-^tj5azgW8Z z(_*!lByru{FVdp7%fIw<`Q2~Fu=nQU9nnx;tx-M9L`-A)AvCi`0v zrL!oX1>Xgq;?KqCjS(^m7PITozrgm>+MS=enj*rz$MukHFa<(L#|W$ccb~#Ohct

+Dr*Q=GJ7by{+}H?P<95u624mvD3T&eDEG_B; z>Gy-XXt_vU)cr*1Y80%B7Y!90BKphk;67f=?`!X2Ly;g9VEc!3 z6S|GRlQGyv)HW|2FkS)ZCP-=hdAf}2zt1>*TvpHWL@Bkb^JOdI$=uTJn%LY5KC;lt zH%sai<`+N==m*s33O*Wr&eMpx~aFJTo1}qUR+Cd5L!A zB?LlQX(?#cXj%(WMw5cw6~ZAmMicW!lc%PmaP;KlAUUzlLtG zua^N%=9$Se(_t)nUUHC^cxPu0n!Q;TT6N`0AvBagxpFX+hL)7+PF;w6-#|}E*8R8| z7L^yKrDy7rRF1{_u)v$WW`5L?8Mz5&qo79y!TM(`N%;&l08Jb4HCHB zP`8l*wRyx}=}5R?9$`;M1BAJELFn1Y#r(<6`P>MF#F#2JgGiMOpy+7*JEuNL$um(c z{yY=8$V9LQCMuJxF}2G@z=V!CHDn~J&=GaRRU@8}24JLp9C}W2k&`;7aVws{8VYu| z|BVnDGR;WJN~*jy;szs8&q&r8sRo6fkX$4r+(W$^)0K~wtKFEcy)~O_l|1I%HBUwL z`14HkEi=(i+2=Pz1lB}E`XC}@rU1+PY6fmf$Q2YiPJlv)0cOS7E4~u+@F`d|T5<>UftNn;Mn&k+7l- zZWv;YY$vTC11-*VX_N?&mg{AV!Ez_LZgu527~pZRcs7rf&%uQr~U~6YQMyZRZ40MQ5yJHD%<3~J?s<)(eD z4c9Jh3he6`2M>%Ro|3L+JI6OA&~}n!e~Pt6 zFE$H?VZUI`cfoY;`N@Y^F!WW&FoB3J?*UAh^+JSoPm!OrUTA3Uk9+-c#>)lwQF&qv z7GT#ZGuD_i8BL5s(_RTmV3rJ!ZQJvnykr_?Su+s(HFNH3hV+n+Y`_HVDjDUgBMb~6 z1%~8Gi)EZ?$%t@nd&$&JvNob%Zc%!(>*FM^S+vjvUH_plJ^9D4t9*icuMwwlk2^nB%d&Cr_l$%q+E}Xm1 z?ld@WXJ2ya;oS0=4BkU`9?Z=V7M2mc5ri;>x-mT|kIs++Ind1TZ@* zN54zu;vqhw2W_j1F*O_{vfLq~5`-jY+TQ}CJi3KY=mtCariMdQrq{yJvy*!X;i!*B zVwjGFsffaMn~7m11}NJfU+MIXF$5v9>#L63WIk+`B7)LU6vW0Pdco!9zjE z(m0vKCZ3HP5emi#z0xU`0COdmaR87LY2n@#7{V2(hojfE4(5Vm*helnA0&>f1VJbj z@BqgW>qs(@glNf@mT@pQabKT(=CCba~595KdL^0|k zQJxMFT!&`W=p`-yV>(wJL0$&FB`3CbSLtBa@zqKW!*R4S_^eu|R-T>M2L zKdF>Zklh87Xcb?WyGj*$SAX^NW}DvX0PVTWMQ-CgaGUj`CqUWeT^~F_96NX7(|sJ= zM0v3ae*MR9pFA@Sz)b!GigO?)(VdvevJz>RnMxs8Q4F>myAf~^^`Qj;_1s|iw zqzL|*&EnO?2lf3ZzPelFtD>^Dvb&298xzd)mwo=)N3AC?7YVF;nxfRjLo$R`H(iVn z5mJ5rawQN0e`JN{qIv*&E^?5I2H@rq2%2Gt}%5k2V1_@|w1JYBIi`3M;OP(SNI@Slk+wGEPgh1^NR=-Q{ z4|*zU0HEh07r6-ckxe<4b`Mk4B1CzXYAMYhrRsU89(F4aeS!a(`qQ8ZJ*oMt-U({E8a)&ieU42gv88l z9|(*v(zp_=3}VSruw-p(#7_iP(;N>B<+?cqJ9cv5`2wqZr$HQo_4mu6<<`E^d}BgV z;{h;K@)dTTu3akXdbAy%a;k*Eh%T*_+V3vJLC`!JWSG12_ZB&21JOr2lYS-frxQey9c(J7K5@Svi!5)=%!61s3cfTU21IACE+K?JM;?K&(@w!AMJZNtf~~@; zVTR2k754d&k!n>q4yuN*6h+-rVVG|AXf+W=OMqp@pE6yjFgreOWc=-xs|K~%e!jW$ z02wknIQ79R2lu2Y?xEmI*CZpmPT;W|xYL3}~3h{OZ$%JrOma&-2h%<)QL*61~Lv Y`-}30`Zv#`<@<~O18wTm<$UD;0BgBrX#fBK diff --git a/fmmdset/fmmdh.jpg b/fmmdset/fmmdh.jpg index 5826fff7283cb4d8b24211c576dbbc7b1e1d5b01..fb277021906d1ae3d37c438bc92414e82f34a5ba 100644 GIT binary patch delta 23830 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

AN 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 delta 23704 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 diff --git a/fmmdset/fmmdset.tex b/fmmdset/fmmdset.tex index 9fc26e6..e99af81 100644 --- a/fmmdset/fmmdset.tex +++ b/fmmdset/fmmdset.tex @@ -5,32 +5,50 @@ \ifthenelse {\boolean{paper}} { \begin{abstract} -This paper describes a process for analysing safety critical systems, to formally prove how safe the -designs and built -in safety measures are. It provides -the rigorous method for creating a fault effects model of a system from the bottom up using {\bc} level fault modes. +This paper describes +a methodology to analyse +safety critcal designs from a failure mode perspective. +This paper concentrates on the hierarchical model: the analysis +phases (symtom abstraction) and {\fgs} are dealt with +in \cite{symptom_ex}. + +The (Failure Mode Modular De-Composition) FMMD methodology provides +a rigorous method for creating a fault effects model of a system from the bottom up using {\bc} level fault modes. Using symptom extraction, and taking {\fgs} of components, a fault behaviour hierarchy is built, forming a fault model tree. From the fault model trees, modular re-usable sections of safety critical systems, and accurate, statistical estimation for fault frequency can be derived automatically. It provides the means to trace the causes of dangerous detected and dangerous undetected faults. +It provides the means to produce Minimal cut-sets, FTA diagrams and FMEDA models, from +a data model built by the FMMD methodology. +It has a common notation spanning mechanical, electrical and software failures, +and incorporating them into system models. It has been designed for small safety critical embedded +systems, but because of its modular and hierarchical nature, can be used to model larger systems. It is intended to be used to formally prove systems to meet EN and UL standards, including and not limited to EN298, EN61508, EN12067, EN230, UL1998. \end{abstract} } { -This chapter describes a process for analysing safety critical systems, to formally prove how safe the -designs and built -in safety measures are. It provides -the rigorous method for creating a fault effects model of a system from the bottom up using {\bc} level fault modes. +This chapter describes the Failure Mode Modular De-Composition (FMMD) +methodology to analyse +safety critcal designs from a failure mode perspective, with emphasis on building the hierarchical model.. +%Failure Mode Modular De-Composition (FMMD) +FMMD provides +a rigorous method for creating a fault effects model of a system from the bottom up using {\bc} level fault modes. Using symptom extraction, and taking {\fgs} of components, a fault behaviour hierarchy is built, forming a fault model tree. -From the fault model trees, +From the fault model trees, modular re-usable sections of safety critical systems, and accurate, statistical estimation for fault frequency can be derived automatically. It provides the means to trace the causes of dangerous detected and dangerous undetected faults. +It provides the means to produce Minimal cut-sets, FTA diagrams and FMEDA models, from +a data model built by the FMMD methodology. +It has a common notation spanning mechanical, electrical and software failures, +and incorporating them into system models. It has been designed for small safety critical embedded +systems, but because of its modular and hierarchical nature, can be used to model larger systems. It is intended to be used to formally prove systems to meet EN and UL standards, including and not limited to EN298, EN61508, EN12067, EN230, UL1998. - } @@ -40,7 +58,7 @@ EN298, EN61508, EN12067, EN230, UL1998. % described here, models a safety critical system from the bottom up. The purpose of the FMMD methodology is to apply formal techniques to -the assessment of safety critical designs, aiding in identifying detected and undetected faults +the assessment of safety critical designs, aiding in identifying detected and undetectable faults \footnote{Undetectable faults are faults which may occur but are not self~detected, or are impossible to detect by the system.}. Formal methods are just beginning to be specified in some safety standards.\footnote{Formal methods such as the Z notation appear as `highly recommended' techniques in the EN61508 standard\cite{en61508}, but @@ -152,7 +170,7 @@ This analysis and symptom collection process is described in detail in the Sympt \end{itemize} \subsubsection{An algebraic notation for identifying FMMD enitities} -Each component $C$ is a set of failure modes for the component. +Each component $C$ holds a set of failure modes for the component. We can define a function $fm$ that returns the set of failure modes $F$ for the component $C$. @@ -169,6 +187,13 @@ defined by, where C is a component and F is a set of failure modes. $$ fm ( C ) = F $$ +We can use the variable name $FG$ to represent a {\fg}. A {\fg} is a collection +of components. We thus define $FG$ as a set of components that have been chosen as members +of a {\fg}. +We can overload the $fm$ function for a functional group $FG$ +where it will return all the failure modes of the components in $FG$ + +$$ fm (FG) = F $$ %$$ \mathcal{fm}(C) \rightarrow S $$ %$$ {fm}(C) \rightarrow S $$ @@ -180,14 +205,11 @@ the abstraction level zero thus $C^0$. Should we wish to index the components Our base component (if first in the parts~list) could now be uniquely identified as $C^0_1$. -A {\fg} can use the variable name $FG$. A {\fg} is a collection -of components. We thus define $FG$ as a set of components that have been chosen as members -of a {\fg}. We can further define the abstraction level of a {\fg}. We can say that it is the maximum abstraction level of any of its components. Thus a functional group containing only base components would have an abstraction level zero and could be represented with a superscript of zero thus -$FG^0$. The functional group set may also be indexed. +`$FG^0$'. The functional group set may also be indexed. We can apply symptom abstraction to a {\fg} to find a set of derived failure modes. We are interested in the failure modes @@ -213,12 +235,12 @@ An example of a simple system will illustrate this. \subsection {Example FMEA process using an FMEA diagram} -Consider a simple {\fg} $ FG^0_1 $ derived from two base components $C^0_1,C^0_2$. +Consider a simple {\fg} $ FG^0_1 $ comprising of two base components $C^0_1,C^0_2$. We can apply $\bowtie$ to the {\fg} $FG$ -and it will return a {\dc} at abstraction level 1 (with an index of 1 for completeness) +and it will return a {\dc} at abstraction level 1 (with an index of 1 represented a as sub-script) -$$ \bowtie fm(( FG^0_1 )) = C^1_1 $$ +$$ \bowtie \big( fm(( FG^0_1 )) \big)= C^1_1 $$ to look at this analysis process in more detail. @@ -228,28 +250,39 @@ By way of example applying ${fm}$ to obtain the failure modes $f_N$ $$ {fm}(C^0_1) = \{ f_1, f_2 \} $$ $$ {fm}(C^0_2) = \{ f_3, f_4, f_5 \} $$ -And overloading $fm$ to find the flat set of failure modes from a {\fg} +And overloading $fm$ to find the flat set of failure modes from the {\fg} $FG^0_1$ - $$ {fm}{FG^0_1} = \{ s_6, s_7, s_8 \} $$ + $$ {fm}({FG^0_1}) = \{ f_1, f_2, f_3, f_4, f_5 \} $$ The symptom extraction process is now applied i.e. the analyst now considers failure modes $f_{1..5}$ in the context of the {\fg} -and determines the failure modes of the {\fg}.. +and determines the `failure symptoms' of the {\fg}. The result of this process will be a set of derived failure modes. For this example, let these be $ \{ s_6, s_7, s_8 \} $. We can now create a {\dc} $C^1_1$ with this set of failure modes. Thus: -$$ {fm}(C^1_1) = \{ s_6, s_7, s_8 \} $$ +$$ \bowtie \big( {fm}(FG^0_1) \big) = C^1_1 $$ -We can represent this analysis process in a diagram see figure \ref{fig:onestage} +and applying $fm$ to the newly derived component + +$$ fm(C^1_1) = \{ s_6, s_7, s_8 \} $$ + +By representing this analysis process in a diagram, the hierarchical nature +of the process is apparent, see figure \ref{fig:onestage}. +Each $\bowtie$ analysis phase, raises the level of failure mode abstraction. +By this we can see the failure effects becoming less specific (for instance a resistor going open) +and more about the effect that will have on a functional system (for instance `amplifier one' failing) +as the failure modes raise in abstraction level. + \begin{figure}[h] \centering \includegraphics[width=200pt,bb=0 0 268 270]{fmmdset/onestage.jpg} % onestage.jpg: 268x270 pixel, 72dpi, 9.45x9.52 cm, bb=0 0 268 270 - \caption{FMMD analysis of functional group} + %\caption{FMMD analysis of functional group} + \caption{FMMD Analysis of one functional Group: Two components form a functional group, which forms a derived component} \label{fig:onestage} \end{figure} @@ -279,19 +312,32 @@ We can represent this analysis process in a diagram see figure \ref{fig:onestage Figure \ref{fig:fmmdh} shows a hierarchy of failure mode de-composition. It can be seen that the derived fault~mode sets are higher level abstractions of the fault behaviour of the modules. -We can take this one stage further by combining the {\dc} $C^{1}_{{N}}$ sets to form {\fgs}. These +We can take this one stage further by combining the $C^{1}_{{N}}$ {\dcs} to form {\fgs}. These $FG^2_{N}$ {\fgs} can be used to create $C^3_{{N}}$ {\dcs} and so on. At the top of the hierarchy, there will be one final (where $t$ is the top level) component $C^{t}_{{N}}$ and {\em its fault modes, are the failure modes of the SYSTEM}. The causes for these system level fault~modes will be traceable down to part fault modes, traversing the tree through the lower level {\fgs} and components. -each SYSTEM level fault may have a number of paths through the +Each SYSTEM level fault may have a number of paths through the tree to different low level of base component failure modes. In FTA\cite{nucfta}\cite{nasafta} terminology, these paths through the tree are called `minimal cut sets'. -A hierarchy of levels of faults becoming more abstract at each level should -converge to a small sub-set of system level errors. +%A hierarchy of levels of faults becoming more abstract (at each level) should +%converge to a small sub-set of system level errors. +In any System there are number of general failure mode conditions. +This number will always be far smaller than the number of component +failure modes of all its components. +This is because many component level failure modes +result in the same SYSTEM level failure modes. + +%%-\subsection{ Proof of number of component~failure \\ modes preserved in hierarchy build} +%%- +%%-Here we need to prove that if there is an abstract fault, then as it goes higher in the tree, it can only collect MORE not less +%%-actual {\bc} failure modes. +As we go up through a fault hierarchy, the +number of failure modes to handle, should decrease +with each level of abstraction. This thinning out of the number of system level errors is borne out in practice; real time control systems often have a small number of major reportable faults (typically $ < 50$), @@ -305,7 +351,7 @@ manages source code trees. Because of this, it is permissible, for instance, to create a functional group from components at different levels of failure mode abstraction. -\cite{sem} +%\cite{sem} @@ -319,16 +365,12 @@ create a functional group from components at different levels of failure mode ab %\caption{Simple Euler Diagram} %\end{figure} -\cite{sem} +%\cite{sem} \section {Modelling considerations} -\subsection{ Proof of number of component~failure \\ modes preserved in hierarchy build} - -Here we need to prove that if there is an abstract fault, then as it goes higher in the tree, it can only collect MORE not less -actual {\bc} failure modes. %% This is obvious but needs a proof. %% Also this means that we may need dummy modules so as not to violate jumping up the tree structure @@ -438,7 +480,7 @@ It is useful to follow an example fault through levels of abstraction hierarchy %a dangerous/potentially fatal error. Again having a complete fault analysis tree will reveal these conditions. -\subsection{An example part Fault and its subsequent \\ abstraction to system or top level} +\subsection{An example part Fault and \\ its representation at different abstraction levels} An example of a part fault effect on the example system is given below, showing how this fault manifests itself at each abstraction level. @@ -491,8 +533,9 @@ the circuitry between the input milli-volt signal and the ADC/Microcontroller. On examining this we would probably measure the in circuit resistances and discover the faulty resistor. With the natural fault finding process, we have narrowed down until we came to -the faulty component. FMMD analysis works from the bottom~up, and this is -because it must cover all component failure modes. +the faulty component. +Because FMMD analysis works from the bottom~up, +it is possible to check that all component failure modes have been considered in the model. %% %% END CASE STUDY %% @@ -515,9 +558,11 @@ Test rigs apply a rigorous checking process to safety critical equipment before they can be sold, and this usually is a legal or contractural requirement, backed up by inspections and and an approval process. -They are usually a clamp arrangement where the PCB under test is placed. +They are usually a clamp arrangement where the PCB under test is placed over +connection points applied by gold plated sprung pins: these rigs are commonly known +as `beds of nails' \cite{garret} \cite{maikowski}. Precision and calibrated test signals are then applied to the board under test. For PCBs containing -microprocessor, custom test~rig software may be run on them to exercise +microprocessors, custom test~rig software may be run on them to exercise active sections of the PCB (for instance to drive outputs, relays etc). The main purpose of a test rig is to prevent fault equipment from being shipped. @@ -530,11 +575,12 @@ Having a fault causation tree would be useful for identifying which parts may be or simply incorrect. The test rig armed with the fault analysis tree could point to parts or combinations of parts that could be checked to correct the product. -\subsection {Modules - re-usability} +\subsection {{\dcs} - Modules - re-usability} In the example system in the introduction, the milli-volt amplifiers -are the same circuit. The set of derived faults for the module may therefore -simply be given a different index number and re-used. +use the same electronic circuit. The set of derived failure mode model for them is therefore +the same. +Thus, the derived component, for the amplifiers may be re-used, with a different index number in the model.. \subsection{ Multi Channel Safety Critical Systems }