working on JOURNAL article looking at the software FMMD

and descriptions.
This commit is contained in:
Robin Clark 2015-08-22 12:42:10 +01:00
parent 12a4e0e337
commit 53e54604d4

View File

@ -62,12 +62,18 @@ failure mode of the component or sub-system}}}
\newcommand{\frategloss}{\glossary{name={failure rate}, description={The number of failure within a population (of size N), divided by N over a given time interval}}} \newcommand{\frategloss}{\glossary{name={failure rate}, description={The number of failure within a population (of size N), divided by N over a given time interval}}}
\newcommand{\pecgloss}{\glossary{name={PEC},description={A Programmable Electronic controller, will typically consist of sensors and actuators interfaced electronically, with some firmware/software component in overall control}}} \newcommand{\pecgloss}{\glossary{name={PEC},description={A Programmable Electronic controller, will typically consist of sensors and actuators interfaced electronically, with some firmware/software component in overall control}}}
\newcommand{\bcfm}{base~component~failure~mode} \newcommand{\bcfm}{base~component~failure~mode}
\newcommand{\cf}[1]{\textbf{#1()}} \newcommand{\cf}[1]{{\tiny \textbf{#1()}}}
\newcommand{\swhw}{software~hardware} \newcommand{\swhw}{software~hardware}
\newcommand{\sw}{software} \newcommand{\sw}{software}
\newcommand{\hw}{hardware} \newcommand{\hw}{hardware}
\newcommand{\uP}{micro~processor} \newcommand{\uP}{micro~processor}
\usepackage{color, colortbl}
\definecolor{Gray}{gray}{0.9}
\definecolor{LightGray}{gray}{0.97}
\definecolor{LightCyan}{rgb}{0.88,1,1}
\definecolor{Blue}{rgb}{0.0,0.0,0.7}
\definecolor{Red}{rgb}{0.9,0.0,0.0}
\definecolor{Green}{rgb}{0.0,0.5,0.0}
\def\layersep{1.8cm} \def\layersep{1.8cm}
@ -1390,6 +1396,7 @@ as a complete example of an electronic/hardware hybrid analysed using FMMD. %wou
% % may be found in~\cite{dcods}[Ch.3.3]. % % may be found in~\cite{dcods}[Ch.3.3].
% %
\subsection{Design Stage: Implementation on a micro-controller.} \subsection{Design Stage: Implementation on a micro-controller.}
%
When designing a computer program it is often useful to When designing a computer program it is often useful to
start with a system overview. start with a system overview.
A structured analysis `Yourdon' context diagram~\cite{Yourdon:1989:MSA:62004} is presented below, see figure~\ref{fig:context_diagram_PID}. A structured analysis `Yourdon' context diagram~\cite{Yourdon:1989:MSA:62004} is presented below, see figure~\ref{fig:context_diagram_PID}.
@ -1397,7 +1404,7 @@ A Yourdon context diagram shows an overview of a system, with the data inputs an
The circle in the middle defines the processing applied to those inputs and outputs. The circle in the middle defines the processing applied to those inputs and outputs.
The context diagram can be later refined by introducing more circles with data paths between them. The context diagram can be later refined by introducing more circles with data paths between them.
Finally a {\swhw} hierarchy can be derived from a Yourdon diagram, which assists Finally a {\swhw} hierarchy can be derived from a Yourdon diagram, which assists
in the design of hybrid {\swhw} systems. in the design of the software (specifically the structure of the call tree and the hardware/software interfaces).
% %
\begin{figure}[h]+ \begin{figure}[h]+
@ -1411,16 +1418,16 @@ in the design of hybrid {\swhw} systems.
Using figure~\ref{fig:context_diagram_PID} the system in terms of its data flow is reviewed, starting Using figure~\ref{fig:context_diagram_PID} the system in terms of its data flow is reviewed, starting
with the data sources (the Pt100 temperature sensor inputs) and the data sinks (the heater output and the LED indicators). with the data sources (the Pt100 temperature sensor inputs) and the data sinks (the heater output and the LED indicators).
% %
There are two voltage inputs (see section~\ref{clark}[5]) from the Pt100 temperature sensor. There are two voltage inputs (for a detailed analysis and discussion of a four wire Pt100 configuration see~\ref{clark}[5]) from the Pt100 temperature sensor.
% %
For the Pt100 sensor, the voltages it outputs are read and %for For the Pt100 sensor, the voltages it outputs are read and %for
this requires an ADC and MUX. this requires an ADC and MUX.
% %
%\fmmdglossADC %\fmmdglossADC
% %
For the output, a Pulse Width Modulator (PWM) can be used (this is a common module found on micro-controllers For the output, a Pulse Width Modulator (PWM)\footnote{PWM provides a means to modulate an output i.e. very power levels}
facilitating can be used (this is a common module found on micro-controllers
variable power output~\cite{aoe}[p.360]). facilitating variable power output~\cite{aoe}[p.360]).
% %
PWM's ADC's and MUX's are commonly built into cheap micro-controllers~\cite{pic18f2523}[Ch.15]. PWM's ADC's and MUX's are commonly built into cheap micro-controllers~\cite{pic18f2523}[Ch.15].
% %
@ -1445,9 +1452,11 @@ channelled through a PWM module. %again built into the micro-controller,
% %
This next stage of model refinement is shown in figure~\ref{fig:context_diagram2_PID}. This next stage of model refinement is shown in figure~\ref{fig:context_diagram2_PID}.
% %
The controlling software is then further refined, by looking at or zooming into transform bubbles This is refined by looking at or zooming into transform bubbles
and adding more detail i.e. following the data streams through the process, additional transform bubbles are created as required. and adding more detail i.e. following the data streams through the process, additional transform bubbles are created as required.
% %%%%%
%%%%%
The lines connecting the `transform~bubbles' define the data passed between them. The lines connecting the `transform~bubbles' define the data passed between them.
% %
When the data flow analysis is finished, each transform bubble represents a software function. When the data flow analysis is finished, each transform bubble represents a software function.
@ -1521,20 +1530,28 @@ The \cf{PID} function calls \cf{determine\_set\_point\_error} which calls \cf{co
which in turn calls \cf{Read\_ADC} (a function developed and analysed using FMMD in~\cite{syssafe2012}) which in turn calls \cf{Read\_ADC} (a function developed and analysed using FMMD in~\cite{syssafe2012})
which reads from hardware. which reads from hardware.
% %
With the set point error value the \cf{PID} function will return an output control value to its calling With the set point error value\footnote{In the field of controll engineering the setpoint error value ids often simply referred to as the `error' term.
In this context it is the difference between the target temperature and the temperature read. For instance were the target temperature
to be $200^{\circ} C$ and the temperature read to be $150^{\circ} C$ the error value would be $-50^{\circ} C$}
the \cf{PID} function will return an output control value to its calling
function (i.e. the PID demand which will be returned to the monitor function). function (i.e. the PID demand which will be returned to the monitor function).
% %
%On returning to the monitor function, it will return the PID demand value. %On returning to the monitor function, it will return the PID demand value.
The PID demand value will be applied via the pulse width modulation (PWM) module. The PID demand value will be applied via the pulse width modulation (PWM) module.
% %
A rudimentary closed loop control system incorporating both hardware and software has been defined. %A rudimentary closed loop control system incorporating both hardware and software has been defined.
With the hardware and software elements defined, and incorporated into a hierarchy, the
overall structure of the temperature controlled has now been designed.
% %
By using the Yourdon methodology a programmatic design frame-work i.e. a call tree structure was obtained. By using the Yourdon methodology a programmatic design frame-work i.e. a call tree structure was obtained.
% %
All the components, i.e. hardware elements and software functions All the components, i.e. hardware elements and software functions
that will be used in the temperature controller are now defined. that will be used in the temperature controller are now defined.
% %
These are listed, and from the bottom-up, FMMD analysis is begun. As each of these elements can be analysed as components in FMMD
analysis can begin.
%
%These are listed, and from the bottom-up, FMMD analysis is begun.
% %
\clearpage \clearpage
%\subsection{FMMD Analysis of PID temperature Controller} %\subsection{FMMD Analysis of PID temperature Controller}
@ -1639,7 +1656,7 @@ Identified Software Components:
\item --- \cf{PID} (which calls \cf{determine\_set\_point\_error} ), \item --- \cf{PID} (which calls \cf{determine\_set\_point\_error} ),
\item --- \cf{determine\_set\_point\_error} (which calls \cf{convert\_ADC\_to\_T}), \item --- \cf{determine\_set\_point\_error} (which calls \cf{convert\_ADC\_to\_T}),
\item --- \cf{convert\_ADC\_to\_T} (which calls \cf{read\_ADC}), % which has been analysed as the {\dc} read\_ADC which can be re-used.} % from the last example), \item --- \cf{convert\_ADC\_to\_T} (which calls \cf{read\_ADC}), % which has been analysed as the {\dc} read\_ADC which can be re-used.} % from the last example),
\item --- \cf{read\_ADC} (analysed in the previous section~\ref{sec:readadc}), \item --- \cf{read\_ADC} (analysed in the previous section~\ref{syssafe2012}),
\item --- \cf{output\_control} (which sets the PWM hardware according to the PID demand value). \item --- \cf{output\_control} (which sets the PWM hardware according to the PID demand value).
\end{itemize} \end{itemize}
% %
@ -1662,15 +1679,15 @@ to a PID calculated heater output demand is examined.
% %
\subsubsection{Afferent flow FMMD analysis, Pt100, temperature, set point error, PID output demand.} \subsubsection{Afferent flow FMMD analysis, Pt100, temperature, set point error, PID output demand.}
% %
Staring with the afferent data flow for the temperature readings, the lowest Starting with the afferent data flow for the temperature readings, the lowest
level in the hierarchy is found, the Pt100 sensor. level in the hierarchy is found, the Pt100 sensor.
%with the software, and consider the hardware elements %with the software, and consider the hardware elements
%used (if any) by each software function. %used (if any) by each software function.
%Starting %Starting
Beginning at the bottom, a {\fg} is formed with
the function \cf{read\_ADC} and the Pt100.
This gives a {\dc}, %which we call
`Read\_Pt100'. % (see appendix~\ref{sec:readPt100}).
% %
% %
% %
@ -1678,9 +1695,9 @@ This gives a {\dc}, %which we call
%\cf{Read\_ADC} software function and the Pt100 hardware. %\cf{Read\_ADC} software function and the Pt100 hardware.
%The {\dc} Read\_Pt100 is a failure mode model of the \cf{Read\_ADC} software function and the Pt100 %The {\dc} Read\_Pt100 is a failure mode model of the \cf{Read\_ADC} software function and the Pt100
%hardware, this %hardware, this
The {\dc} Read\_Pt100 has the following failure modes: The {\dc} convert\_ADC\_to\_T has the following failure modes:
% %
$$ fm (Read\_Pt100) = \{ VOLTAGE\_HIGH, VAL\_ERR, VOLTAGE\_LOW \}. $$ $$ fm (convert\_ADC\_to\_T) = \{ VOLTAGE\_HIGH, VAL\_ERR, VOLTAGE\_LOW \}. $$
% %
% %
Moving along the afferent flow, the \cf{convert\_ADC\_to\_T} function is next up the hierarchy. Moving along the afferent flow, the \cf{convert\_ADC\_to\_T} function is next up the hierarchy.
@ -1713,21 +1730,71 @@ gives the {\dc} {Get\_Temperature}.
% %
This analysis is presented in table~\ref{tbl:gettemperature}. This analysis is presented in table~\ref{tbl:gettemperature}.
% %
Beginning at the bottom, a {\fg} is formed with
the function \cf{read\_ADC} and the Pt100: this coresponds to the `C' function
\cf{convert\_ADC\_to\_T}.
When FMMD analysis has been performed this gives a {\dc}, named
`convert\_ADC\_to\_T'. % (see appendix~\ref{sec:readPt100}).
\begin{table}[h+]
\center
\caption{ convert\_ADC\_to\_T: Failure Mode Effects Analysis} % title of Table
\label{tbl:gettemperature}
\begin{tabular}{|| l | l | c | l ||} \hline
% \textbf{Failure} & \textbf{failure} & \textbf{Symptom} \\
% \textbf{Scenario} & \textbf{effect} & \textbf{RADC } \\ \hline
\hline
\rowcolor{LightCyan}
\textbf{Component} & \textbf{Failure} & \textbf{Failure } & \textbf{Symptom} \\
\rowcolor{LightCyan}
\textbf{} & \textbf{cause} & \textbf{Effect} & \\
\hline
Pt100 & FC1: out of range reading & Pt100 voltage & $VOLTAGE\_HIGH$ \\
& from the Pt100 resistors. & outside range & $VOLTAGE\_LOW$ \\ \hline
\cf{read\_ADC} & FC2: $RADC_{VV_ERR}$ & voltage & $VAL\_ERR$ \\
& ADC failure & \\ \hline \hline
\cf{read\_ADC} & FC3: $RADC_{HIGH}$ & voltage value & $VOLTAGE\_HIGH$ \\
& ADC reads High & \\ \hline
\cf{read\_ADC} & FC4: $RADC_{LOW}$ & voltage value & $VOLTAGE\_LOW$ \\
& ADC reads low & from ADC value low & \\ \hline
\cf{read\_ADC} & FC5: post condition fails & software failure in & $VAL\_ERR$ \\
& in function \cf{read\_ADC} & \cf{read\_ADC} & \\ \hline
\cf{convert\_ADC\_to\_T} & FC6: post condition fails & software failure in & $VAL\_ERR$ \\
& in function \cf{convert\_ADC\_to\_T} & \cf{convert\_ADC\_to\_T} & \\ \hline
\end{tabular}
\end{table}
%\fmmdglossADC
Collecting symptoms from table~\ref{tbl:tbl:gettemperature}, the {\dc} $convert\_ADC\_to\_T$ is assigned the following failure modes:
$$
fm(convert\_ADC\_to\_T) = \{ VOLTAGE\_HIGH , VOLTAGE\_LOW, VAL\_ERR\} .
$$
%The analysis for the Pt100 circuit is presented in table~\ref{tbl:readPt100}. %The analysis for the Pt100 circuit is presented in table~\ref{tbl:readPt100}.
% %
% %
Failure symptoms are collected and the {\dc} created with the following failure modes:
%
%
$$fm(Get\_Temperature) = \{ Pt100\_out\_of\_range, temp\_incorrect \} . $$
%\clearpage
%
% %
Following the afferent flow further, the function to determine the control error value is examined. Following the afferent flow further, the function to determine the control error value is examined.
% %
This is simply the target temperature subtracted from that measured by the sensor. This is simply the target temperature subtracted from that measured by the sensor.
% %
A {\fg} is formed with the newly {\dc} Get\_Temperature A {\fg} is formed with the newly formed {\dc} convert\_ADC\_to\_T
and the function \cf{determine\_set\_point\_error}. and the function \cf{determine\_set\_point\_error}.
% %
The pre-condition for \cf{determine\_set\_point\_error} is that the temperature read by it The pre-condition for \cf{determine\_set\_point\_error} is that the temperature read by it
@ -1741,9 +1808,9 @@ is accurate, and its post-condition is to return the correct control error value
% %
The post-condition can fail, or the temperature read could be incorrect. The post-condition can fail, or the temperature read could be incorrect.
% %
This could be detectable (i.e. we detect a failure from the Pt100 $ Pt100\_out\_of\_range $) This could be detectable (i.e. the symptoms $\{ VOLTAGE\_HIGH , VOLTAGE\_LOW \} $
or undetectable (i.e. the post condition for this function simply fails or undetectable (i.e. the post condition for this function simply fails
or the failure mode $temp\_incorrect$ occurs). or the failure mode $VAL\_ERR$ occurs).
%and so an incorrect value that is detected, KnownIncorrectErrorValue %and so an incorrect value that is detected, KnownIncorrectErrorValue
%where we can detect the Pt100 value is suspect, %where we can detect the Pt100 value is suspect,
%and IncorrectErrorValue where there is simply %and IncorrectErrorValue where there is simply
@ -1753,6 +1820,32 @@ This analysis is presented in table~\ref{tbl:geterror}.
% %
% %
% %
\begin{table}[h+]
\center
\caption{ GetError: Failure Mode Effects Analysis} % title of Table
\label{tbl:geterror}
\begin{tabular}{|| l | l | c | l ||} \hline
% \textbf{Failure} & \textbf{failure} & \textbf{Symptom} \\
% \textbf{Scenario} & \textbf{effect} & \textbf{RADC } \\ \hline
\hline
\rowcolor{LightCyan}
\textbf{Component} & \textbf{Failure} & \textbf{Failure } & \textbf{Symptom} \\
\rowcolor{LightCyan}
\textbf{} & \textbf{cause} & \textbf{Effect} & \\
\hline
convert\_ADC\_to\_T & FC1: VOLTAGE\_HIGH & detectable failure & $KnownIncorrectErrorValue$ \\ \hline
convert\_ADC\_to\_T & FC2: VOLTAGE\_LOW & detectable failure & $KnownIncorrectErrorValue$ \\ \hline
convert\_ADC\_to\_T & FC3: VAL\_ERR & detectable failure & $IncorrectErrorValue$ \\ \hline
\cf{GetError} & FC6: post condition fails & software failure in & $IncorrectErrorValue$ \\
& in function \cf{GetError} & \cf{GetError} & \\ \hline
\end{tabular}
\end{table}
% %
Failure mode symptoms are collected and a new {\dc} GetError created Failure mode symptoms are collected and a new {\dc} GetError created
where: where:
@ -1789,12 +1882,50 @@ it is the calling function that sets the context for the \cf{PID} function (i.e
%HARK THE HERALD ANGELS SING... HARK???? %HARK THE HERALD ANGELS SING... HARK????
% %
% %
%
\begin{table}[h+]
\center
\center
\label{tbl:geterror}
\caption{ PID: Failure Mode Effects Analysis} % title of Table
\begin{tabular}{|| l | l | c | l ||} \hline
% \textbf{Failure} & \textbf{failure} & \textbf{Symptom} \\
% \textbf{Scenario} & \textbf{effect} & \textbf{RADC } \\ \hline
\hline
\rowcolor{LightCyan}
\textbf{Component} & \textbf{Failure} & \textbf{Failure } & \textbf{Symptom} \\
\rowcolor{LightCyan}
\textbf{} & \textbf{cause} & \textbf{Effect} & \\
\hline
GetError & FC1: $KnownIncorrectErrorValue$ & safe heater control & KnownControlValueErrorV \\ \hline
GetError & FC2: $KnownIncorrectErrorValue$ & safe heater control & KnownControlValueErrorV \\ \hline
GetError & FC3: $IncorrectErrorValue$ & unsafe heater control & IncorrectControlErrorV \\ \hline
\cf{GetError} & FC6: post condition fails & software failure in & IncorrectControlErrorV \\
& in function \cf{GetError} & \cf{GetError} & \\ \hline
\end{tabular}
\end{table}
%%
The {\dc} PID is created, see table~\ref{tbl:pidfunction}, with the following failure modes: The {\dc} PID is created, see table~\ref{tbl:pidfunction}, with the following failure modes:
% %
$$ fm(PID) = \{ KnownControlValueErrorV, IncorrectControlErrorV \} .$$ $$ fm(PID) = \{ KnownControlValueErrorV, IncorrectControlErrorV \} .$$
% %
% To add some perspective here, if the failure mode is detectable i.e. $KnownControlValueErrorV$
it is the responsibility of the calling function to act on this and attempt a safety measure (in this case to turn off the heater and indicate an error condition).
Where the failure mode is not detectable the control will
in all likelihood apply an incorrect output.
Part of FMMD failure analysis is recognising that a design may have
undetectable errors. re-design of the modules affected can be identified by their position in the hierarchy
and thus solutions devised.
\begin{figure}[h] \begin{figure}[h]
\centering \centering
\includegraphics[width=400pt]{../../submission_thesis/CH5_Examples/euler_afferent_PID.png} \includegraphics[width=400pt]{../../submission_thesis/CH5_Examples/euler_afferent_PID.png}
@ -1812,6 +1943,8 @@ PWM/heater output.
% %
\subsubsection{Efferent flow, PID demand value to PWM output} \subsubsection{Efferent flow, PID demand value to PWM output}
% %
The efferent dataflow, or outputs are now analysed.
%
The monitor function calls the \cf{output\_control} function with the PID demand. The monitor function calls the \cf{output\_control} function with the PID demand.
% %
The \cf{output\_control} function then sets the PWM hardware register, which causes the mark space output of the PWM module to The \cf{output\_control} function then sets the PWM hardware register, which causes the mark space output of the PWM module to
@ -1840,7 +1973,7 @@ $$fm(HeaterOutput) = \{ HeaterOnFull, HeaterOff, HeaterOutputIncorrect \} .$$
% %
As an aside: the $HeaterOnFull$ failure should raise alarm bells for designers and As an aside: the $HeaterOnFull$ failure should raise alarm bells for designers and
upon its discovery, measures may be recommended to inhibit this (such as perhaps upon its discovery, measures may be recommended to inhibit this (such as perhaps
adding a safety relay to cut the power to the heater). adding a safety relay to cut the power to the heater if the $HeaterOnFull$ exceeds a given time limit).
% %
% %
\begin{figure}[h] \begin{figure}[h]
@ -1913,7 +2046,10 @@ The common causes for software failing are:
\end{itemize} \end{itemize}
Because the software is running on a medium, that of the processor or micro-controller, Because the software is running on a medium, that of the processor or micro-controller,
the FMMD analysis at the final or highest level (see table~\ref{tbl:pid}), must include all possible failure modes of this medium i.e. the FMMD analysis at the final or highest level (see table~\ref{tbl:pid}), must include all possible failure modes of this medium i.e.
$$fm (micro-controller) =\{ PROM\_FAULT, RAM\_FAULT, CPU\_FAULT, ALU\_FAULT, CLOCK\_STOPPED \}.$$
\begin{eqnarray*}
fm (micro-controller) = \{ PROM\_FAULT, \\ RAM\_FAULT, \\ CPU\_FAULT, \\ ALU\_FAULT, \\ CLOCK\_STOPPED \}.
\end{eqnarray*}
The final FMMD stage forms a {\fg} with the {\dcs} The final FMMD stage forms a {\fg} with the {\dcs}
determined previously: determined previously:
% %
@ -2021,7 +2157,12 @@ can now no longer be missed or forgotten in the analysis process.
The {\sw} faces no surprise {\hw} errors that it has no sensible The {\sw} faces no surprise {\hw} errors that it has no sensible
way of dealing with. way of dealing with.
Errors introduced by the {\uP} are unresolved in this example. But they are listed. Errors introduced by the {\uP} are unresolved in this example but are listed.
Some errors like RAM are in practical terms impossible to test with a 100\% coverage.
For other errors self-checking methods linked to external watchdog processors
can validate correct working of a micro-controller
and provide a higher degree of statistical integrity.
Re-useability --- the electronics --- the Pt100 --- s/w functions to read ADC values Re-useability --- the electronics --- the Pt100 --- s/w functions to read ADC values