\tikzset{every picture/.style={auto, line width=1pt, >=narrow,x=1mm, y=1mm, font=\small}}
\begin{filecontents}{\jobname.bib}
@article{pidfIAE,
author={Soltesz, Kristian and Grimholt, Chriss and Skogestad, Sigurd},
...
...
@@ -35,16 +45,23 @@ 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}
\begin{document}
\bibliographystyle{plain}
\nobibliography*{}
\title{{PIDopt} -- Matlab software for robust optimization-based{PID} controller design}
\title{{PIDopt} -- Matlab software for robust optimization-based\\{PID} controller design}
\author{Kristian Soltesz}
\date{\today}
\maketitle
\section{Acknowledgement}
\section{Acknowledgement\label{sec:ack}}
The software consists of three scripts for {PID} design, exaplained later. The underlying methods for these files are:
\begin{itemize}
...
...
@@ -58,15 +75,46 @@ The software consists of three scripts for {PID} design, exaplained later. The u
\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.
\noindentPlease 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}.
\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 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}.
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}.
\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.
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}.
\clearpage
\section{Design Methods}
\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,below=9mm of sum2](G3){$-1$};
\node[sumcircle,left=12mm of G1](sum){};
\node[coordinate, left=10mm of sum](ref){};
% FIXME: sum and noise right of P
\node[coordinate, right=12mm of G2](output){};
\node[coordinate, above=10mm of sum2](dist){};
\draw[->](ref)--node[xshift=-1mm](){$r$}(sum);
\draw[->](sum)--node[xshift=-1mm](){$e$}(G1);
\draw[->](G1)--node(){$u$}(sum2);
\draw[->](sum2)--(G2);
\draw[->](dist)--node[yshift=2mm](){$l$}(sum2);
\draw[->](G2)--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$.}
\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,
...
...
@@ -98,6 +146,8 @@ as well as the noise sensitivity function $KS$. We use $L=KP$ to denote the loop
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$.
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
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.)
...
...
@@ -117,22 +167,34 @@ 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{Which method to use?}
\subsection{Numerical aspects}
All the scripts aim at minimizing the effect of a (unit) loadon the process output.
% IE vs IAE optimization
% - convexity
\section{Practical aspects\label{sec:practical}}
Below is a list of practical aspects and considerations.
\section{Other considerations}
The latest version of the source files can be downloaded from the git repository