From 4ac851a27149adf2acbd8b409d5402020c11013e Mon Sep 17 00:00:00 2001 From: Robin Clark Date: Thu, 7 Oct 2010 19:33:13 +0100 Subject: [PATCH] evening edit --- fmmd_design_aide/fmmd_design_aide.tex | 97 +++++++++++++++++++++----- fmmd_design_aide/mv_opamp_circuit.png | Bin 13725 -> 9839 bytes 2 files changed, 80 insertions(+), 17 deletions(-) diff --git a/fmmd_design_aide/fmmd_design_aide.tex b/fmmd_design_aide/fmmd_design_aide.tex index 5d954f6..9bede21 100644 --- a/fmmd_design_aide/fmmd_design_aide.tex +++ b/fmmd_design_aide/fmmd_design_aide.tex @@ -16,33 +16,42 @@ of its failure mode behaviour. { \section{Introduction} This chapter -describes how the FMMD methodology can be used to refine +describes how the FMMD methodology can be used to examine safety critical designs and identify undetectable faults. Used in this way, its is a design aide, giving the user -the possibility to model a system from the perspective +the possibility to refine/correct a {\dc} from the perspective of its failure mode behaviour. + } \section{How FMMD Analysis can reveal design flaws in failure mode detection } -A feature of FMMD analysis is symptom collection. Common symptoms are collected -after analysis, and this means that the failure modes of the {\fg} -are examined. The symptoms will be detectable (like a value of of range) +A feature of FMMD analysis is the collection of components +into a {\fg}, which is then analysed w.r.t. its failure mode behaviour. +symptom collection. +From the failure mode behaviour of the {\fg} common symptoms are collected. +These common symptoms are in effect the failure mode behaviour of +the {\fg} viewed as a single entity, or a `black box' component. +From the analysis of the {\fg} we can created a {\dc}, where the failure modes +are the symptoms of the {\fg} we derived it from. +The symptoms will be detectable (like a value of of range) or undetectable (like a logic state or value being incorrect). -The `undetectable' failure modes are the most worrying for thesafety critical designer. -It is these that are, generally the ones that stand out as single -failure modes. For instance, out of range values, we know we can cope with; they +The `undetectable' failure modes are the most worrying for the safety critical designer. +%It is these that are, generally the ones that stand out as single +%failure modes. +For instance, out of range values, we know we can cope with; they are an obvious error condition that will be detected by any modules -using the {\fg}. -i -\subsection{iterative design} +using the {\dc}. An undetecable failure mode will introduce +errors into a SYSTEM. + +\subsection{Iterative Design} By applying FMMD analysis to a {\fg} we can determine which failure -modes are detectable, and which are undetectable. -We can then either modifiy the circuit and iteratively +modes of a {\dc} are detectable, and which are undetectable. +We can then either modify the circuit and iteratively apply FMMD to the design again, or we could add another {\fg} that specifically tests for the undetectable conditions. @@ -54,25 +63,79 @@ paper { chapter } -describes a milli-volt amplifier, with an inbuilt safety\footnote{The `safety resistor also acts as a potential divider to provide a mill-volt offset} +describes a milli-volt amplifier (see R18 in figure \ref{fig:mv1}), with an inbuilt safety\footnote{The `safety resistor' also acts +as a potential divider to provide a mill-volt offset. An offset is often required to allow for negative readings form the +milli-volt source being read} resistor. The circuit is analysed and it is found that all but one component failure modes are detectable. We then design a circuit to test for the `undetectable' failure mode and analyse this with FMMD. With both {\dcs} we then use them to form a {\fg} which we can call our `self testing milli-volt amplifier'. -We then analsye the {\fg} and the resultant {\dc} failure modes descussed. +We then analsye the {\fg} and the resultant {\dc} failure modes are discussed. \section{An example: A Millivolt Amplifier} \begin{figure}[h] \centering \includegraphics[width=200pt,bb=0 0 678 690,keepaspectratio=true]{./mv_opamp_circuit.png} % mv_opamp_circuit.png: 678x690 pixel, 72dpi, 23.92x24.34 cm, bb=0 0 678 690 - \caption{Milli-Volt Amplifier with Offset} - \label{fig:mvamp} + \caption{Milli-Volt Amplifier with Safety/Offset Resistor} + \label{fig:mv1} \end{figure} +\subsection{Brief Circuit Description} + +This circuit amplifies a milli-volt input by a gain of $\approx$ 184 ($\frac{150E3}{820}+1$). +An offset is applied to the input by R18 and R22 forming a potential divider +of $\frac{820}{2.2E6+820}$. Will 5V applied as Vcc this gives an input offset of 1.86mV. +So the amplified offset is $\approx 342mV$. We can determine the output of the amplifier +by subtracting this amount from the reading. We can also define an acceptable +range for the readings. This would depend on the milli-volt source, and also on the +detectability of the error volatges. + +EXPAND + \section{FMMD Analysis} + + + +\begin{table}[h+] +\caption{Milli Volt Amplifier // Single Fault FMMD} % title of Table +\centering % used for centering table +\begin{tabular}{||l|c|c|l|l||} +\hline \hline + \textbf{Test} & \textbf{Failure } & \textbf{Symptom } & \textbf{MTTF} \\ + \textbf{Case} & \textbf{mode} & \textbf{ } & \textbf{per $10^9$ hours of operation} \\ +% R & wire & res + & res - & description +\hline +\hline +TC:1 $R18$ SHORT & Amp plus input high & Out of range & 1.38 \\ \hline +TC:2 $R18$ OPEN & No Offset Voltage & Low reading & 12.42\\ \hline + \hline +TC:3 $R22$ SHORT & No offset voltage & Low reading & 1.38 \\ \hline +TC:4 $R22$ OPEN & Amp plus high input & Out of Range & 1.38 \\ \hline +\hline +TC:5 $R26$ SHORT & No gain from amp & Out of Range & 1.38 \\ +TC:6 $R26$ OPEN & Very high amp gain & Out of Range & 12.42 \\ \hline +\hline +TC:5 $R30$ SHORT & Very high amp gain & Out of range & 1.38 \\ +TC:6 $R30$ OPEN & No gain from amp & Out of Range & 12.42 \\ \hline +\hline +TC:7 $OP\_AMP$ LATCH UP & high amp output & Out of range & 1.38 \\ +TC:8 $OP\_AMP$ LATCH DOWN & low amp output & Out of Range & 12.42 \\ \hline + +\end{tabular} +\label{tab:fmmdaide1} +\end{table} + +The table \ref{tab:fmmdaide1} shows two possible causes for an undetectable +error, that of a low reading due to the loss of the offset millivolt signal. +Typically this type of circuit would be used to read a thermocouple +and this erro symptom, "LOW READING" would mean our plant could +beleive that the temperature reading is lower than it actually is. +To take an example from a K type thermocouple, the offset of 1.86mV +from the potential divider represents about 46oC. + \subsection{Undetected Failure Mode: Incorrect Reading} Although statistically, this failure is unlikely (get stats for R short FIT etc from pt100 doc) diff --git a/fmmd_design_aide/mv_opamp_circuit.png b/fmmd_design_aide/mv_opamp_circuit.png index a26b8abcf775ae6cf70bb679eba28d34eb2b25f8..ca9d7b461d7982611a6f66e92bd384a0ae43711c 100644 GIT binary patch literal 9839 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