|
176 | 176 | "* [Discrete control](2_Control/6_Discrete_control_and_analysis/Discrete%20control.ipynb)\n", |
177 | 177 | "* [Discrete PI](2_Control/6_Discrete_control_and_analysis/Discrete%20PI.ipynb)\n", |
178 | 178 | "* [Dahlin controller](2_Control/6_Discrete_control_and_analysis/Dahlin%20controller.ipynb)\n", |
| 179 | + "* [Simple discrete controller simulation](2_Control/6_Discrete_control_and_analysis/Simple%20discrete%20controller%20simulation.ipynb)\n", |
179 | 180 | "* [Noise models](2_Control/6_Discrete_control_and_analysis/Noise%20models.ipynb)" |
180 | 181 | ] |
181 | 182 | }, |
|
223 | 224 | "* [Interactive PID simulation](tclab/TCLab%20PID.ipynb)\n", |
224 | 225 | "* [Frequency domain](tclab/Frequency%20domain.ipynb)" |
225 | 226 | ] |
| 227 | + }, |
| 228 | + { |
| 229 | + "cell_type": "markdown", |
| 230 | + "metadata": {}, |
| 231 | + "source": [ |
| 232 | + "# tbcontrol\n", |
| 233 | + "The tbcontrol module contains functions helpful to students learning to solve control problems. It is broken up into submodules." |
| 234 | + ] |
| 235 | + }, |
| 236 | + { |
| 237 | + "cell_type": "markdown", |
| 238 | + "metadata": {}, |
| 239 | + "source": [ |
| 240 | + "## symbolic\n", |
| 241 | + "* `linearise` attempt to linearise a symbolic expression\n", |
| 242 | + "* `routh` construct a Routh-Hurwitz array\n", |
| 243 | + "* `pade` pade approximation\n", |
| 244 | + "* `ss2tf` determine the transfer function version of a state space realisation\n", |
| 245 | + "* `sampledvalues` invert the Z transform symbolically\n", |
| 246 | + "* `evaluate_at_times` evaluate a sympy expression at numeric times (useful for plotting responses)" |
| 247 | + ] |
| 248 | + }, |
| 249 | + { |
| 250 | + "cell_type": "markdown", |
| 251 | + "metadata": {}, |
| 252 | + "source": [ |
| 253 | + "## numeric\n", |
| 254 | + "* `skogestad_half` find an approximation of a high order system by Skogestad's half rule" |
| 255 | + ] |
| 256 | + }, |
| 257 | + { |
| 258 | + "cell_type": "markdown", |
| 259 | + "metadata": {}, |
| 260 | + "source": [ |
| 261 | + "## plotting\n", |
| 262 | + "* `cross_axis` create an axis in Matplotlib which has spines going through the origin like a Nyquist diagram would" |
| 263 | + ] |
| 264 | + }, |
| 265 | + { |
| 266 | + "cell_type": "markdown", |
| 267 | + "metadata": {}, |
| 268 | + "source": [ |
| 269 | + "## loops\n", |
| 270 | + "* `feedback` calculate the result of having two blocks in a feedback loop" |
| 271 | + ] |
| 272 | + }, |
| 273 | + { |
| 274 | + "cell_type": "markdown", |
| 275 | + "metadata": {}, |
| 276 | + "source": [ |
| 277 | + "## responses\n", |
| 278 | + "Step responses of certain systems\n", |
| 279 | + "\n", |
| 280 | + "* `fopdt` first order plus dead time\n", |
| 281 | + "* `sopdt` second order plus dead time" |
| 282 | + ] |
| 283 | + }, |
| 284 | + { |
| 285 | + "cell_type": "code", |
| 286 | + "execution_count": null, |
| 287 | + "metadata": {}, |
| 288 | + "outputs": [], |
| 289 | + "source": [] |
226 | 290 | } |
227 | 291 | ], |
228 | 292 | "metadata": { |
|
241 | 305 | "name": "python", |
242 | 306 | "nbconvert_exporter": "python", |
243 | 307 | "pygments_lexer": "ipython3", |
244 | | - "version": "3.7.4" |
| 308 | + "version": "3.7.6" |
245 | 309 | } |
246 | 310 | }, |
247 | 311 | "nbformat": 4, |
|
0 commit comments