working on JOURNAL article looking at the software FMMD
and descriptions.
This commit is contained in:
parent
12a4e0e337
commit
53e54604d4
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user