{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "*This notebook contains course material from [CBE30338](https://jckantor.github.io/CBE30338)\n", "by Jeffrey Kantor (jeff at nd.edu); the content is available [on Github](https://github.com/jckantor/CBE30338.git).\n", "The text is released under the [CC-BY-NC-ND-4.0 license](https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode),\n", "and code is released under the [MIT license](https://opensource.org/licenses/MIT).*" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "< [Realizable PID Control](http://nbviewer.jupyter.org/github/jckantor/CBE30338/blob/master/notebooks/04.05-Realizable-PID-Control.ipynb) | [Contents](toc.ipynb) | [PID Control - Laboratory](http://nbviewer.jupyter.org/github/jckantor/CBE30338/blob/master/notebooks/04.10-PID-Control.ipynb) >
"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# PID Controller Tuning\n",
"\n",
"We have previously discussed many of the features that should be included in any practical implementation of PID control. The notebook addresses the core issue of how to find appropriate values for the control constants $K_P$, $K_I$, and $K_D$ in the non-interacting model for PID control\n",
"\n",
"\\begin{align}\n",
"MV & = \\overline{MV} + K_P(\\beta\\ SP - PV) + K_I \\int^{t} (SP - PV)\\ dt + K_D \\frac{d(\\gamma\\ SP - PV)}{dt}\n",
"\\end{align}\n",
"\n",
"where we have include setpoint weights $\\beta$ and $\\gamma$ for the proportional and derivative terms, respectively. In the case where the PID model is given in the standard ISA form\n",
"\n",
"\\begin{align}\n",
"MV & = \\overline{MV} + K_c\\left[(\\beta\\ SP - PV) + \\frac{1}{\\tau_I}\\int^{t} (SP - PV)\\ dt + \\tau_D \\frac{d(\\gamma\\ SP - PV)}{dt}\\right]\n",
"\\end{align}\n",
"\n",
"the equivalent task is to find values for the control gain $K_c$, the integral time constant $\\tau_I$, and derivative time constant $\\tau_D$. The equivalence of these models is established by the following relationships among the parameters\n",
"\n",
"\\begin{align}\n",
"\\begin{array}{ccc}\n",
"\\mbox{ISA} \\rightarrow \\mbox{Non-interacting} & & \\mbox{Non-interacting} \\rightarrow \\mbox{ISA} \\\\\n",
"K_P = K_c & & K_c = K_P\\\\\n",
"K_I = \\frac{K_c}{\\tau_I} & & \\tau_I = \\frac{K_P}{K_I}\\\\\n",
"K_D = K_c\\tau_D & & \\tau_D = \\frac{K_D}{K_P}\n",
"\\end{array}\n",
"\\end{align}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Empirical Methods\n",
"\n",
"Determining PID control parameters is complicated by the general absence of process models for most applications. Typically the control implementation takes place in three steps:\n",
"\n",
"1. **Idenfication.** A prescribed experiment is performed to create an empirical model for the response of the process to the manipulated input.\n",
"2. **Control Design.** Given an empirical model, find PID control parameters that provide setpoint response, disturbance rejection, and robustness to modeling errors.\n",
"3. **Validation.** Perform a series of test to validate control performance under normal and extreme conditions.\n",
"\n",
"Identification is normally limited to procedures that can be completed with minimal equipment downtime, and without extensive support from \n",
"\n",
"Åström, Karl J., and Tore Hägglund. \"Advanced PID control.\" The Instrumentation Systems and Automation Society. 2006.\n",
"\n",
"Åström, Karl J., and Tore Hägglund. \"Revisiting the Ziegler–Nichols step response method for PID control.\" Journal of process control 14, no. 6 (2004): 635-650.\n",
"\n",
"Garpinger, Olaf, Tore Hägglund, and Karl J. Åström. \"Performance and robustness trade-offs in PID control.\" Journal of process control 24(2004): 568-577.\n",
"\n",
"The basic approach to tuning PID controllers is to:\n",
"\n",
"1. Perform a specified experiment to extract key parameters that specify process behavior.\n",
"3. From the process parameters, use formula to determine control constants.\n",
"4. Test the resulting controller for setpoint tracking and disturbance rejection.\n",
"\n",
"The methods we'll be discussing differ in the type of experiment to be performed, the parameters extracted from experimental results, and the assumptions underlying the choice of control parameters. The methods we'll cover are commonly used in industry, and should be in the toolkit of most chemical engineers.\n",
"\n",
"1. AMIGO\n",
"2. Ziegler-Nichols\n",
"3. Relay Tuning"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[ "
]
}
],
"metadata": {
"celltoolbar": "Tags",
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.4"
}
},
"nbformat": 4,
"nbformat_minor": 2
}