{ "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", "< [PID Control with Bumpless Transfer](http://nbviewer.jupyter.org/github/jckantor/CBE30338/blob/master/notebooks/04.03-PID_Control_with_Bumpless_Transfer.ipynb) | [Contents](toc.ipynb) | [Realizable PID Control](http://nbviewer.jupyter.org/github/jckantor/CBE30338/blob/master/notebooks/04.05-Realizable-PID-Control.ipynb) >
"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# PID Control with Anti-Reset-Windup"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Additional Benefits of Tracking the Manipulated Variable\n",
"\n",
"An extra **tracking** input was added in order to improve response when switching from manual to automatic control. This turns out to have additional benefits for the case where the controller would otherwise be requesting infeasible values for the manipulated variable.\n",
"\n",
"The next simulation simply repeats the applies the tracking controller to the heater startup case."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"def PID(Kp, Ki, Kd, MV_bar=0, beta=1, gamma=0):\n",
" # initialize stored data\n",
" eD_prev = 0\n",
" t_prev = -100\n",
" P = 0\n",
" I = 0\n",
" D = 0\n",
" \n",
" # initial control\n",
" MV = MV_bar\n",
" \n",
" while True:\n",
" # yield MV, wait for new t, SP, PV, TR\n",
" t, PV, SP, TR = yield MV\n",
" \n",
" # adjust I term so output matches tracking input\n",
" I = TR - MV_bar - P - D\n",
" \n",
" # PID calculations\n",
" P = Kp*(beta*SP - PV)\n",
" I = I + Ki*(SP - PV)*(t - t_prev)\n",
" eD = gamma*SP - PV\n",
" D = Kd*(eD - eD_prev)/(t - t_prev)\n",
" MV = MV_bar + P + I + D\n",
" \n",
" # update stored data for next iteration\n",
" eD_prev = eD\n",
" t_prev = t"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
" "
]
}
],
"metadata": {
"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
}