...
This commit is contained in:
parent
1f774d0c33
commit
b0641dbd01
@ -131,10 +131,12 @@ It is used both as a design tool (to determine weaknesses), and is a requirement
|
|||||||
FMEA has been successfully applied to mechanical, electrical and hybrid electro-mechanical systems.
|
FMEA has been successfully applied to mechanical, electrical and hybrid electro-mechanical systems.
|
||||||
|
|
||||||
|
|
||||||
This paper discusses the benefits and drawback of current
|
This paper discusses the benefits and drawbacks of current
|
||||||
FMEA techniques and then proposes a modular FMEA methodology, Failure Mode Modular De-Composition (FMMD)~\cite{clark}
|
FMEA techniques and then proposes a modular FMEA methodology,
|
||||||
that has the advantages of traceable failure modes through the model
|
Failure Mode Modular De-Composition (FMMD)~\cite{clark}
|
||||||
hierarchy, increases test effeciency and has
|
that has the advantages modularity, traceable failure modes throughout the model
|
||||||
|
hierarchy, increases test efficiency.
|
||||||
|
and has
|
||||||
the ability to model integrated hardware and software systems.
|
the ability to model integrated hardware and software systems.
|
||||||
|
|
||||||
% Work on software FMEA (SFMEA) is beginning, but
|
% Work on software FMEA (SFMEA) is beginning, but
|
||||||
@ -153,9 +155,10 @@ the ability to model integrated hardware and software systems.
|
|||||||
% reaches conclusions about the effectiveness and failure mode
|
% reaches conclusions about the effectiveness and failure mode
|
||||||
% coverage of the combined FMEA techniques.
|
% coverage of the combined FMEA techniques.
|
||||||
|
|
||||||
This paper presents a simple worked example of FMMD applied to an
|
This paper presents a small worked example of FMMD applied to an
|
||||||
integrated electronics/software system, the industry standard
|
integrated electronics/software system.
|
||||||
{\ft} signalling loop.
|
%, the industry standard
|
||||||
|
%{\ft} signalling loop.
|
||||||
%
|
%
|
||||||
} % abstract
|
} % abstract
|
||||||
|
|
||||||
@ -166,12 +169,14 @@ integrated electronics/software system, the industry standard
|
|||||||
%FMEA methodologies trace from the 1940's and were designed to
|
%FMEA methodologies trace from the 1940's and were designed to
|
||||||
%model simple electro-mechanical systems.
|
%model simple electro-mechanical systems.
|
||||||
%
|
%
|
||||||
FMEA methodologies were originally in the 1940's designed to
|
FMEA methodologies were originally designed in the 1940's to
|
||||||
model simple electro-mechanical systems.
|
model simple electro-mechanical systems.
|
||||||
%
|
%
|
||||||
Because the early systems analysed by FMEA were relatively simple,
|
Because those early systems were relatively simple,
|
||||||
modern FMEA methodologies follow this paradigm and
|
%modern FMEA methodologies follow this paradigm and
|
||||||
trace component failure modes to system level failures.
|
they traced component failure modes directly to system level failures.
|
||||||
|
There were no concepts of modularity and no inclusion of
|
||||||
|
software elements.
|
||||||
%
|
%
|
||||||
%This paper explores the historical reasons why FMEA is performed in the way it is currently and
|
%This paper explores the historical reasons why FMEA is performed in the way it is currently and
|
||||||
%the new factors placing higher demands upon it.
|
%the new factors placing higher demands upon it.
|
||||||
@ -180,9 +185,11 @@ Software generally sits on top of most modern safety critical control systems
|
|||||||
and defines its most important system wide behaviour and communications.
|
and defines its most important system wide behaviour and communications.
|
||||||
%
|
%
|
||||||
Currently standards that demand FMEA investigations for hardware(HFMEA) (e.g. EN298, EN61508),
|
Currently standards that demand FMEA investigations for hardware(HFMEA) (e.g. EN298, EN61508),
|
||||||
do not specify it for software, but instead specify good practise,
|
do not specify it for software but instead, specify good practise,
|
||||||
review processes and language feature constraints.
|
review processes and language feature constraints.
|
||||||
%
|
%
|
||||||
|
Failure modes from low level hardware elements are not traced through into the software models.
|
||||||
|
%
|
||||||
This is a weakness.
|
This is a weakness.
|
||||||
%
|
%
|
||||||
Where HFMEA % scientifically
|
Where HFMEA % scientifically
|
||||||
@ -194,19 +201,19 @@ in several forms.
|
|||||||
%
|
%
|
||||||
However, SFMEA is always performed separately from HFMEA.
|
However, SFMEA is always performed separately from HFMEA.
|
||||||
%
|
%
|
||||||
This paper seeks to examine the effectiveness of current and proposed SFMEA
|
% This paper seeks to examine the effectiveness of current and proposed SFMEA
|
||||||
techniques, by analysing a simple hybrid hardware/software system,
|
% techniques, by analysing a simple hybrid hardware/software system,
|
||||||
which is in common use and has mature field experience. %
|
% which is in common use and has mature field experience. %
|
||||||
%analysing the chosen example, which is well known and understood
|
% %analysing the chosen example, which is well known and understood
|
||||||
%
|
|
||||||
Because the chosen example is well understood it is
|
|
||||||
%, this example is
|
|
||||||
useful
|
|
||||||
to compare the results from these FMEA methodologies with
|
|
||||||
the known failure mode behaviour.
|
|
||||||
%from years of field experience, and determining how well the HFMEA and SFMEA
|
|
||||||
%analysis reports model the failure mode behaviour.
|
|
||||||
% %
|
% %
|
||||||
|
% Because the chosen example is well understood it is
|
||||||
|
% %, this example is
|
||||||
|
% useful
|
||||||
|
% to compare the results from these FMEA methodologies with
|
||||||
|
% the known failure mode behaviour.
|
||||||
|
% %from years of field experience, and determining how well the HFMEA and SFMEA
|
||||||
|
% %analysis reports model the failure mode behaviour.
|
||||||
|
% % %
|
||||||
%If software and hardware integrated FMEA were possible, electro-mechanical-software hybrids could
|
%If software and hardware integrated FMEA were possible, electro-mechanical-software hybrids could
|
||||||
%be modelled, and so we could consider `complete' failure mode models.
|
%be modelled, and so we could consider `complete' failure mode models.
|
||||||
%
|
%
|
||||||
@ -286,9 +293,13 @@ was designed.
|
|||||||
\subsection{Reasoning distance.}
|
\subsection{Reasoning distance.}
|
||||||
\label{reasoningdistance}
|
\label{reasoningdistance}
|
||||||
%\fmmdglossRD
|
%\fmmdglossRD
|
||||||
|
To perform FMEA, the effects of a component failure mode are examined
|
||||||
|
with respect to other components in the system; and from this behaviour
|
||||||
|
a system level failure or effect is determined.
|
||||||
|
%
|
||||||
Reasoning distance, is the number of stages of logic and reasoning used
|
Reasoning distance, is the number of stages of logic and reasoning used
|
||||||
in {\fm} analysis to map a failure cause to its potential outcomes; counted
|
in {\fm} analysis to map a failure cause to its potential outcomes; counted
|
||||||
by the number of {\fm} to component checks made.
|
by the number of {\fm} to other component checks made.
|
||||||
%
|
%
|
||||||
%The basic FMEA example in section~\ref{basicfmea}
|
%The basic FMEA example in section~\ref{basicfmea}
|
||||||
%considered one {\fm} against some of the components in the milli-volt reader.
|
%considered one {\fm} against some of the components in the milli-volt reader.
|
||||||
@ -296,9 +307,9 @@ by the number of {\fm} to component checks made.
|
|||||||
To create an exhaustive FMEA report every
|
To create an exhaustive FMEA report every
|
||||||
known failure mode of every component
|
known failure mode of every component
|
||||||
within the system would have to be examined against all its other components.
|
within the system would have to be examined against all its other components.
|
||||||
%
|
% %
|
||||||
`Reasoning~distance', for one {\fm}, is defined as the number of components checked against it
|
% `Reasoning~distance', for one {\fm}, is defined as the number of components checked against it
|
||||||
to determine its system level symptom(s).
|
% to determine its system level symptom(s).
|
||||||
%
|
%
|
||||||
No current FMEA variant gives guidelines for the components that should
|
No current FMEA variant gives guidelines for the components that should
|
||||||
be included to analyse a {\fm} in a system.
|
be included to analyse a {\fm} in a system.
|
||||||
@ -306,7 +317,7 @@ be included to analyse a {\fm} in a system.
|
|||||||
Were a particular {\fm} examined against all the other components in a system
|
Were a particular {\fm} examined against all the other components in a system
|
||||||
this would give us the maximum reasoning distance.
|
this would give us the maximum reasoning distance.
|
||||||
%
|
%
|
||||||
This is termed the exhaustive FMEA case for a single {\fm}.
|
This is termed the exhaustive FMEA (XFMEA) case for a single {\fm}.
|
||||||
%does not
|
%does not
|
||||||
% The exhaustive~reasoning~distance would be
|
% The exhaustive~reasoning~distance would be
|
||||||
% the sum of the number of failure modes, against all other components
|
% the sum of the number of failure modes, against all other components
|
||||||
@ -358,8 +369,8 @@ For instance should the signal path be followed, with all components encountere
|
|||||||
\paragraph{Exhaustive Single Failure FMEA.}
|
\paragraph{Exhaustive Single Failure FMEA.}
|
||||||
%\fmmdglossXFMEA
|
%\fmmdglossXFMEA
|
||||||
%
|
%
|
||||||
To perform exhaustive FMEA (XFMEA), every possible interaction
|
To XFMEA, every possible interaction
|
||||||
of a failure mode with all other components in a system must be examined.
|
of a failure mode with all other components in a system would have to be examined.
|
||||||
%
|
%
|
||||||
Or in other words, all possible failure scenarios considered.
|
Or in other words, all possible failure scenarios considered.
|
||||||
%
|
%
|
||||||
@ -411,7 +422,8 @@ Current FMEA methodologies cannot consider---for the reason of state explosion--
|
|||||||
%
|
%
|
||||||
%\fmmdglossSTATEEX
|
%\fmmdglossSTATEEX
|
||||||
%
|
%
|
||||||
Because for practical reasons, XFMEA cannot be performed for anything other than a trivial system,
|
%Because for practical reasons,
|
||||||
|
In practical terms XFMEA cannot be performed for anything other than a trivial system,
|
||||||
reliance is placed upon experts on the system under investigation
|
reliance is placed upon experts on the system under investigation
|
||||||
to perform a meaningful analysis.
|
to perform a meaningful analysis.
|
||||||
%
|
%
|
||||||
@ -457,19 +469,25 @@ Typical examples include voltage regulators, op-amps, micro-controllers~\cite{p
|
|||||||
protocol handlers~\cite{mcp2515}. To build any of these component from scratch would be very expensive and time consuming,
|
protocol handlers~\cite{mcp2515}. To build any of these component from scratch would be very expensive and time consuming,
|
||||||
but these IC `components' have very high internal transistor counts, and each have their own unique
|
but these IC `components' have very high internal transistor counts, and each have their own unique
|
||||||
failure mode behaviour.
|
failure mode behaviour.
|
||||||
Thus modern electronics has already jumped the gun of the base component failure mode mapped to
|
Thus modern electronics has already become too large in scope to sensibly implement the base component failure mode directly mapped to
|
||||||
a system failure paradigm.
|
a system failure paradigm.
|
||||||
|
|
||||||
The automotive industry, because of mass production, must make products that are very safe but
|
The automotive industry, because of mass production, must make products that have high safety integrity %that are very safe but
|
||||||
financial pressure keeps their products affordable.
|
% financial pressure keeps their products
|
||||||
|
but must also be affordable.
|
||||||
%
|
%
|
||||||
This leads to specialist firms producing modules, such as automatic braking systems,
|
This leads to specialist firms producing modules, such as automatic braking systems,
|
||||||
that are assembled to make a automobile.
|
that are bought in and assembled to make a automobile.
|
||||||
%
|
%
|
||||||
Performing failure analysis using the basic component single failure modes to
|
Performing failure analysis using the basic component single failure modes to
|
||||||
system failure mapping, would be very difficult: this would require expert knowledge
|
system failure mapping, would be very difficult: this would require expert knowledge
|
||||||
of the design behaviour and component types used in each module.
|
of the design behaviour and component types used in each module.
|
||||||
%
|
%
|
||||||
|
Because modern systems have become more complex and now include software elements modularity
|
||||||
|
of some form, has become necessary to break down the state explosion problems associated with FMEA.
|
||||||
|
%
|
||||||
|
Some modular techniques are starting to be used, and are described below.
|
||||||
|
|
||||||
\paragraph{Automotive SIL (ASIL) --- modularisation of FMEDA}
|
\paragraph{Automotive SIL (ASIL) --- modularisation of FMEDA}
|
||||||
%
|
%
|
||||||
The EN61508 variant for automotive use, as defined in standard ISO~26262, is known as Automotive SIL (ASIL)~\cite{Kafka20122}.
|
The EN61508 variant for automotive use, as defined in standard ISO~26262, is known as Automotive SIL (ASIL)~\cite{Kafka20122}.
|
||||||
@ -501,9 +519,10 @@ have defined mechanisms for ensuring that all failure modes
|
|||||||
from a module must be considered in the analysis of the module(s)
|
from a module must be considered in the analysis of the module(s)
|
||||||
that incorporate it.
|
that incorporate it.
|
||||||
|
|
||||||
Because FMEA is a bottom up technique, applying a top down analysis (as in FMECAs indenture levels)
|
\paragraph{Top Down or Bottom-up?}
|
||||||
cannot guarantee to consider all component failure modes in the correct context.
|
% Because FMEA is a bottom up technique, applying a top down analysis (as in FMECAs indenture levels)
|
||||||
%
|
% cannot guarantee to consider all component failure modes in the correct context.
|
||||||
|
% %
|
||||||
A top down approach (such as FTA) can miss~\cite{faa}[Ch.~9] individual failure modes of components,
|
A top down approach (such as FTA) can miss~\cite{faa}[Ch.~9] individual failure modes of components,
|
||||||
especially where there are non-obvious or unexpected top-level failures.
|
especially where there are non-obvious or unexpected top-level failures.
|
||||||
%
|
%
|
||||||
@ -589,12 +608,12 @@ we have yet another layer of complication.
|
|||||||
%we need to re-think the
|
%we need to re-think the
|
||||||
%FMEA concept of simply mapping a base component failure to a system level event.
|
%FMEA concept of simply mapping a base component failure to a system level event.
|
||||||
%
|
%
|
||||||
SFMEA regards, in place of hardware components, the variables used by the programs to be their equivalent~\cite{procsfmea}.
|
% SFMEA regards, in place of hardware components, the variables used by the programs to be their equivalent~\cite{procsfmea}.
|
||||||
The failure modes of these variables, are that they could become erroneously over-written,
|
% The failure modes of these variables, are that they could become erroneously over-written,
|
||||||
calculated incorrectly (due to a mistake by the programmer, or a fault in the micro-processor on which it is running), or
|
% calculated incorrectly (due to a mistake by the programmer, or a fault in the micro-processor on which it is running), or
|
||||||
external influences such as
|
% external influences such as
|
||||||
ionising radiation causing bits to be erroneously altered.
|
% ionising radiation causing bits to be erroneously altered.
|
||||||
|
It is desirable to trace failure modes effects through the hardware and software interfaces.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -648,7 +667,8 @@ in an improved FMEA methodology,
|
|||||||
\label{fmmdproc}
|
\label{fmmdproc}
|
||||||
%
|
%
|
||||||
%% One line
|
%% One line
|
||||||
The idea is to modularise from the bottom-up, by choosing groups of components that
|
The basic concept of FMMD is to modularise FMEA from the bottom-up: b
|
||||||
|
y choosing groups of components that
|
||||||
work together to perform a given function: the failure modes of the components
|
work together to perform a given function: the failure modes of the components
|
||||||
are considered, and a failure mode behaviour for the group determined: this group
|
are considered, and a failure mode behaviour for the group determined: this group
|
||||||
can now be used as a component in its own right with a set of failure modes.
|
can now be used as a component in its own right with a set of failure modes.
|
||||||
@ -783,356 +803,356 @@ applying FMMD means deciding on the members for {\fgs} and the subsequent hierar
|
|||||||
%
|
%
|
||||||
%
|
%
|
||||||
\section{Example for analysis} % : How can we apply FMEA}
|
\section{Example for analysis} % : How can we apply FMEA}
|
||||||
|
% %
|
||||||
|
% For the purpose of example, a simple common safety critical industrial circuit has been chosen
|
||||||
|
% that is nearly always used in conjunction with a programmatic element.
|
||||||
|
% A common method for delivering a quantitative value in analogue electronics is
|
||||||
|
% to supply a current signal to represent the value to be sent~\cite{aoe}[p.934].
|
||||||
|
% Usually, $4mA$ represents a zero or starting value and $20mA$ represents the full scale,
|
||||||
|
% and this is referred to as {\ft} signalling.
|
||||||
|
% %
|
||||||
|
% {\ft} has an electrical advantage as well because the current in an electronic loop is constant~\cite{aoe}[p.20].
|
||||||
|
% Thus resistance in the wires between the source and the receiving end is not an issue
|
||||||
|
% that can alter the accuracy of the signal.
|
||||||
|
% %
|
||||||
|
% This circuit has many advantages for safety. If the signal becomes disconnected
|
||||||
|
% it reads an out of range $0mA$ at the receiving end. This is outside the {\ft} range,
|
||||||
|
% and is therefore easy to detect as an error rather than an incorrect value.
|
||||||
|
% %
|
||||||
|
% Should the driving electronics go wrong at the source end, it will usually
|
||||||
|
% supply far too little or far too much current, making an error condition easy to detect.
|
||||||
|
% %
|
||||||
|
% At the receiving end, one needs a resistor to convert the
|
||||||
|
% current signal into a voltage that we can read with an ADC.%
|
||||||
|
% %we only require one simple component to convert the
|
||||||
%
|
%
|
||||||
For the purpose of example, a simple common safety critical industrial circuit has been chosen
|
|
||||||
that is nearly always used in conjunction with a programmatic element.
|
|
||||||
A common method for delivering a quantitative value in analogue electronics is
|
|
||||||
to supply a current signal to represent the value to be sent~\cite{aoe}[p.934].
|
|
||||||
Usually, $4mA$ represents a zero or starting value and $20mA$ represents the full scale,
|
|
||||||
and this is referred to as {\ft} signalling.
|
|
||||||
%
|
%
|
||||||
{\ft} has an electrical advantage as well because the current in an electronic loop is constant~\cite{aoe}[p.20].
|
% %BLOCK DIAGRAM HERE WITH FT CIRCUIT LOOP
|
||||||
Thus resistance in the wires between the source and the receiving end is not an issue
|
|
||||||
that can alter the accuracy of the signal.
|
|
||||||
%
|
%
|
||||||
This circuit has many advantages for safety. If the signal becomes disconnected
|
% \begin{figure}[h]
|
||||||
it reads an out of range $0mA$ at the receiving end. This is outside the {\ft} range,
|
% \centering
|
||||||
and is therefore easy to detect as an error rather than an incorrect value.
|
% \includegraphics[width=230pt]{./ftcontext.png}
|
||||||
|
% % ftcontext.png: 767x385 pixel, 72dpi, 27.06x13.58 cm, bb=0 0 767 385
|
||||||
|
% \caption{Context Diagram for {\ft} loop}
|
||||||
|
% \label{fig:ftcontext}
|
||||||
|
% \end{figure}
|
||||||
%
|
%
|
||||||
Should the driving electronics go wrong at the source end, it will usually
|
|
||||||
supply far too little or far too much current, making an error condition easy to detect.
|
|
||||||
%
|
%
|
||||||
At the receiving end, one needs a resistor to convert the
|
% The diagram in figure~\ref{fig:ftcontext} shows some equipment which is sending a {\ft}
|
||||||
current signal into a voltage that we can read with an ADC.%
|
% signal to a micro-controller system.
|
||||||
%we only require one simple component to convert the
|
% The signal is locally driven over a load resistor, and then read into the micro-controller via
|
||||||
|
% an ADC and its multiplexer.
|
||||||
|
% With the voltage detected at the ADC the multiplexer we read the intended quantitative
|
||||||
%BLOCK DIAGRAM HERE WITH FT CIRCUIT LOOP
|
% value from the external equipment.
|
||||||
|
|
||||||
\begin{figure}[h]
|
|
||||||
\centering
|
|
||||||
\includegraphics[width=230pt]{./ftcontext.png}
|
|
||||||
% ftcontext.png: 767x385 pixel, 72dpi, 27.06x13.58 cm, bb=0 0 767 385
|
|
||||||
\caption{Context Diagram for {\ft} loop}
|
|
||||||
\label{fig:ftcontext}
|
|
||||||
\end{figure}
|
|
||||||
|
|
||||||
|
|
||||||
The diagram in figure~\ref{fig:ftcontext} shows some equipment which is sending a {\ft}
|
|
||||||
signal to a micro-controller system.
|
|
||||||
The signal is locally driven over a load resistor, and then read into the micro-controller via
|
|
||||||
an ADC and its multiplexer.
|
|
||||||
With the voltage detected at the ADC the multiplexer we read the intended quantitative
|
|
||||||
value from the external equipment.
|
|
||||||
|
|
||||||
\subsection{Simple Software Example}
|
\subsection{Simple Software Example}
|
||||||
|
|
||||||
|
|
||||||
Consider a software function that reads a {\ft} input, and returns a value between 0 and 999 (i.e. per mil $\permil$)
|
% Consider a software function that reads a {\ft} input, and returns a value between 0 and 999 (i.e. per mil $\permil$)
|
||||||
representing the value intended by the current detected, with an additional error indication flag to indicate the validity
|
% representing the value intended by the current detected, with an additional error indication flag to indicate the validity
|
||||||
of the value returned.
|
% of the value returned.
|
||||||
|
% %
|
||||||
|
% This example straddles the hardware software interface, but is not overly complex, which allows
|
||||||
|
% the FMEA seamless failure modelling of FMMD to be demonstrated.
|
||||||
|
% %
|
||||||
|
% A complete
|
||||||
|
% PID based temperature controller is modelled in~\cite{clark}[6.3].
|
||||||
|
% %
|
||||||
|
% Let us assume the {\ft} detection is via a \ohms{220} resistor, and that we read a voltage
|
||||||
|
% from an ADC into the software.
|
||||||
|
% Let us define any value outside the 4mA to 20mA range as an error condition.
|
||||||
|
% %
|
||||||
|
% As a voltage, we use ohms law~\cite{aoe} to determine the voltage ranges: $V=IR$, $$0.004A * \ohms{220} = 0.88V $$
|
||||||
|
% and $$0.020A * \ohms{220} = 4.4V \;.$$
|
||||||
|
% %
|
||||||
|
% Our acceptable voltage range is therefore
|
||||||
|
% %
|
||||||
|
% $$(V \ge 0.88) \wedge (V \le 4.4) \; .$$
|
||||||
%
|
%
|
||||||
This example straddles the hardware software interface, but is not overly complex, which allows
|
% This voltage range forms our input requirement.
|
||||||
the FMEA seamless failure modelling of FMMD to be demonstrated.
|
% %
|
||||||
|
% We can now examine a software function that performs a conversion from the voltage read to
|
||||||
|
% a per~mil representation of the {\ft} input current.
|
||||||
|
% %
|
||||||
|
% For the purpose of example the `C' programming language~\cite{DBLP:books/ph/KernighanR88} is
|
||||||
|
% used\footnote{ C coding examples use the Misra~\cite{misra} and SIL-3 recommended language constraints~\cite{en61508}.}.
|
||||||
|
% We initially assume a function \textbf{read\_ADC} which returns a floating point %double precision
|
||||||
|
% value representing the voltage read (see code sample in figure~\ref{fig:code_read_4_20_input}).
|
||||||
%
|
%
|
||||||
A complete
|
|
||||||
PID based temperature controller is modelled in~\cite{clark}[6.3].
|
|
||||||
%
|
%
|
||||||
Let us assume the {\ft} detection is via a \ohms{220} resistor, and that we read a voltage
|
% %%{\vbox{
|
||||||
from an ADC into the software.
|
% \begin{figure}[h+]
|
||||||
Let us define any value outside the 4mA to 20mA range as an error condition.
|
|
||||||
%
|
%
|
||||||
As a voltage, we use ohms law~\cite{aoe} to determine the voltage ranges: $V=IR$, $$0.004A * \ohms{220} = 0.88V $$
|
% \footnotesize
|
||||||
and $$0.020A * \ohms{220} = 4.4V \;.$$
|
% \begin{verbatim}
|
||||||
|
% /***********************************************/
|
||||||
|
% /* read_4_20_input() */
|
||||||
|
% /***********************************************/
|
||||||
|
% /* Software function to read 4mA to 20mA input */
|
||||||
|
% /* returns a value from 0-999 proportional */
|
||||||
|
% /* to the current input. */
|
||||||
|
% /***********************************************/
|
||||||
|
% int read_4_20_input ( int * value ) {
|
||||||
|
% double input_volts;
|
||||||
|
% int error_flag;
|
||||||
%
|
%
|
||||||
Our acceptable voltage range is therefore
|
% /* set ADC MUX with input to read from */
|
||||||
|
% input_volts = read_ADC(INPUT_4_20_mA);
|
||||||
%
|
%
|
||||||
$$(V \ge 0.88) \wedge (V \le 4.4) \; .$$
|
% if ( input_volts < 0.88 || input_volts > 4.4 ) {
|
||||||
|
% error_flag = 1; /* Error flag set to TRUE */
|
||||||
This voltage range forms our input requirement.
|
|
||||||
%
|
|
||||||
We can now examine a software function that performs a conversion from the voltage read to
|
|
||||||
a per~mil representation of the {\ft} input current.
|
|
||||||
%
|
|
||||||
For the purpose of example the `C' programming language~\cite{DBLP:books/ph/KernighanR88} is
|
|
||||||
used\footnote{ C coding examples use the Misra~\cite{misra} and SIL-3 recommended language constraints~\cite{en61508}.}.
|
|
||||||
We initially assume a function \textbf{read\_ADC} which returns a floating point %double precision
|
|
||||||
value representing the voltage read (see code sample in figure~\ref{fig:code_read_4_20_input}).
|
|
||||||
|
|
||||||
|
|
||||||
%%{\vbox{
|
|
||||||
\begin{figure}[h+]
|
|
||||||
|
|
||||||
\footnotesize
|
|
||||||
\begin{verbatim}
|
|
||||||
/***********************************************/
|
|
||||||
/* read_4_20_input() */
|
|
||||||
/***********************************************/
|
|
||||||
/* Software function to read 4mA to 20mA input */
|
|
||||||
/* returns a value from 0-999 proportional */
|
|
||||||
/* to the current input. */
|
|
||||||
/***********************************************/
|
|
||||||
int read_4_20_input ( int * value ) {
|
|
||||||
double input_volts;
|
|
||||||
int error_flag;
|
|
||||||
|
|
||||||
/* set ADC MUX with input to read from */
|
|
||||||
input_volts = read_ADC(INPUT_4_20_mA);
|
|
||||||
|
|
||||||
if ( input_volts < 0.88 || input_volts > 4.4 ) {
|
|
||||||
error_flag = 1; /* Error flag set to TRUE */
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
*value = (input_volts - 0.88) * ( 4.4 - 0.88 ) * 999.0;
|
|
||||||
error_flag = 0; /* indicate current input in range */
|
|
||||||
}
|
|
||||||
/* ensure: value is proportional (0-999) to the
|
|
||||||
4 to 20mA input */
|
|
||||||
return error_flag;
|
|
||||||
}
|
|
||||||
\end{verbatim}
|
|
||||||
% }
|
% }
|
||||||
|
% else {
|
||||||
|
% *value = (input_volts - 0.88) * ( 4.4 - 0.88 ) * 999.0;
|
||||||
|
% error_flag = 0; /* indicate current input in range */
|
||||||
% }
|
% }
|
||||||
|
% /* ensure: value is proportional (0-999) to the
|
||||||
|
% 4 to 20mA input */
|
||||||
|
% return error_flag;
|
||||||
|
% }
|
||||||
|
% \end{verbatim}
|
||||||
|
% %}
|
||||||
|
% %}
|
||||||
|
|
||||||
\caption{Software Function: \textbf{read\_4\_20\_input}}
|
% \caption{Software Function: \textbf{read\_4\_20\_input}}
|
||||||
\label{fig:code_read_4_20_input}
|
% \label{fig:code_read_4_20_input}
|
||||||
%\label{fig:420i}
|
% %\label{fig:420i}
|
||||||
\end{figure}
|
% \end{figure}
|
||||||
|
%
|
||||||
We now look at the function called by \textbf{read\_4\_20\_input}, \textbf{read\_ADC}, which returns a
|
% We now look at the function called by \textbf{read\_4\_20\_input}, \textbf{read\_ADC}, which returns a
|
||||||
voltage for a given ADC channel.
|
% voltage for a given ADC channel.
|
||||||
|
% %
|
||||||
|
% This function
|
||||||
|
% deals directly with the hardware in the micro-controller on which we are running the software.
|
||||||
|
% %
|
||||||
|
% Its job is to select the correct channel (ADC multiplexer) and then to initiate a
|
||||||
|
% conversion by setting an ADC 'go' bit (see code sample in figure~\ref{fig:code_read_ADC}).
|
||||||
|
% %
|
||||||
|
% It takes the raw ADC reading and converts it into a
|
||||||
|
% floating point\footnote{the type `double' or `double precision' is a
|
||||||
|
% standard C language floating point type~\cite{DBLP:books/ph/KernighanR88}.}
|
||||||
|
% voltage value.
|
||||||
%
|
%
|
||||||
This function
|
|
||||||
deals directly with the hardware in the micro-controller on which we are running the software.
|
|
||||||
%
|
%
|
||||||
Its job is to select the correct channel (ADC multiplexer) and then to initiate a
|
|
||||||
conversion by setting an ADC 'go' bit (see code sample in figure~\ref{fig:code_read_ADC}).
|
|
||||||
%
|
%
|
||||||
It takes the raw ADC reading and converts it into a
|
|
||||||
floating point\footnote{the type `double' or `double precision' is a
|
|
||||||
standard C language floating point type~\cite{DBLP:books/ph/KernighanR88}.}
|
|
||||||
voltage value.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
%{\vbox{
|
%{\vbox{
|
||||||
\begin{figure}[h+]
|
% \begin{figure}[h+]
|
||||||
|
|
||||||
\footnotesize
|
|
||||||
\begin{verbatim}
|
|
||||||
/***********************************************/
|
|
||||||
/* read_ADC() */
|
|
||||||
/***********************************************/
|
|
||||||
/* Software function to read voltage from a */
|
|
||||||
/* specified ADC MUX channel */
|
|
||||||
/* Assume 10 ADC MUX channels 0..9 */
|
|
||||||
/* ADC_CHAN_RANGE = 9 */
|
|
||||||
/* Assume ADC is 12 bit and ADCRANGE = 4096 */
|
|
||||||
/* returns voltage read as double precision */
|
|
||||||
/***********************************************/
|
|
||||||
double read_ADC( int channel ) {
|
|
||||||
int timeout = 0;
|
|
||||||
|
|
||||||
/* return out of range result */
|
|
||||||
/* if invalid channel selected */
|
|
||||||
if ( channel > ADC_CHAN_RANGE )
|
|
||||||
return -2.0;
|
|
||||||
/* set the multiplexer to the desired channel */
|
|
||||||
ADCMUX = channel;
|
|
||||||
ADCGO = 1; /* initiate ADC conversion hardware */
|
|
||||||
/* wait for ADC conversion with timeout */
|
|
||||||
while ( ADCGO == 1 || timeout < 100 )
|
|
||||||
timeout++;
|
|
||||||
if ( timeout < 100 )
|
|
||||||
dval = (double) ADCOUT * 5.0 / ADCRANGE;
|
|
||||||
else
|
|
||||||
dval = -1.0; /* indicate invalid reading */
|
|
||||||
/* return voltage as a floating point value */
|
|
||||||
/* ensure: value is voltage input to within 0.1% */
|
|
||||||
return dval;
|
|
||||||
}
|
|
||||||
\end{verbatim}
|
|
||||||
\caption{Software Function: \textbf{read\_ADC}}
|
|
||||||
\label{fig:code_read_ADC}
|
|
||||||
\end{figure}
|
|
||||||
%}
|
|
||||||
%}
|
|
||||||
|
|
||||||
|
|
||||||
We now have a very simple software structure, a call tree, where {\em read\_4\_20\_input}
|
|
||||||
calls {\em read\_ADC}, which in turn interacts with the hardware/electronics.
|
|
||||||
%shown in figure~\ref{fig:ct1}.
|
|
||||||
%
|
%
|
||||||
% \begin{figure}[h]
|
% \footnotesize
|
||||||
% \centering
|
% \begin{verbatim}
|
||||||
% \includegraphics[width=56pt]{./ct1.png}
|
% /***********************************************/
|
||||||
% % ct1.png: 151x224 pixel, 72dpi, 5.33x7.90 cm, bb=0 0 151 224
|
% /* read_ADC() */
|
||||||
% \caption{Call tree for software example}
|
% /***********************************************/
|
||||||
% \label{fig:ct1}
|
% /* Software function to read voltage from a */
|
||||||
|
% /* specified ADC MUX channel */
|
||||||
|
% /* Assume 10 ADC MUX channels 0..9 */
|
||||||
|
% /* ADC_CHAN_RANGE = 9 */
|
||||||
|
% /* Assume ADC is 12 bit and ADCRANGE = 4096 */
|
||||||
|
% /* returns voltage read as double precision */
|
||||||
|
% /***********************************************/
|
||||||
|
% double read_ADC( int channel ) {
|
||||||
|
% int timeout = 0;
|
||||||
|
%
|
||||||
|
% /* return out of range result */
|
||||||
|
% /* if invalid channel selected */
|
||||||
|
% if ( channel > ADC_CHAN_RANGE )
|
||||||
|
% return -2.0;
|
||||||
|
% /* set the multiplexer to the desired channel */
|
||||||
|
% ADCMUX = channel;
|
||||||
|
% ADCGO = 1; /* initiate ADC conversion hardware */
|
||||||
|
% /* wait for ADC conversion with timeout */
|
||||||
|
% while ( ADCGO == 1 || timeout < 100 )
|
||||||
|
% timeout++;
|
||||||
|
% if ( timeout < 100 )
|
||||||
|
% dval = (double) ADCOUT * 5.0 / ADCRANGE;
|
||||||
|
% else
|
||||||
|
% dval = -1.0; /* indicate invalid reading */
|
||||||
|
% /* return voltage as a floating point value */
|
||||||
|
% /* ensure: value is voltage input to within 0.1% */
|
||||||
|
% return dval;
|
||||||
|
% }
|
||||||
|
% \end{verbatim}
|
||||||
|
% \caption{Software Function: \textbf{read\_ADC}}
|
||||||
|
% \label{fig:code_read_ADC}
|
||||||
% \end{figure}
|
% \end{figure}
|
||||||
|
% %}
|
||||||
|
% %}
|
||||||
|
|
||||||
%
|
%
|
||||||
This software is above the hardware in the conceptual call tree---from a programmatic perspective---%in software terms---the
|
% We now have a very simple software structure, a call tree, where {\em read\_4\_20\_input}
|
||||||
software is reading values from the `lower~level' electronics.
|
% calls {\em read\_ADC}, which in turn interacts with the hardware/electronics.
|
||||||
|
% %shown in figure~\ref{fig:ct1}.
|
||||||
|
% %
|
||||||
|
% % \begin{figure}[h]
|
||||||
|
% % \centering
|
||||||
|
% % \includegraphics[width=56pt]{./ct1.png}
|
||||||
|
% % % ct1.png: 151x224 pixel, 72dpi, 5.33x7.90 cm, bb=0 0 151 224
|
||||||
|
% % \caption{Call tree for software example}
|
||||||
|
% % \label{fig:ct1}
|
||||||
|
% % \end{figure}
|
||||||
|
% %
|
||||||
|
% This software is above the hardware in the conceptual call tree---from a programmatic perspective---%in software terms---the
|
||||||
|
% software is reading values from the `lower~level' electronics.
|
||||||
|
% %
|
||||||
|
% %FMEA is always a bottom-up process and so we must begin with this hardware.
|
||||||
|
% %
|
||||||
|
% The hardware is simply a load resistor, connected across an ADC input
|
||||||
|
% pin on the micro-controller and ground.
|
||||||
|
% %
|
||||||
|
% We can identify the resistor and the ADC module of the micro-controller as
|
||||||
|
% the base components in this design.
|
||||||
|
% %
|
||||||
|
% We now apply FMMD starting with the hardware.
|
||||||
%
|
%
|
||||||
%FMEA is always a bottom-up process and so we must begin with this hardware.
|
|
||||||
%
|
%
|
||||||
The hardware is simply a load resistor, connected across an ADC input
|
% \section{Failure Mode effects Analysis}
|
||||||
pin on the micro-controller and ground.
|
|
||||||
%
|
%
|
||||||
We can identify the resistor and the ADC module of the micro-controller as
|
% Four emerging and current techniques are now used to
|
||||||
the base components in this design.
|
% apply FMEA to the hardware, the software, the software medium and the software hardware insterface.
|
||||||
%
|
%
|
||||||
We now apply FMMD starting with the hardware.
|
% \subsection{Hardware FMEA}
|
||||||
|
%
|
||||||
|
% The hardware FMEA requires that for each component we consider all failure modes
|
||||||
\section{Failure Mode effects Analysis}
|
% and the putative effect those failure modes would have on the system.
|
||||||
|
% The electronic components in our {\ft} system are the load resistor,
|
||||||
Four emerging and current techniques are now used to
|
% the multiplexer and the analogue to digital converter.
|
||||||
apply FMEA to the hardware, the software, the software medium and the software hardware insterface.
|
%
|
||||||
|
% {
|
||||||
\subsection{Hardware FMEA}
|
% \tiny
|
||||||
|
% \begin{table}[h+]
|
||||||
The hardware FMEA requires that for each component we consider all failure modes
|
% \caption{Hardware FMEA {\ft}} % title of Table
|
||||||
and the putative effect those failure modes would have on the system.
|
% \label{tbl:r420i}
|
||||||
The electronic components in our {\ft} system are the load resistor,
|
%
|
||||||
the multiplexer and the analogue to digital converter.
|
% \begin{tabular}{|| l | c | l ||} \hline
|
||||||
|
% \textbf{Failure} & \textbf{failure} & \textbf{System} \\
|
||||||
{
|
% \textbf{Scenario} & \textbf{effect} & \textbf{Failure} \\ \hline
|
||||||
\tiny
|
% \hline
|
||||||
\begin{table}[h+]
|
% $R$ & OPEN~\cite{en298}[Ann.A] & $LOW$ \\
|
||||||
\caption{Hardware FMEA {\ft}} % title of Table
|
% & & $READING$ \\ \hline
|
||||||
\label{tbl:r420i}
|
%
|
||||||
|
% $R$ & SHORT~\cite{en298}[Ann.A] & $HIGH$ \\
|
||||||
\begin{tabular}{|| l | c | l ||} \hline
|
% & & $READING$ \\ \hline
|
||||||
\textbf{Failure} & \textbf{failure} & \textbf{System} \\
|
%
|
||||||
\textbf{Scenario} & \textbf{effect} & \textbf{Failure} \\ \hline
|
%
|
||||||
\hline
|
%
|
||||||
$R$ & OPEN~\cite{en298}[Ann.A] & $LOW$ \\
|
% $MUX$ & read wrong & $VAL\_ERROR$ \\
|
||||||
& & $READING$ \\ \hline
|
% & input ~\cite{fmd91}[3-102] & \\ \hline
|
||||||
|
%
|
||||||
$R$ & SHORT~\cite{en298}[Ann.A] & $HIGH$ \\
|
%
|
||||||
& & $READING$ \\ \hline
|
%
|
||||||
|
% $ADC$ & ADC output & $VAL\_ERROR$ \\
|
||||||
|
% & erronous ~\cite{fmd91}[3-109] & \\ \hline
|
||||||
|
% \hline
|
||||||
$MUX$ & read wrong & $VAL\_ERROR$ \\
|
% \end{tabular}
|
||||||
& input ~\cite{fmd91}[3-102] & \\ \hline
|
% \end{table}
|
||||||
|
% }
|
||||||
|
%
|
||||||
|
% The last two failures both lead to the system failure of $VAL\_ERROR$ .
|
||||||
$ADC$ & ADC output & $VAL\_ERROR$ \\
|
% They could lead to low or high reading as well, but we would only be able to determine this
|
||||||
& erronous ~\cite{fmd91}[3-109] & \\ \hline
|
% from knowledge of the software systems criteria for these.
|
||||||
\hline
|
% %\clearpage
|
||||||
\end{tabular}
|
% \subsection{Software FMEA - variables in place of components}
|
||||||
\end{table}
|
%
|
||||||
}
|
% For software FMEA, we take the variables used by the system,
|
||||||
|
% and examine what could happen if they are corrupted in various ways~\cite{procsfmea, embedsfmea}.
|
||||||
The last two failures both lead to the system failure of $VAL\_ERROR$ .
|
% From the function $read\_4\_20\_input()$ we have the variables $error\_flag$,
|
||||||
They could lead to low or high reading as well, but we would only be able to determine this
|
% $input\_volts$ and $value$: from the function $read\_ADC()$, $timeout$, $ADCMUX$, $ADCGO$, $dval$.
|
||||||
from knowledge of the software systems criteria for these.
|
% We must now determine putative system failure modes for these variables becoming corrupted, this is performed in table~\ref{tbl:sfmea}.
|
||||||
%\clearpage
|
%
|
||||||
\subsection{Software FMEA - variables in place of components}
|
%
|
||||||
|
% {
|
||||||
For software FMEA, we take the variables used by the system,
|
% \tiny
|
||||||
and examine what could happen if they are corrupted in various ways~\cite{procsfmea, embedsfmea}.
|
% \begin{table}[h+]
|
||||||
From the function $read\_4\_20\_input()$ we have the variables $error\_flag$,
|
% \caption{SFMEA {\ft}} % title of Table
|
||||||
$input\_volts$ and $value$: from the function $read\_ADC()$, $timeout$, $ADCMUX$, $ADCGO$, $dval$.
|
% \label{tbl:sfmea}
|
||||||
We must now determine putative system failure modes for these variables becoming corrupted, this is performed in table~\ref{tbl:sfmea}.
|
%
|
||||||
|
% \begin{tabular}{|| l | c | l ||} \hline
|
||||||
|
% \textbf{Failure} & \textbf{failure} & \textbf{System} \\
|
||||||
{
|
% \textbf{Scenario} & \textbf{effect} & \textbf{Failure} \\ \hline
|
||||||
\tiny
|
% \hline
|
||||||
\begin{table}[h+]
|
% $error\_flag$ & set FALSE & $VAL\_ERROR$ \\
|
||||||
\caption{SFMEA {\ft}} % title of Table
|
% & & \\ \hline
|
||||||
\label{tbl:sfmea}
|
%
|
||||||
|
% $error\_flag$ & set TRUE & invalid \\
|
||||||
\begin{tabular}{|| l | c | l ||} \hline
|
% & & error flag \\ \hline
|
||||||
\textbf{Failure} & \textbf{failure} & \textbf{System} \\
|
%
|
||||||
\textbf{Scenario} & \textbf{effect} & \textbf{Failure} \\ \hline
|
% $input\_volts$ & corrupted & $VAL\_ERROR$ \\
|
||||||
\hline
|
% & & \\ \hline
|
||||||
$error\_flag$ & set FALSE & $VAL\_ERROR$ \\
|
%
|
||||||
& & \\ \hline
|
%
|
||||||
|
% $value $ & corrupted & $VAL\_ERROR$ \\
|
||||||
$error\_flag$ & set TRUE & invalid \\
|
% & & \\ \hline
|
||||||
& & error flag \\ \hline
|
%
|
||||||
|
%
|
||||||
$input\_volts$ & corrupted & $VAL\_ERROR$ \\
|
%
|
||||||
& & \\ \hline
|
% $timeout $ & corrupted & $VAL\_ERROR$ \\
|
||||||
|
% & & \\ \hline
|
||||||
|
%
|
||||||
$value $ & corrupted & $VAL\_ERROR$ \\
|
%
|
||||||
& & \\ \hline
|
% $ADCMUX $ & corrupted & $VAL\_ERROR$ \\
|
||||||
|
% & & \\ \hline
|
||||||
|
%
|
||||||
|
%
|
||||||
$timeout $ & corrupted & $VAL\_ERROR$ \\
|
%
|
||||||
& & \\ \hline
|
% $ADCGO $ & corrupted & $VAL\_ERROR$ \\
|
||||||
|
% & & \\ \hline
|
||||||
|
%
|
||||||
$ADCMUX $ & corrupted & $VAL\_ERROR$ \\
|
% $dval $ & corrupted & $VAL\_ERROR$ \\
|
||||||
& & \\ \hline
|
% & & \\ \hline
|
||||||
|
%
|
||||||
|
%
|
||||||
|
%
|
||||||
$ADCGO $ & corrupted & $VAL\_ERROR$ \\
|
%
|
||||||
& & \\ \hline
|
% \hline
|
||||||
|
% \end{tabular}
|
||||||
$dval $ & corrupted & $VAL\_ERROR$ \\
|
% \end{table}
|
||||||
& & \\ \hline
|
% }
|
||||||
|
% %\clearpage
|
||||||
|
% \subsection{Software FMEA - failure modes of the medium ($\mu P$) of the software}
|
||||||
|
%
|
||||||
|
% Microprocessors/Microcontrollers have sets of known failure modes, these include RAM, ROM
|
||||||
\hline
|
% EEPROM failure\footnote{EEPROM failure is not applicable for this example.} and
|
||||||
\end{tabular}
|
% oscillator clock timing
|
||||||
\end{table}
|
%
|
||||||
}
|
%
|
||||||
%\clearpage
|
%
|
||||||
\subsection{Software FMEA - failure modes of the medium ($\mu P$) of the software}
|
% {
|
||||||
|
% \tiny
|
||||||
Microprocessors/Microcontrollers have sets of known failure modes, these include RAM, ROM
|
% \begin{table}[h+]
|
||||||
EEPROM failure\footnote{EEPROM failure is not applicable for this example.} and
|
% \caption{SFMEA {\ft}} % title of Table
|
||||||
oscillator clock timing
|
% \label{tbl:sfmeaup}
|
||||||
|
%
|
||||||
|
% \begin{tabular}{|| l | c | l ||} \hline
|
||||||
|
% \textbf{Failure} & \textbf{failure} & \textbf{System} \\
|
||||||
{
|
% \textbf{Scenario} & \textbf{effect} & \textbf{Failure} \\ \hline
|
||||||
\tiny
|
% \hline
|
||||||
\begin{table}[h+]
|
% $RAM$ & variable & All errors \\
|
||||||
\caption{SFMEA {\ft}} % title of Table
|
% & corruption & from table~\ref{tbl:sfmea} \\ \hline
|
||||||
\label{tbl:sfmeaup}
|
%
|
||||||
|
% $RAM$ & program flow & process \\
|
||||||
\begin{tabular}{|| l | c | l ||} \hline
|
% & & halts / crashes \\ \hline
|
||||||
\textbf{Failure} & \textbf{failure} & \textbf{System} \\
|
%
|
||||||
\textbf{Scenario} & \textbf{effect} & \textbf{Failure} \\ \hline
|
% $OSC$ & stopped & process \\
|
||||||
\hline
|
% & & halts \\ \hline
|
||||||
$RAM$ & variable & All errors \\
|
%
|
||||||
& corruption & from table~\ref{tbl:sfmea} \\ \hline
|
% $OSC$ & too & ADC \\
|
||||||
|
% & fast & value errors \\ \hline
|
||||||
$RAM$ & program flow & process \\
|
%
|
||||||
& & halts / crashes \\ \hline
|
% $OSC$ & too & ADC \\
|
||||||
|
% & slow & value errors \\ \hline
|
||||||
$OSC$ & stopped & process \\
|
%
|
||||||
& & halts \\ \hline
|
% $ROM$ & program & All errors \\
|
||||||
|
% & corruption & from table~\ref{tbl:sfmea} \\ \hline
|
||||||
$OSC$ & too & ADC \\
|
%
|
||||||
& fast & value errors \\ \hline
|
% $ROM$ & constant & All errors \\
|
||||||
|
% & /data corruption & from table~\ref{tbl:sfmea} \\ \hline
|
||||||
$OSC$ & too & ADC \\
|
%
|
||||||
& slow & value errors \\ \hline
|
% \hline
|
||||||
|
% \end{tabular}
|
||||||
$ROM$ & program & All errors \\
|
% \end{table}
|
||||||
& corruption & from table~\ref{tbl:sfmea} \\ \hline
|
%}
|
||||||
|
|
||||||
$ROM$ & constant & All errors \\
|
|
||||||
& /data corruption & from table~\ref{tbl:sfmea} \\ \hline
|
|
||||||
|
|
||||||
\hline
|
|
||||||
\end{tabular}
|
|
||||||
\end{table}
|
|
||||||
}
|
|
||||||
|
|
||||||
%\clearpage
|
%\clearpage
|
||||||
\subsection{Software FMEA - The software/hardware interface}
|
\subsection{Software FMEA - The software/hardware interface}
|
||||||
@ -1174,58 +1194,59 @@ format. It may also right or left justify the bits in its value.
|
|||||||
|
|
||||||
\section{Conclusion}
|
\section{Conclusion}
|
||||||
%
|
%
|
||||||
This paper has picked a very simple example (the industry standard {\ft}
|
% This paper has picked a very simple example %(the industry standard {\ft}
|
||||||
input circuit and software) to demonstrate
|
% %input circuit and software)
|
||||||
SFMEA and HFMEA methodologies used to describe a failure mode model.
|
% to demonstrate
|
||||||
%Even a modest system would be far too large to analyse in conference paper
|
% SFMEA and HFMEA methodologies used to describe a failure mode model.
|
||||||
%and this
|
% %Even a modest system would be far too large to analyse in conference paper
|
||||||
|
% %and this
|
||||||
|
% %
|
||||||
|
% %The {\dc} representing the {\ft} reader
|
||||||
|
% %shows that by taking a
|
||||||
|
% %modular approach for FMEA, i.e. FMMD, we can integrate
|
||||||
|
% Our model is described by four FMEA reports; and these % we can model the failure mode behaviour from
|
||||||
|
% model the system from several failure mode perspectives.
|
||||||
|
% %
|
||||||
|
% With traditional FMEA methods the reasoning~distance is large, because
|
||||||
|
% it stretches from the component failure mode to the top---or---system level failure.
|
||||||
|
% %
|
||||||
|
% With these four analysis reports
|
||||||
|
% we do not have stages along the `reasoning~path' linking the failure modes from the
|
||||||
|
% electronics to those in the software.
|
||||||
|
% %Software is often written `defensively' but t
|
||||||
|
% %Each {\fg} to {\dc} transition represents a
|
||||||
|
% %reasoning stage.
|
||||||
|
% %
|
||||||
|
% %
|
||||||
|
% %For this reason applying traditional FMEA to software stretches
|
||||||
|
% %the reasoning distance even further.
|
||||||
|
% %
|
||||||
|
% In fact many these reasoning paths overlap---or even by-pass one another---
|
||||||
|
% it is very difficult to gauge cause and effect.
|
||||||
|
% For instance, hardware failures are not analysed in the context of how they will
|
||||||
|
% be handled (or missed) by the software.
|
||||||
|
% %
|
||||||
|
% System outputs commanded from software may not take into account particular
|
||||||
|
% hardware limitations etc.
|
||||||
%
|
%
|
||||||
%The {\dc} representing the {\ft} reader
|
% The interface FMEA does serve to provide a useful
|
||||||
%shows that by taking a
|
% check-list to ensure data and synchronisation conventions used by the hardware
|
||||||
%modular approach for FMEA, i.e. FMMD, we can integrate
|
% and software are not mismatched. However, the fact it is perceived as required
|
||||||
Our model is described by four FMEA reports; and these % we can model the failure mode behaviour from
|
% highlights the the miss-matches possible between the two types of analysis
|
||||||
model the system from several failure mode perspectives.
|
% which could run deeper than the mere interface level.
|
||||||
%
|
|
||||||
With traditional FMEA methods the reasoning~distance is large, because
|
|
||||||
it stretches from the component failure mode to the top---or---system level failure.
|
|
||||||
%
|
|
||||||
With these four analysis reports
|
|
||||||
we do not have stages along the `reasoning~path' linking the failure modes from the
|
|
||||||
electronics to those in the software.
|
|
||||||
%Software is often written `defensively' but t
|
|
||||||
%Each {\fg} to {\dc} transition represents a
|
|
||||||
%reasoning stage.
|
|
||||||
%
|
%
|
||||||
%
|
%
|
||||||
%For this reason applying traditional FMEA to software stretches
|
% However, while these techniques ensure that the software and hardware is
|
||||||
%the reasoning distance even further.
|
% viewed and analysed from several perspectives, it cannot be termed a homogeneous
|
||||||
|
% failure mode model.
|
||||||
|
% % For instance
|
||||||
|
% % were the ADC to have a small value error, say adding
|
||||||
|
% % a small percentage onto the value, we would be unable to
|
||||||
|
% % detect this under the analysis conditions for this model, or
|
||||||
|
% % be able to pinpoint it.
|
||||||
|
% %
|
||||||
%
|
%
|
||||||
In fact many these reasoning paths overlap---or even by-pass one another---
|
% Need wishlist ticks and solved problems here.
|
||||||
it is very difficult to gauge cause and effect.
|
|
||||||
For instance, hardware failures are not analysed in the context of how they will
|
|
||||||
be handled (or missed) by the software.
|
|
||||||
%
|
|
||||||
System outputs commanded from software may not take into account particular
|
|
||||||
hardware limitations etc.
|
|
||||||
|
|
||||||
The interface FMEA does serve to provide a useful
|
|
||||||
check-list to ensure data and synchronisation conventions used by the hardware
|
|
||||||
and software are not mismatched. However, the fact it is perceived as required
|
|
||||||
highlights the the miss-matches possible between the two types of analysis
|
|
||||||
which could run deeper than the mere interface level.
|
|
||||||
|
|
||||||
|
|
||||||
However, while these techniques ensure that the software and hardware is
|
|
||||||
viewed and analysed from several perspectives, it cannot be termed a homogeneous
|
|
||||||
failure mode model.
|
|
||||||
% For instance
|
|
||||||
% were the ADC to have a small value error, say adding
|
|
||||||
% a small percentage onto the value, we would be unable to
|
|
||||||
% detect this under the analysis conditions for this model, or
|
|
||||||
% be able to pinpoint it.
|
|
||||||
%
|
|
||||||
|
|
||||||
Need wishlist ticks and solved problems here.
|
|
||||||
|
|
||||||
{
|
{
|
||||||
\footnotesize
|
\footnotesize
|
||||||
|
Loading…
Reference in New Issue
Block a user