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}

\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.

\noindentThe 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}{\ttexample.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}{\ttweb 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}.

\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