Commit 3b2cdaac authored by Kristian Soltesz's avatar Kristian Soltesz
Browse files

Intermediate commit. Switching computers.

parent 75e0ee7e
......@@ -45,14 +45,18 @@ pages={4460--4465},
isbn={978-3-033-03962-9 (eBook)}
}
\end{filecontents}
\renewcommand{\eqref}[1]{(\ref{eq:#1})}
\providecommand{\figref}{}
\renewcommand{\figref}[1]{Figure~\ref{fig:#1}}
\providecommand{\secref}{}
\renewcommand{\secref}[1]{Section~\ref{sec:#1}}
\providecommand{\tabref}{}
\renewcommand{\tabref}[1]{Table~\ref{tab:#1}}
%\usepackage{hyperref}
\newcommand{\figref}[1]{Figure~\ref{fig:#1}}
\newcommand{\secref}[1]{Section~\ref{sec:#1}}
\newcommand{\tabref}[1]{Table~\ref{tab:#1}}
\newcommand{\pidIE}{\href{https://gitlab.control.lth.se/kristian/PIDopt/blob/master/pidIE.m}{\tt pidIE.m}}
\newcommand{\pidIAE}{\href{https://gitlab.control.lth.se/kristian/PIDopt/blob/master/pidIAE.m}{\tt pidIiAE.m}}
\newcommand{\pidfIAE}{\href{https://gitlab.control.lth.se/kristian/PIDopt/blob/master/pidfIAE.m}{\tt pidfIAE.m}}
\usepackage{hyperref}
%\newcommand{\pidIAE}{\}
\begin{document}
\bibliographystyle{plain}
\nobibliography*{}
......@@ -62,66 +66,68 @@ isbn={978-3-033-03962-9 (eBook)}
\date{\today}
\maketitle
\section{Acknowledgement\label{sec:ack}}
The software consists of three scripts for {PID} design, exaplained later. The underlying methods for these files are:
The software consists of three scripts for {PID} design, explained later. The underlying methods for these files are:
\begin{itemize}
\item \verb=pidfIAE.m=\\
\item\pidfIAE\\
\bibentry{pidfIAE}
\item \verb=pidIAE.m=\\
\item\pidIAE\\
\bibentry{pidIAE}
\item\verb=pidIE.m=\\
\item\pidIE\\
\bibentry{pidIE}
\end{itemize}
\noindent Please acknowledge these works through citation if you use the methods in your research. The code present in the \verb=PIDopt= package is due to the authors of the above works.
\noindent The code present in the \verb=PIDopt= package is due to the authors of the above works. Please acknowledge these works through citation if you use the methods in your research.
\section{Getting started}
\subsection{Installation}
The software can be downloaded from the git repository \url{git@gitlab.control.lth.se:kristian/PIDopt.git}, accessible online at \url{https://gitlab.control.lth.se/kristian/PIDopt}. See \url{https://gitlab.control.lth.se/kristian/PIDopt/blob/master/example.m}{\verb=example.m=} at the base of the repository for an example illustrating how to run and evaluate the designs.
The software can be downloaded from the git repository \url{git@gitlab.control.lth.se:kristian/PIDopt.git}, accessible online at \url{https://gitlab.control.lth.se/kristian/PIDopt}. See\\\href{https://gitlab.control.lth.se/kristian/PIDopt/blob/master/example.m}{\tt example.m} at the base of the repository for an example illustrating how to run and evaluate the designs.
To execute the software you will need Matlab. In addition, \verb=pidIE.m= relies on CVX for Matlab, which can be downloaded for free from \url{http://www.cvxr.com}.
To execute the software you will need Matlab. In addition, \pidIE relies on CVX for Matlab, which can be downloaded for free from \url{http://www.cvxr.com}.
\subsection{Bug reporting}
Feel free to report/correct bugs through the issue system available at the \url{https://gitlab.control.lth.se/kristian/PIDopt}{web page of the repository}. Make sure to read \secref{practical} before reporting a bug.
Feel free to report/correct bugs through the issue system available at the \href{https://gitlab.control.lth.se/kristian/PIDopt}{\tt web page of the repository}. Make sure to read \secref{practical} before reporting a bug.
The remainder of this document is dedicated to briefly describe the design method (\secref{}), and to provide . If you remain with any questions, please send them to \url{mailto:kristian@control.lth.se}{kristian at control dot lth dot se}.
The remainder of this document is dedicated to briefly describe the design method (\secref{design}), and to provide . If you remain with any questions, please send them to \url{mailto:kristian@control.lth.se}{kristian at control dot lth dot se}.
\clearpage
\section{Design Methods}
\section{Design Methods\label{sec:design}}
\subsection{Design problem}
\begin{figure}[t]
\centering
\begin{tikzpicture}
\node[block](G1){$K$};
\node[sumcircle,right=13mm of G1](sum2){};
\node[block,right=10mm of sum2](G2){$P$};
\node[block](K){$K$};
\node[sumcircle,right=13mm of K](sum2){};
\node[block,right=10mm of sum2](P){$P$};
\node[sumcircle,right=10mm of P](sum3){};
\node[block,below=9mm of sum2](G3){$-1$};
\node[sumcircle,left=12mm of G1](sum){};
\node[sumcircle,left=12mm of K](sum){};
\node[coordinate, left=10mm of sum](ref){};
% FIXME: sum and noise right of P
\node[coordinate, right=12mm of G2](output){};
\node[coordinate, right=12mm of sum3](output){};
\node[coordinate, above=10mm of sum2](dist){};
\node[coordinate, above=10mm of sum3](noise){};
\draw[->](ref)--node[xshift=-1mm](){$r$}(sum);
\draw[->](sum)--node[xshift=-1mm](){$e$}(G1);
\draw[->](G1)--node(){$u$}(sum2);
\draw[->](sum2)--(G2);
\draw[->](sum)--node[xshift=-1mm](){$e$}(K);
\draw[->](K)--node(){$u$}(sum2);
\draw[->](sum2)--(P);
\draw[->](dist)--node[yshift=2mm](){$l$}(sum2);
\draw[->](G2)--node[xshift=0mm](Y){$y$}(output);
\draw[->](noise)--node[yshift=2mm](){$n$}(sum3);
\draw[->](P)--(sum3);
\draw[->](sum3)--node[xshift=0mm](Y){$y$}(output);
\draw[->](Y)|-(G3);
\draw[->](G3)-|(sum);
\end{tikzpicture}
\label{fig:cc}
\caption{The considered closed-loop control system with process $P$ and (filtered) PID controller $K$. The reference $r$ is not considered here ($r=0$ can be assumed). The remaining signals are the control error $e$, the control signal $u$, the process output $y$ (to be controlled), the load disturbance $l$, and measurement noise $n$.}
\caption{The considered closed-loop control system with process $P$ and (filtered) PID controller $K$. The reference $r$ is not considered here ($r=0$ can be assumed). The remaining signals are the control error $e$, the control signal $u$, the measurement signal $y$, the load disturbance $l$, and measurement noise $n$.}
\end{figure}
All the design methods consider a closed-loop system as depicted in \figref{cc}. The process model $P$ is a SISO LTI system. The design objective is to minimize the influence of an additive (unit) load disturbance step $l$, entering at the process input at $t=0$, on the control error $e$.
In \verb=pidIE.m=, the objective is to minimize the integral error,
In \pidIE the objective is to minimize the integral error,
\begin{equation}
\text{IE} = \int_0^\infty e(t) dt,
\end{equation}
whereas \verb=pidIAE.m= and \verb=pidfIAE.m= aim to minimize the $\mathcal{L}_1$-norm of $e$, also known as the integrated absolute error,
whereas \pidIAE and \pidfIAE aim to minimize the $\mathcal{L}_1$-norm of $e$, also known as the integrated absolute error,
\begin{equation}
\text{IAE} = \int_0^\infty |e(t)| dt.
\end{equation}
......@@ -149,7 +155,7 @@ Smaller values of $M_s$, $M_t$, and $M_{ks}$, correspond to better robustness, b
The reader is referred to the works listed in \secref{ack} for detailed information on the methods used to solve the constrained optimization problems described above. Related aspects of practical relevance are given in \secref{practical}.
\subsection{Controller and filter structure}
Process and controller representation herein is in continuous time. (Adapting the code to discrete time settings should be straightforward.) The controllers synthesized by \verb=pidIE.m= and \verb=pidIAE.m= are on the form
Process and controller representation herein is in continuous time. (Adapting the code to discrete time settings should be straightforward.) The controllers synthesized by \pidIE= and \pidIAE are on the form
\begin{equation}
K(s) = k_p+\dfrac{ki}{s}+k_ds.
\label{eq:pid}
......@@ -160,12 +166,12 @@ Their parallel form representation
\end{equation}
has parameters ??, and exists if ??. (The code can be modified to include \eqref{} as a constraint if it is crucial that the resulting controllers have a parallel form representation.)
The controllers synthesized by \verb=pidfIAE.m= are a series connection of a controller on the form \eqref{pid}
The controllers synthesized by \pidfIAE are a series connection of a controller on the form \eqref{pid}
and a second-order low-pass filter
\begin{equation}
F(s) = \dfrac{}{}.
F(s) = \dfrac{1}{T^2s^2+2\zeta T s +1}.
\end{equation}
The role of the filter is to ensure high-frequency roll-off. In order to achieve this also with \verb=pidIE.m= and \verb=pidIAE.m= simply design a low-pass filter and include it as a series connected component of $P$ prior to conducting the design.
The filter is implemented with $\zeta=1/\sqrt{2}$. The role of the filter is to ensure high-frequency roll-off. In order to achieve this also with \pidIE and \pidIAE simply design a low-pass filter and include it as a series connected component of $P$ prior to conducting the design.
\subsection{Which method to use?}
......@@ -192,8 +198,11 @@ Below is a list of practical aspects and considerations.
% note on using ISE (2-norm) instead
% change filter damping, make part of optimization
% add references? If so, to reference FF, the standard test batch, Tore and KJs book
% filter roll off within grid
\nobibliography{\jobname}
\end{document}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment