Commit 2b03e133 authored by Kristian Soltesz's avatar Kristian Soltesz
Browse files

Started writing some documentation

parent 3148c0f2
\documentclass{article}
\usepackage{url}
\usepackage{bibentry}
\usepackage{amsmath}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@article{pidfIAE,
author={Soltesz, Kristian and Grimholt, Chriss and Skogestad, Sigurd},
title={Simultaneous Design of {PID} Controller and Measurement Filter by Optimization},
journal={{IET Control Theory \& Applications}},
volume=11,
number=3,
year=2017,
pages={348--348},
doi={10.1049/iet-cta.2016.0297}
}
@inproceedings{pidIAE,
author={Grimholt, Chriss and Skogestad, Sigurd},
title={Improved Optimization-based Design of {PID} Controllers Using Exact Gradients},
booktitle={12th International Symposium on Process Systems Engineering and 25th European Symposium on Computer Aided Process Engineering},
address={Copenhagen, Denmark},
year=2015,
pages={1753--1756},
isbn={978-0-444-63445-0 (eBook)}
}
@inproceedings{pidIE,
author={Hast, Martin and {\AA}str\"{o}m, Karl Johan and Bernhardsson, Bo and Boyd, Stephen},
title={{PID} Design by Convex-Concave Optimization},
booktitle={{IEEE} European Control Conference ({ECC})},
address={Z\"{u}rish, Switzerland},
year=2013,
pages={4460--4465},
isbn={978-3-033-03962-9 (eBook)}
}
\end{filecontents}
\begin{document}
\bibliographystyle{plain}
\nobibliography*{}
\title{{PIDopt} -- Matlab software for robust optimization-based {PID} controller design}
\author{Kristian Soltesz}
\date{\today}
\maketitle
\section{Acknowledgement}
The software consists of three scripts for {PID} design, exaplained later. The underlying methods for these files are:
\begin{itemize}
\item \verb=pidfIAE.m=\\
\bibentry{pidfIAE}
\item \verb=pidIAE.m=\\
\bibentry{pidIAE}
\item\verb=pidIE.m=\\
\bibentry{pidIE}
\end{itemize}
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.
\section{Getting started}
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. 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}.
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}.
\section{Design Methods}
\subsection{Design problem}
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,
\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,
\begin{equation}
\text{IAE} = \int_0^\infty |e(t)| dt.
\end{equation}
These constraints are standard within process control, and sound within a much broader application scope.
Robustness of the control loop is enforced by constraining the sensitivity function
\begin{equation}
S = \dfrac{1}{1+L},
\nonumber
\end{equation}
the complementary sensitivity function
\begin{equation}
T = \dfrac{L}{1+L},
\nonumber
\end{equation}
as well as the noise sensitivity function $KS$. We use $L=KP$ to denote the loop transfer function. Interpretation of The sensitivity function $S$ and its complement $T=1-S$ are thoroughly covered in most introductory control textbooks. The noise sensitivity $KS$ is the transfer function from $y$ to $u$ in \figref{cc}, and determines how much measurement noise is attenuated (or amplified). The methods covered here impose robustness through $\mathcal{H}_\infty$-constraints:
\begin{align}
\|S\|_\infty &\leq M_s,\nonumber\\
\|T\|_\infty &\leq M_t,\nonumber\\
\|KS\|_\infty &\leq M_{ks}.\nonumber
\end{align}
Smaller values of $M_s$, $M_t$, and $M_{ks}$, correspond to better robustness, but typically correspond to an increase in objective. A reasonable default is $M_s=M_t=1.5$. It is not possible to give a default for $M_{ks}$ as it is unit dependent -- it is affected by the gain of $P$.
\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
\begin{equation}
K(s) = k_p+\dfrac{ki}{s}+k_ds.
\label{eq:pid}
\end{equation}
Their parallel form representation
\begin\equation}
??\nonumber
\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}
and a second-order low-pass filter
\begin{equation}
F(s) = \dfrac{}{}.
\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.
\subsection{{IE} vs. {IAE}}
\subsection{Numerical aspects}
All the scripts aim at minimizing the effect of a (unit) loadon the process output.
\section{Other considerations}
The latest version of the source files can be downloaded from the git repository
\url{git@gitlab.control.lth.se:kristian/PIDopt.git}
\section{Bug reporting and questions}
\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