Commit 75e0ee7e authored by Kristian Soltesz's avatar Kristian Soltesz
Browse files

Documentation work-in-progress

parent 2b03e133
\documentclass{article}
\documentclass[a4paper]{article}
\usepackage[left=3cm,right=3cm,top=3cm,bottom=3cm]{geometry}
\usepackage{url}
\usepackage{bibentry}
\usepackage{amsmath}
\usepackage{filecontents}
\usepackage{tikz}
\usetikzlibrary{shapes,positioning}
\usetikzlibrary{narrow}
\tikzset{block/.style={draw, rectangle, line width=2pt, minimum height=3em, minimum width=3em, outer sep=0pt}}
\tikzset{sumcircle/.style={draw, circle, outer sep=0pt,label=center:{{\Large$+$}}, minimum width=2em}}
\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.
\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.
\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
\begin{equation}
......@@ -105,7 +155,7 @@ K(s) = k_p+\dfrac{ki}{s}+k_ds.
\label{eq:pid}
\end{equation}
Their parallel form representation
\begin\equation}
\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.)
......@@ -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
\url{git@gitlab.control.lth.se:kristian/PIDopt.git}
% infeasible starting points
% finding the global optimum
% robust stability /instability
\section{Bug reporting and questions}
\nobibliography{\jobname}
% grid selection. No guarantees inbetween grid points
% discrete time
% All constraints not necessarily simultaneously active
% note on reference handling
% note on using ISE (2-norm) instead
% add references? If so, to reference FF, the standard test batch, Tore and KJs book
\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