---
date: '2024-12-18'
description: How proportional, integral, and derivative feedback affect a control loop, with stability assumptions and discrete implementation.
id: PID controller
modified: 2026-09-22 09:07:42 GMT-04:00
tags:
  - sfwr4aa4
title: PID controller
created: '2024-12-18'
published: '2024-12-18'
pageLayout: default
slug: thoughts/university/twenty-four-twenty-five/sfwr-4aa4/PID-controller
permalink: https://aarnphm.xyz/thoughts/university/twenty-four-twenty-five/sfwr-4aa4/PID-controller.md
generator:
  quartz: v4.6.0
  hostedProvider: Cloudflare
  baseUrl: aarnphm.xyz
full: https://aarnphm.xyz/llms-full.txt
---
Use $r(t)$ for the reference, $y(t)$ for the measured output, and $u(t)$ for the signal sent to the plant. With unity negative feedback,

$$
e(t)=r(t)-y(t),
\qquad
T(s)=\frac{Y(s)}{R(s)}=\frac{G_C(s)G_p(s)}{1+G_C(s)G_p(s)}.
$$

The transfer functions below assume zero initial conditions and a linear plant without actuator saturation. The diagrams label the output transform $C(s)$; it is the same output denoted by $Y(s)$ here.

## proportional control

> \[!definition\] Definition 1.
>
> $$
> u(t)=K_pe(t)=K_p[r(t)-y(t)].
> $$

![[thoughts/university/twenty-four-twenty-five/sfwr-4aa4/prop-control.webp]]

Take $G_p(s)=1/(s+1)$ throughout the first-order examples. With unit controller gain, its closed-loop transfer function is $T(s)=1/(s+2)$.

### adding proportional

For an arbitrary proportional gain,

$$
T(s)=\frac{K_pG_p(s)}{1+K_pG_p(s)}
=\frac{K_p}{s+1+K_p}.
$$

When $K_p\geq0$, increasing it moves the pole farther left and reduces the time constant $1/(1+K_p)$. For a unit-step reference,

$$
y(\infty)=\frac{K_p}{1+K_p},
\qquad
e(\infty)=\frac{1}{1+K_p}.
$$

The remaining error supplies the control input needed to hold the output. Finite proportional gain leaves a steady-state error for this plant and input.

## integral control

An integrator stores accumulated error:

$$
u_I(t)=u_I(0)+K_I\int_0^t e(\tau)\,d\tau,
\qquad
\dot u_I(t)=K_Ie(t).
$$

As long as a constant error remains, the controller keeps changing its output. At an equilibrium with $K_I\ne0$, a constant integrator state requires zero error.

<figure class="tikz" data-remark-tikz style="gap:2rem;"><span class="tikz-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><annotation encoding="application/x-tex">"\\usepackage{tikz}\n\\usetikzlibrary{positioning, arrows.meta}\n\n\\begin{document}\n\\begin{tikzpicture}[auto, node distance=2cm, >=Latex, block/.style={draw, minimum width=1.5cm, minimum height=1cm}]\n\n% Nodes\n\\node[draw, circle, minimum size=0.5cm] (sum) {}; % Summing junction\n\\node[block, right=2cm of sum] (compensator) {$\\frac{K_I}{s}$};\n\\node[block, right=2.5cm of compensator] (Gp) {$\\frac{1}{s+1}$};\n\\node[below=1.5cm of compensator] (feedback) {feedback};\n\n% Labels\n\\node[above=0.1cm of compensator] {compensator};\n\\node[above=0.1cm of Gp] {$G_p(s)$};\n\n% Input and Output\n\\node[left=1cm of sum] (input) {R(s)};\n\\node[right=1cm of Gp] (output) {C(s)};\n\n% Arrows (Forward path)\n\\draw[->] (input) -- (sum.west);\n\\draw[->] (sum.east) -- (compensator.west);\n\\draw[->] (compensator.east) -- (Gp.west);\n\\draw[->] (Gp.east) -- (output);\n\n% Feedback path\n\\draw[->] (output.east)  -- ++(1,0) |- (feedback) -| (sum.south);\n\n% Plus and Minus signs\n\\node at (0.2, 0.5) {$+$};\n\\node at (0.2, -0.5) {$\\textrm{-}$};\n\n\\end{tikzpicture}\n\\end{document}"</annotation></semantics></math></span><img src="data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSIzNjYuMzM5ODZwdCIgaGVpZ2h0PSIxMDUuNDE0N3B0IiB2aWV3Qm94PSItNzIgLTcyIDM2Ni4zMzk4NiAxMDUuNDE0NyI+PGcgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTAuNTU0Nzk0MzExNTIzNDM2LC0zNy43NzExNjM5NDA0Mjk2OCkgc2NhbGUoMSwtMSkiPjxnIHN0cm9rZT0iIzAwMCIgZmlsbD0iIzAwMCI+IDxnIHN0cm9rZS13aWR0aD0iMC40Ij4gPHBhdGggZD0iIE0gNy4xMTMxNyAwLjAgQyA3LjExMzE3IDMuOTI4NTQgMy45Mjg1NCA3LjExMzE3IDAuMCA3LjExMzE3IEMgLTMuOTI4NTQgNy4xMTMxNyAtNy4xMTMxNyAzLjkyODU0IC03LjExMzE3IDAuMCBDIC03LjExMzE3IC0zLjkyODU0IC0zLjkyODU0IC03LjExMzE3IDAuMCAtNy4xMTMxNyBDIDMuOTI4NTQgLTcuMTEzMTcgNy4xMTMxNyAtMy45Mjg1NCA3LjExMzE3IDAuMCBaIE0gMC4wIDAuMCAgIiBmaWxsPSJub25lIj48L3BhdGg+IDxnIHN0cm9rZT0iIzAwMCIgZmlsbD0iIzAwMCI+IDxnIHN0cm9rZT0ibm9uZSIgdHJhbnNmb3JtPSJzY2FsZSgtMSwxKSB0cmFuc2xhdGUoLTEwLjU1NDc5NDMxMTUyMzQzNiwtMzcuNzcxMTYzOTQwNDI5NjgpIHNjYWxlKC0xLC0xKSI+PGcgZmlsbD0iIzAwMCI+IDxnIHN0cm9rZT0ibm9uZSI+IDwvZz4gPC9nPiA8L2c+PC9nPiA8cGF0aCBkPSIgTSA2NC40MTg2NyAtMTQuMjI2MzYgaCA0Mi42NzkxMSB2IDI4LjQ1MjczIGggLTQyLjY3OTExIFogICIgZmlsbD0ibm9uZSI+PC9wYXRoPiA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg3OS4xODk3OSwtMi43MjAyNSkiPiA8ZyBzdHJva2U9IiMwMDAiIGZpbGw9IiMwMDAiPiA8ZyBzdHJva2U9Im5vbmUiIHRyYW5zZm9ybT0ic2NhbGUoLTEsMSkgdHJhbnNsYXRlKC0xMC41NTQ3OTQzMTE1MjM0MzYsLTM3Ljc3MTE2Mzk0MDQyOTY4KSBzY2FsZSgtMSwtMSkiPjxnIGZpbGw9IiMwMDAiPiA8ZyBzdHJva2U9Im5vbmUiPiA8dGV4dCBhbGlnbm1lbnQtYmFzZWxpbmU9ImJhc2VsaW5lIiB5PSItNDEuODc2NzA4OTg0Mzc0OTkiIHg9Ii05LjM1NDc5NzM2MzI4MTI0OCIgZm9udC1mYW1pbHk9InNlcmlmIiBmb250LXNpemU9IjciIGZpbGw9ImJsYWNrIiBmb250LXN0eWxlPSJpdGFsaWMiPks8L3RleHQ+PHRleHQgYWxpZ25tZW50LWJhc2VsaW5lPSJiYXNlbGluZSIgeT0iLTQwLjg3MTEzOTUyNjM2NzE4IiB4PSItMi42MzUyOTc3NzUyNjg1NTQyIiBmb250LWZhbWlseT0ic2VyaWYiIGZvbnQtc2l6ZT0iNSIgZmlsbD0iYmxhY2siIGZvbnQtc3R5bGU9Iml0YWxpYyI+STwvdGV4dD48cmVjdCB4PSItOS4zNTQ3OTczNjMyODEyNDgiIHk9Ii00MC40NzExNjA4ODg2NzE4NyIgd2lkdGg9IjEwLjczNjg3NzQ0MTQwNjI0OCIgaGVpZ2h0PSIwLjM5OTk3ODYzNzY5NTMxMjQiIGZpbGw9ImJsYWNrIj48L3JlY3Q+PHRleHQgYWxpZ25tZW50LWJhc2VsaW5lPSJiYXNlbGluZSIgeT0iLTM0LjMyMjc2OTE2NTAzOTA1NSIgeD0iLTUuODczNTE5ODk3NDYwOTM3IiBmb250LWZhbWlseT0ic2VyaWYiIGZvbnQtc2l6ZT0iNyIgZmlsbD0iYmxhY2siIGZvbnQtc3R5bGU9Iml0YWxpYyI+czwvdGV4dD48L2c+IDwvZz4gPC9nPjwvZz4gPC9nPiA8cGF0aCBkPSIgTSAxNzguNjI5NjUgLTE0LjIyNjM2IGggNDIuNjc5MTEgdiAyOC40NTI3MyBoIC00Mi42NzkxMSBaICAiIGZpbGw9Im5vbmUiPjwvcGF0aD4gPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTkxLjgxOTUzLC0yLjA4MzM0KSI+IDxnIHN0cm9rZT0iIzAwMCIgZmlsbD0iIzAwMCI+IDxnIHN0cm9rZT0ibm9uZSIgdHJhbnNmb3JtPSJzY2FsZSgtMSwxKSB0cmFuc2xhdGUoLTEwLjU1NDc5NDMxMTUyMzQzNiwtMzcuNzcxMTYzOTQwNDI5NjgpIHNjYWxlKC0xLC0xKSI+PGcgZmlsbD0iIzAwMCI+IDxnIHN0cm9rZT0ibm9uZSI+IDx0ZXh0IGFsaWdubWVudC1iYXNlbGluZT0iYmFzZWxpbmUiIHk9Ii00MS43MDg0ODA4MzQ5NjA5MyIgeD0iLTQuMzk4MTc4MTAwNTg1OTM3IiBmb250LWZhbWlseT0ic2VyaWYiIGZvbnQtc2l6ZT0iNyIgZmlsbD0iYmxhY2siPjE8L3RleHQ+PHJlY3QgeD0iLTkuMzU0Nzk3MzYzMjgxMjQ4IiB5PSItNDAuNDcxMTYwODg4NjcxODciIHdpZHRoPSIxMy44OTkzNjgyODYxMzI4MDkiIGhlaWdodD0iMC4zOTk5Nzg2Mzc2OTUzMTI0IiBmaWxsPSJibGFjayI+PC9yZWN0Pjx0ZXh0IGFsaWdubWVudC1iYXNlbGluZT0iYmFzZWxpbmUiIHk9Ii0zNC4zMjI3NjkxNjUwMzkwNTUiIHg9Ii05LjM1NDc5NzM2MzI4MTI0OCIgZm9udC1mYW1pbHk9InNlcmlmIiBmb250LXNpemU9IjciIGZpbGw9ImJsYWNrIiBmb250LXN0eWxlPSJpdGFsaWMiPnM8L3RleHQ+PHRleHQgYWxpZ25tZW50LWJhc2VsaW5lPSJiYXNlbGluZSIgeT0iLTM0LjMyMjc2OTE2NTAzOTA1NSIgeD0iLTUuNTgwNDcxOTkyNDkyNjc1IiBmb250LWZhbWlseT0ic2VyaWYiIGZvbnQtc2l6ZT0iNyIgZmlsbD0iYmxhY2siPisxPC90ZXh0PjwvZz4gPC9nPiA8L2c+PC9nPiA8L2c+IDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDY3LjAwODIsLTY3LjU4Mjg5KSI+IDxnIHN0cm9rZT0iIzAwMCIgZmlsbD0iIzAwMCI+IDxnIHN0cm9rZT0ibm9uZSIgdHJhbnNmb3JtPSJzY2FsZSgtMSwxKSB0cmFuc2xhdGUoLTEwLjU1NDc5NDMxMTUyMzQzNiwtMzcuNzcxMTYzOTQwNDI5NjgpIHNjYWxlKC0xLC0xKSI+PGcgZmlsbD0iIzAwMCI+IDxnIHN0cm9rZT0ibm9uZSI+IDx0ZXh0IGFsaWdubWVudC1iYXNlbGluZT0iYmFzZWxpbmUiIHk9Ii0zNy43NzExNjM5NDA0Mjk2OCIgeD0iLTEwLjU1NDc5NDMxMTUyMzQzNiIgZm9udC1mYW1pbHk9InNlcmlmIiBmb250LXNpemU9IjEwIiBmaWxsPSJibGFjayI+ZmVlZGJhYzwvdGV4dD48dGV4dCBhbGlnbm1lbnQtYmFzZWxpbmU9ImJhc2VsaW5lIiB5PSItMzcuNzcxMTYzOTQwNDI5NjgiIHg9IjIxLjY2NzUyNDMzNzc2ODU1IiBmb250LWZhbWlseT0ic2VyaWYiIGZvbnQtc2l6ZT0iMTAiIGZpbGw9ImJsYWNrIj5rPC90ZXh0PjwvZz4gPC9nPiA8L2c+PC9nPiA8L2c+IDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDU4LjA3NzYsMjIuNzQ5MikiPiA8ZyBzdHJva2U9IiMwMDAiIGZpbGw9IiMwMDAiPiA8ZyBzdHJva2U9Im5vbmUiIHRyYW5zZm9ybT0ic2NhbGUoLTEsMSkgdHJhbnNsYXRlKC0xMC41NTQ3OTQzMTE1MjM0MzYsLTM3Ljc3MTE2Mzk0MDQyOTY4KSBzY2FsZSgtMSwtMSkiPjxnIGZpbGw9IiMwMDAiPiA8ZyBzdHJva2U9Im5vbmUiPiA8dGV4dCBhbGlnbm1lbnQtYmFzZWxpbmU9ImJhc2VsaW5lIiB5PSItMzcuNzcxMTYzOTQwNDI5NjgiIHg9Ii0xMC41NTQ3OTQzMTE1MjM0MzYiIGZvbnQtZmFtaWx5PSJzZXJpZiIgZm9udC1zaXplPSIxMCIgZmlsbD0iYmxhY2siPmNvbXA8L3RleHQ+PHRleHQgYWxpZ25tZW50LWJhc2VsaW5lPSJiYXNlbGluZSIgeT0iLTM3Ljc3MTE2Mzk0MDQyOTY4IiB4PSIxMy4wNTYzOTgzOTE3MjM2MyIgZm9udC1mYW1pbHk9InNlcmlmIiBmb250LXNpemU9IjEwIiBmaWxsPSJibGFjayI+ZW5zYXRvcjwvdGV4dD48L2c+IDwvZz4gPC9nPjwvZz4gPC9nPiA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxODcuNDk0MTQsMjMuNjY1ODYpIj4gPGcgc3Ryb2tlPSIjMDAwIiBmaWxsPSIjMDAwIj4gPGcgc3Ryb2tlPSJub25lIiB0cmFuc2Zvcm09InNjYWxlKC0xLDEpIHRyYW5zbGF0ZSgtMTAuNTU0Nzk0MzExNTIzNDM2LC0zNy43NzExNjM5NDA0Mjk2OCkgc2NhbGUoLTEsLTEpIj48ZyBmaWxsPSIjMDAwIj4gPGcgc3Ryb2tlPSJub25lIj4gPHRleHQgYWxpZ25tZW50LWJhc2VsaW5lPSJiYXNlbGluZSIgeT0iLTM3Ljc3MTE2Mzk0MDQyOTY4IiB4PSItMTAuNTU0Nzk0MzExNTIzNDM2IiBmb250LWZhbWlseT0ic2VyaWYiIGZvbnQtc2l6ZT0iMTAiIGZpbGw9ImJsYWNrIiBmb250LXN0eWxlPSJpdGFsaWMiPkc8L3RleHQ+PHRleHQgYWxpZ25tZW50LWJhc2VsaW5lPSJiYXNlbGluZSIgeT0iLTM2LjI3MTE3OTE5OTIxODc0IiB4PSItMi42OTIzMDI3MDM4NTc0MjE0IiBmb250LWZhbWlseT0ic2VyaWYiIGZvbnQtc2l6ZT0iNyIgZmlsbD0iYmxhY2siIGZvbnQtc3R5bGU9Iml0YWxpYyI+cDwvdGV4dD48dGV4dCBhbGlnbm1lbnQtYmFzZWxpbmU9ImJhc2VsaW5lIiB5PSItMzcuNzcxMTYzOTQwNDI5NjgiIHg9IjEuOTMwMDQyMjY2ODQ1NzAyNyIgZm9udC1mYW1pbHk9InNlcmlmIiBmb250LXNpemU9IjEwIiBmaWxsPSJibGFjayI+KDwvdGV4dD48dGV4dCBhbGlnbm1lbnQtYmFzZWxpbmU9ImJhc2VsaW5lIiB5PSItMzcuNzcxMTYzOTQwNDI5NjgiIHg9IjUuODE4OTQ0OTMxMDMwMjcyNSIgZm9udC1mYW1pbHk9InNlcmlmIiBmb250LXNpemU9IjEwIiBmaWxsPSJibGFjayIgZm9udC1zdHlsZT0iaXRhbGljIj5zPC90ZXh0Pjx0ZXh0IGFsaWdubWVudC1iYXNlbGluZT0iYmFzZWxpbmUiIHk9Ii0zNy43NzExNjM5NDA0Mjk2OCIgeD0iMTAuNTA2NDQ0OTMxMDMwMjcyIiBmb250LWZhbWlseT0ic2VyaWYiIGZvbnQtc2l6ZT0iMTAiIGZpbGw9ImJsYWNrIj4pPC90ZXh0PjwvZz4gPC9nPiA8L2c+PC9nPiA8L2c+IDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC01OC4zODIyMywtMi41KSI+IDxnIHN0cm9rZT0iIzAwMCIgZmlsbD0iIzAwMCI+IDxnIHN0cm9rZT0ibm9uZSIgdHJhbnNmb3JtPSJzY2FsZSgtMSwxKSB0cmFuc2xhdGUoLTEwLjU1NDc5NDMxMTUyMzQzNiwtMzcuNzcxMTYzOTQwNDI5NjgpIHNjYWxlKC0xLC0xKSI+PGcgZmlsbD0iIzAwMCI+IDxnIHN0cm9rZT0ibm9uZSI+IDx0ZXh0IGFsaWdubWVudC1iYXNlbGluZT0iYmFzZWxpbmUiIHk9Ii0zNy43NzExNjM5NDA0Mjk2OCIgeD0iLTEwLjU1NDc5NDMxMTUyMzQzNiIgZm9udC1mYW1pbHk9InNlcmlmIiBmb250LXNpemU9IjEwIiBmaWxsPSJibGFjayI+UihzKTwvdGV4dD48L2c+IDwvZz4gPC9nPjwvZz4gPC9nPiA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyNTMuNDk0NDgsLTIuNSkiPiA8ZyBzdHJva2U9IiMwMDAiIGZpbGw9IiMwMDAiPiA8ZyBzdHJva2U9Im5vbmUiIHRyYW5zZm9ybT0ic2NhbGUoLTEsMSkgdHJhbnNsYXRlKC0xMC41NTQ3OTQzMTE1MjM0MzYsLTM3Ljc3MTE2Mzk0MDQyOTY4KSBzY2FsZSgtMSwtMSkiPjxnIGZpbGw9IiMwMDAiPiA8ZyBzdHJva2U9Im5vbmUiPiA8dGV4dCBhbGlnbm1lbnQtYmFzZWxpbmU9ImJhc2VsaW5lIiB5PSItMzcuNzcxMTYzOTQwNDI5NjgiIHg9Ii0xMC41NTQ3OTQzMTE1MjM0MzYiIGZvbnQtZmFtaWx5PSJzZXJpZiIgZm9udC1zaXplPSIxMCIgZmlsbD0iYmxhY2siPkMocyk8L3RleHQ+PC9nPiA8L2c+IDwvZz48L2c+IDwvZz4gPHBhdGggZD0iIE0gLTM1Ljc2NTkxIDAuMCBMIC0xMS45MTMxNSAwLjAgICIgZmlsbD0ibm9uZSI+PC9wYXRoPiA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTEuOTEzMTUsMC4wKSI+IDxnIHN0cm9rZS1kYXNoYXJyYXk9Im5vbmUiIHN0cm9rZS1kYXNob2Zmc2V0PSIwLjAiPiA8ZyBzdHJva2UtbGluZWpvaW49Im1pdGVyIj4gPHBhdGggZD0iIE0gMy43NzUzOCAwLjAgQyAzLjMxMTc0IDAuMTEzMTMgMS4yNzM3NiAwLjc1NDE4IDAuMCAxLjQ1MTggTCAwLjAgLTEuNDUxOCBDIDEuMjczNzYgLTAuNzU0MTggMy4zMTE3NCAtMC4xMTMxMyAzLjc3NTM4IDAuMCBaICAiPjwvcGF0aD4gPC9nPiA8L2c+ICA8L2c+IDxwYXRoIGQ9IiBNIDcuMzEzMTcgMC4wIEwgNTkuNjE4NyAwLjAgICIgZmlsbD0ibm9uZSI+PC9wYXRoPiA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1OS42MTg3LDAuMCkiPiA8ZyBzdHJva2UtZGFzaGFycmF5PSJub25lIiBzdHJva2UtZGFzaG9mZnNldD0iMC4wIj4gPGcgc3Ryb2tlLWxpbmVqb2luPSJtaXRlciI+IDxwYXRoIGQ9IiBNIDMuNzc1MzggMC4wIEMgMy4zMTE3NCAwLjExMzEzIDEuMjczNzYgMC43NTQxOCAwLjAgMS40NTE4IEwgMC4wIC0xLjQ1MTggQyAxLjI3Mzc2IC0wLjc1NDE4IDMuMzExNzQgLTAuMTEzMTMgMy43NzUzOCAwLjAgWiAgIj48L3BhdGg+IDwvZz4gPC9nPiAgPC9nPiA8cGF0aCBkPSIgTSAxMDcuMjk3NzggMC4wIEwgMTczLjgyOTY4IDAuMCAgIiBmaWxsPSJub25lIj48L3BhdGg+IDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE3My44Mjk2OCwwLjApIj4gPGcgc3Ryb2tlLWRhc2hhcnJheT0ibm9uZSIgc3Ryb2tlLWRhc2hvZmZzZXQ9IjAuMCI+IDxnIHN0cm9rZS1saW5lam9pbj0ibWl0ZXIiPiA8cGF0aCBkPSIgTSAzLjc3NTM4IDAuMCBDIDMuMzExNzQgMC4xMTMxMyAxLjI3Mzc2IDAuNzU0MTggMC4wIDEuNDUxOCBMIDAuMCAtMS40NTE4IEMgMS4yNzM3NiAtMC43NTQxOCAzLjMxMTc0IC0wLjExMzEzIDMuNzc1MzggMC4wIFogICI+PC9wYXRoPiA8L2c+IDwvZz4gIDwvZz4gPHBhdGggZD0iIE0gMjIxLjUwODc2IDAuMCBMIDI0NS4zNjE1MyAwLjAgICIgZmlsbD0ibm9uZSI+PC9wYXRoPiA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyNDUuMzYxNTMsMC4wKSI+IDxnIHN0cm9rZS1kYXNoYXJyYXk9Im5vbmUiIHN0cm9rZS1kYXNob2Zmc2V0PSIwLjAiPiA8ZyBzdHJva2UtbGluZWpvaW49Im1pdGVyIj4gPHBhdGggZD0iIE0gMy43NzUzOCAwLjAgQyAzLjMxMTc0IDAuMTEzMTMgMS4yNzM3NiAwLjc1NDE4IDAuMCAxLjQ1MTggTCAwLjAgLTEuNDUxOCBDIDEuMjczNzYgLTAuNzU0MTggMy4zMTE3NCAtMC4xMTMxMyAzLjc3NTM4IDAuMCBaICAiPjwvcGF0aD4gPC9nPiA8L2c+ICA8L2c+IDxwYXRoIGQ9IiBNIDI3NS45NzE5MSAwLjAgTCAzMDQuNDI0NjUgMC4wIEwgMzA0LjQyNDY1IC02NC4xMTA2NyBMIDEwOC4wNDEyMyAtNjQuMTEwNjcgTSA2My40NzUyMiAtNjQuMTEwNjcgTCAwLjAgLTY0LjExMDY3IEwgMC4wIC0xMS45MTMxNSAgIiBmaWxsPSJub25lIj48L3BhdGg+IDxnIHRyYW5zZm9ybT0ibWF0cml4KDAuMCwxLjAsLTEuMCwwLjAsMC4wLC0xMS45MTMxNSkiPiA8ZyBzdHJva2UtZGFzaGFycmF5PSJub25lIiBzdHJva2UtZGFzaG9mZnNldD0iMC4wIj4gPGcgc3Ryb2tlLWxpbmVqb2luPSJtaXRlciI+IDxwYXRoIGQ9IiBNIDMuNzc1MzggMC4wIEMgMy4zMTE3NCAwLjExMzEzIDEuMjczNzYgMC43NTQxOCAwLjAgMS40NTE4IEwgMC4wIC0xLjQ1MTggQyAxLjI3Mzc2IC0wLjc1NDE4IDMuMzExNzQgLTAuMTEzMTMgMy43NzUzOCAwLjAgWiAgIj48L3BhdGg+IDwvZz4gPC9nPiAgPC9nPiA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxLjgwMTU2LDExLjcyNjM2KSI+IDxnIHN0cm9rZT0iIzAwMCIgZmlsbD0iIzAwMCI+IDxnIHN0cm9rZT0ibm9uZSIgdHJhbnNmb3JtPSJzY2FsZSgtMSwxKSB0cmFuc2xhdGUoLTEwLjU1NDc5NDMxMTUyMzQzNiwtMzcuNzcxMTYzOTQwNDI5NjgpIHNjYWxlKC0xLC0xKSI+PGcgZmlsbD0iIzAwMCI+IDxnIHN0cm9rZT0ibm9uZSI+IDx0ZXh0IGFsaWdubWVudC1iYXNlbGluZT0iYmFzZWxpbmUiIHk9Ii0zNy43NzExNjM5NDA0Mjk2OCIgeD0iLTEwLjU1NDc5NDMxMTUyMzQzNiIgZm9udC1mYW1pbHk9InNlcmlmIiBmb250LXNpemU9IjEwIiBmaWxsPSJibGFjayI+KzwvdGV4dD48L2c+IDwvZz4gPC9nPjwvZz4gPC9nPiA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0LjAyMzgsLTE2LjM3OTE0KSI+IDxnIHN0cm9rZT0iIzAwMCIgZmlsbD0iIzAwMCI+IDxnIHN0cm9rZT0ibm9uZSIgdHJhbnNmb3JtPSJzY2FsZSgtMSwxKSB0cmFuc2xhdGUoLTEwLjU1NDc5NDMxMTUyMzQzNiwtMzcuNzcxMTYzOTQwNDI5NjgpIHNjYWxlKC0xLC0xKSI+PGcgZmlsbD0iIzAwMCI+IDxnIHN0cm9rZT0ibm9uZSI+IDx0ZXh0IGFsaWdubWVudC1iYXNlbGluZT0iYmFzZWxpbmUiIHk9Ii0zNy43NzExNjM5NDA0Mjk2OCIgeD0iLTEwLjU1NDc5NDMxMTUyMzQzNiIgZm9udC1mYW1pbHk9InNlcmlmIiBmb250LXNpemU9IjEwIiBmaWxsPSJibGFjayI+LTwvdGV4dD48L2c+IDwvZz4gPC9nPjwvZz4gPC9nPiA8L2c+IDwvZz4gPC9nPjwvc3ZnPg==" alt="tikz diagram" loading="lazy" decoding="async"><figcaption><em>source code</em><button class="source-code-button" aria-label="copy source code for this tikz graph" title="copy source code for this tikz graph"><svg class="source-icon" xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 -4 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><use href="#code-icon"></use></svg><svg class="check-icon" xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 -4 16 16" fill="currentColor" stroke="none" stroke-width="0" stroke-linecap="round" stroke-linejoin="round"><use href="#github-check"></use></svg></button></figcaption></figure>

For this plant and an integral-only controller,

$$
T(s)=\frac{K_I}{s^2+s+K_I}.
$$

The closed loop is stable for $K_I>0$. For a unit step, the final-value theorem then gives

$$
y(\infty)=1,
\qquad
e(\infty)=0.
$$

Zero step error follows from this stable loop and a constant reference. With a unit ramp $r(t)=t$, the same loop settles to $e(\infty)=1/K_I$. Integral action alone does not make every tracking error vanish.

## PI control

The proportional-integral controller combines the current error with the accumulated error:

$$
G_C(s)=K_p+\frac{K_I}{s}.
$$

<figure class="tikz" data-remark-tikz style="gap:2rem;"><span class="tikz-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><annotation encoding="application/x-tex">"\\usepackage{tikz}\n\\usetikzlibrary{positioning, arrows.meta}\n\n\\begin{document}\n\\begin{tikzpicture}[auto, node distance=2cm, >=Latex, block/.style={draw, minimum width=1.5cm, minimum height=1cm}]\n\n% Nodes\n\\node[draw, circle, minimum size=0.5cm] (sum) {}; % Summing junction\n\\node[block, right=2cm of sum] (compensator) {$G_c = \\frac{K_I}{s} + K_p$};\n\\node[block, right=2.5cm of compensator] (Gp) {$\\frac{1}{s+1}$};\n\\node[below=1.5cm of compensator] (feedback) {feedback};\n\n% Labels\n\\node[above=0.1cm of compensator] {compensator};\n\\node[above=0.1cm of Gp] {$G_p(s)$};\n\n% Input and Output\n\\node[left=1cm of sum] (input) {R(s)};\n\\node[right=1cm of Gp] (output) {C(s)};\n\n% Arrows (Forward path)\n\\draw[->] (input) -- (sum.west);\n\\draw[->] (sum.east) -- (compensator.west);\n\\draw[->] (compensator.east) -- (Gp.west);\n\\draw[->] (Gp.east) -- (output);\n\n% Feedback path\n\\draw[->] (output.east)  -- ++(1,0) |- (feedback) -| (sum.south);\n\n% Plus and Minus signs\n\\node at (0.2, 0.5) {$+$};\n\\node at (0.2, -0.5) {$\\textrm{-}$};\n\n\\end{tikzpicture}\n\\end{document}"</annotation></semantics></math></span><img src="data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSIzOTQuMDcwNTdwdCIgaGVpZ2h0PSIxMDUuNDE0N3B0IiB2aWV3Qm94PSItNzIgLTcyIDM5NC4wNzA1NyAxMDUuNDE0NyI+PGcgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTAuNTU0Nzk0MzExNTIzNDM2LC0zNy43NzExNjM5NDA0Mjk2OCkgc2NhbGUoMSwtMSkiPjxnIHN0cm9rZT0iIzAwMCIgZmlsbD0iIzAwMCI+IDxnIHN0cm9rZS13aWR0aD0iMC40Ij4gPHBhdGggZD0iIE0gNy4xMTMxNyAwLjAgQyA3LjExMzE3IDMuOTI4NTQgMy45Mjg1NCA3LjExMzE3IDAuMCA3LjExMzE3IEMgLTMuOTI4NTQgNy4xMTMxNyAtNy4xMTMxNyAzLjkyODU0IC03LjExMzE3IDAuMCBDIC03LjExMzE3IC0zLjkyODU0IC0zLjkyODU0IC03LjExMzE3IDAuMCAtNy4xMTMxNyBDIDMuOTI4NTQgLTcuMTEzMTcgNy4xMTMxNyAtMy45Mjg1NCA3LjExMzE3IDAuMCBaIE0gMC4wIDAuMCAgIiBmaWxsPSJub25lIj48L3BhdGg+IDxnIHN0cm9rZT0iIzAwMCIgZmlsbD0iIzAwMCI+IDxnIHN0cm9rZT0ibm9uZSIgdHJhbnNmb3JtPSJzY2FsZSgtMSwxKSB0cmFuc2xhdGUoLTEwLjU1NDc5NDMxMTUyMzQzNiwtMzcuNzcxMTYzOTQwNDI5NjgpIHNjYWxlKC0xLC0xKSI+PGcgZmlsbD0iIzAwMCI+IDxnIHN0cm9rZT0ibm9uZSI+IDwvZz4gPC9nPiA8L2c+PC9nPiA8cGF0aCBkPSIgTSA2NC40MTg2NyAtMTQuMjI2MzYgaCA3MC40MDk4MiB2IDI4LjQ1MjczIGggLTcwLjQwOTgyIFogICIgZmlsbD0ibm9uZSI+PC9wYXRoPiA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg2Ny43NTE2NSwtMi43MjAyNSkiPiA8ZyBzdHJva2U9IiMwMDAiIGZpbGw9IiMwMDAiPiA8ZyBzdHJva2U9Im5vbmUiIHRyYW5zZm9ybT0ic2NhbGUoLTEsMSkgdHJhbnNsYXRlKC0xMC41NTQ3OTQzMTE1MjM0MzYsLTM3Ljc3MTE2Mzk0MDQyOTY4KSBzY2FsZSgtMSwtMSkiPjxnIGZpbGw9IiMwMDAiPiA8ZyBzdHJva2U9Im5vbmUiPiA8dGV4dCBhbGlnbm1lbnQtYmFzZWxpbmU9ImJhc2VsaW5lIiB5PSItMzcuNzcxMTYzOTQwNDI5NjgiIHg9Ii0xMC41NTQ3OTQzMTE1MjM0MzYiIGZvbnQtZmFtaWx5PSJzZXJpZiIgZm9udC1zaXplPSIxMCIgZmlsbD0iYmxhY2siIGZvbnQtc3R5bGU9Iml0YWxpYyI+RzwvdGV4dD48dGV4dCBhbGlnbm1lbnQtYmFzZWxpbmU9ImJhc2VsaW5lIiB5PSItMzYuMjcxMTc5MTk5MjE4NzQiIHg9Ii0yLjY5MjMwMjcwMzg1NzQyMTQiIGZvbnQtZmFtaWx5PSJzZXJpZiIgZm9udC1zaXplPSI3IiBmaWxsPSJibGFjayIgZm9udC1zdHlsZT0iaXRhbGljIj5jPC90ZXh0Pjx0ZXh0IGFsaWdubWVudC1iYXNlbGluZT0iYmFzZWxpbmUiIHk9Ii0zNy43NzExNjM5NDA0Mjk2OCIgeD0iNC4xNTkxNTI5ODQ2MTkxNCIgZm9udC1mYW1pbHk9InNlcmlmIiBmb250LXNpemU9IjEwIiBmaWxsPSJibGFjayI+PTwvdGV4dD48dGV4dCBhbGlnbm1lbnQtYmFzZWxpbmU9ImJhc2VsaW5lIiB5PSItNDEuODc2NzA4OTg0Mzc0OTkiIHg9IjE1LjkxNDY2NTIyMjE2Nzk2NSIgZm9udC1mYW1pbHk9InNlcmlmIiBmb250LXNpemU9IjciIGZpbGw9ImJsYWNrIiBmb250LXN0eWxlPSJpdGFsaWMiPks8L3RleHQ+PHRleHQgYWxpZ25tZW50LWJhc2VsaW5lPSJiYXNlbGluZSIgeT0iLTQwLjg3MTEzOTUyNjM2NzE4IiB4PSIyMi42MzQxNjQ4MTAxODA2NiIgZm9udC1mYW1pbHk9InNlcmlmIiBmb250LXNpemU9IjUiIGZpbGw9ImJsYWNrIiBmb250LXN0eWxlPSJpdGFsaWMiPkk8L3RleHQ+PHJlY3QgeD0iMTUuOTE0NjY1MjIyMTY3OTY1IiB5PSItNDAuNDcxMTYwODg4NjcxODciIHdpZHRoPSIxMC43MzY4Nzc0NDE0MDYyNDgiIGhlaWdodD0iMC4zOTk5Nzg2Mzc2OTUzMTI0IiBmaWxsPSJibGFjayI+PC9yZWN0Pjx0ZXh0IGFsaWdubWVudC1iYXNlbGluZT0iYmFzZWxpbmUiIHk9Ii0zNC4zMjI3NjkxNjUwMzkwNTUiIHg9IjE5LjM5NTk0MjY4Nzk4ODI3OCIgZm9udC1mYW1pbHk9InNlcmlmIiBmb250LXNpemU9IjciIGZpbGw9ImJsYWNrIiBmb250LXN0eWxlPSJpdGFsaWMiPnM8L3RleHQ+PHRleHQgYWxpZ25tZW50LWJhc2VsaW5lPSJiYXNlbGluZSIgeT0iLTM3Ljc3MTE2Mzk0MDQyOTY4IiB4PSIzMC4wNzM3MDc1ODA1NjY0IiBmb250LWZhbWlseT0ic2VyaWYiIGZvbnQtc2l6ZT0iMTAiIGZpbGw9ImJsYWNrIj4rPC90ZXh0Pjx0ZXh0IGFsaWdubWVudC1iYXNlbGluZT0iYmFzZWxpbmUiIHk9Ii0zNy43NzExNjM5NDA0Mjk2OCIgeD0iNDAuMDczNjgwODc3Njg1NTQiIGZvbnQtZmFtaWx5PSJzZXJpZiIgZm9udC1zaXplPSIxMCIgZmlsbD0iYmxhY2siIGZvbnQtc3R5bGU9Iml0YWxpYyI+SzwvdGV4dD48dGV4dCBhbGlnbm1lbnQtYmFzZWxpbmU9ImJhc2VsaW5lIiB5PSItMzYuMjcxMTc5MTk5MjE4NzQiIHg9IjQ4LjU2Njc1MTQ4MDEwMjUyNSIgZm9udC1mYW1pbHk9InNlcmlmIiBmb250LXNpemU9IjciIGZpbGw9ImJsYWNrIiBmb250LXN0eWxlPSJpdGFsaWMiPnA8L3RleHQ+PC9nPiA8L2c+IDwvZz48L2c+IDwvZz4gPHBhdGggZD0iIE0gMjA2LjM2MDM3IC0xNC4yMjYzNiBoIDQyLjY3OTExIHYgMjguNDUyNzMgaCAtNDIuNjc5MTEgWiAgIiBmaWxsPSJub25lIj48L3BhdGg+IDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIxOS41NTAyNSwtMi4wODMzNCkiPiA8ZyBzdHJva2U9IiMwMDAiIGZpbGw9IiMwMDAiPiA8ZyBzdHJva2U9Im5vbmUiIHRyYW5zZm9ybT0ic2NhbGUoLTEsMSkgdHJhbnNsYXRlKC0xMC41NTQ3OTQzMTE1MjM0MzYsLTM3Ljc3MTE2Mzk0MDQyOTY4KSBzY2FsZSgtMSwtMSkiPjxnIGZpbGw9IiMwMDAiPiA8ZyBzdHJva2U9Im5vbmUiPiA8dGV4dCBhbGlnbm1lbnQtYmFzZWxpbmU9ImJhc2VsaW5lIiB5PSItNDEuNzA4NDgwODM0OTYwOTMiIHg9Ii00LjM5ODE3ODEwMDU4NTkzNyIgZm9udC1mYW1pbHk9InNlcmlmIiBmb250LXNpemU9IjciIGZpbGw9ImJsYWNrIj4xPC90ZXh0PjxyZWN0IHg9Ii05LjM1NDc5NzM2MzI4MTI0OCIgeT0iLTQwLjQ3MTE2MDg4ODY3MTg3IiB3aWR0aD0iMTMuODk5MzY4Mjg2MTMyODA5IiBoZWlnaHQ9IjAuMzk5OTc4NjM3Njk1MzEyNCIgZmlsbD0iYmxhY2siPjwvcmVjdD48dGV4dCBhbGlnbm1lbnQtYmFzZWxpbmU9ImJhc2VsaW5lIiB5PSItMzQuMzIyNzY5MTY1MDM5MDU1IiB4PSItOS4zNTQ3OTczNjMyODEyNDgiIGZvbnQtZmFtaWx5PSJzZXJpZiIgZm9udC1zaXplPSI3IiBmaWxsPSJibGFjayIgZm9udC1zdHlsZT0iaXRhbGljIj5zPC90ZXh0Pjx0ZXh0IGFsaWdubWVudC1iYXNlbGluZT0iYmFzZWxpbmUiIHk9Ii0zNC4zMjI3NjkxNjUwMzkwNTUiIHg9Ii01LjU4MDQ3MTk5MjQ5MjY3NSIgZm9udC1mYW1pbHk9InNlcmlmIiBmb250LXNpemU9IjciIGZpbGw9ImJsYWNrIj4rMTwvdGV4dD48L2c+IDwvZz4gPC9nPjwvZz4gPC9nPiA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg4MC44NzM1NSwtNjcuNTgyODkpIj4gPGcgc3Ryb2tlPSIjMDAwIiBmaWxsPSIjMDAwIj4gPGcgc3Ryb2tlPSJub25lIiB0cmFuc2Zvcm09InNjYWxlKC0xLDEpIHRyYW5zbGF0ZSgtMTAuNTU0Nzk0MzExNTIzNDM2LC0zNy43NzExNjM5NDA0Mjk2OCkgc2NhbGUoLTEsLTEpIj48ZyBmaWxsPSIjMDAwIj4gPGcgc3Ryb2tlPSJub25lIj4gPHRleHQgYWxpZ25tZW50LWJhc2VsaW5lPSJiYXNlbGluZSIgeT0iLTM3Ljc3MTE2Mzk0MDQyOTY4IiB4PSItMTAuNTU0Nzk0MzExNTIzNDM2IiBmb250LWZhbWlseT0ic2VyaWYiIGZvbnQtc2l6ZT0iMTAiIGZpbGw9ImJsYWNrIj5mZWVkYmFjPC90ZXh0Pjx0ZXh0IGFsaWdubWVudC1iYXNlbGluZT0iYmFzZWxpbmUiIHk9Ii0zNy43NzExNjM5NDA0Mjk2OCIgeD0iMjEuNjY3NTI0MzM3NzY4NTUiIGZvbnQtZmFtaWx5PSJzZXJpZiIgZm9udC1zaXplPSIxMCIgZmlsbD0iYmxhY2siPms8L3RleHQ+PC9nPiA8L2c+IDwvZz48L2c+IDwvZz4gPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNzEuOTQyOTYsMjIuNzQ5MikiPiA8ZyBzdHJva2U9IiMwMDAiIGZpbGw9IiMwMDAiPiA8ZyBzdHJva2U9Im5vbmUiIHRyYW5zZm9ybT0ic2NhbGUoLTEsMSkgdHJhbnNsYXRlKC0xMC41NTQ3OTQzMTE1MjM0MzYsLTM3Ljc3MTE2Mzk0MDQyOTY4KSBzY2FsZSgtMSwtMSkiPjxnIGZpbGw9IiMwMDAiPiA8ZyBzdHJva2U9Im5vbmUiPiA8dGV4dCBhbGlnbm1lbnQtYmFzZWxpbmU9ImJhc2VsaW5lIiB5PSItMzcuNzcxMTYzOTQwNDI5NjgiIHg9Ii0xMC41NTQ3OTQzMTE1MjM0MzYiIGZvbnQtZmFtaWx5PSJzZXJpZiIgZm9udC1zaXplPSIxMCIgZmlsbD0iYmxhY2siPmNvbXA8L3RleHQ+PHRleHQgYWxpZ25tZW50LWJhc2VsaW5lPSJiYXNlbGluZSIgeT0iLTM3Ljc3MTE2Mzk0MDQyOTY4IiB4PSIxMy4wNTYzOTgzOTE3MjM2MyIgZm9udC1mYW1pbHk9InNlcmlmIiBmb250LXNpemU9IjEwIiBmaWxsPSJibGFjayI+ZW5zYXRvcjwvdGV4dD48L2c+IDwvZz4gPC9nPjwvZz4gPC9nPiA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyMTUuMjI0ODUsMjMuNjY1ODYpIj4gPGcgc3Ryb2tlPSIjMDAwIiBmaWxsPSIjMDAwIj4gPGcgc3Ryb2tlPSJub25lIiB0cmFuc2Zvcm09InNjYWxlKC0xLDEpIHRyYW5zbGF0ZSgtMTAuNTU0Nzk0MzExNTIzNDM2LC0zNy43NzExNjM5NDA0Mjk2OCkgc2NhbGUoLTEsLTEpIj48ZyBmaWxsPSIjMDAwIj4gPGcgc3Ryb2tlPSJub25lIj4gPHRleHQgYWxpZ25tZW50LWJhc2VsaW5lPSJiYXNlbGluZSIgeT0iLTM3Ljc3MTE2Mzk0MDQyOTY4IiB4PSItMTAuNTU0Nzk0MzExNTIzNDM2IiBmb250LWZhbWlseT0ic2VyaWYiIGZvbnQtc2l6ZT0iMTAiIGZpbGw9ImJsYWNrIiBmb250LXN0eWxlPSJpdGFsaWMiPkc8L3RleHQ+PHRleHQgYWxpZ25tZW50LWJhc2VsaW5lPSJiYXNlbGluZSIgeT0iLTM2LjI3MTE3OTE5OTIxODc0IiB4PSItMi42OTIzMDI3MDM4NTc0MjE0IiBmb250LWZhbWlseT0ic2VyaWYiIGZvbnQtc2l6ZT0iNyIgZmlsbD0iYmxhY2siIGZvbnQtc3R5bGU9Iml0YWxpYyI+cDwvdGV4dD48dGV4dCBhbGlnbm1lbnQtYmFzZWxpbmU9ImJhc2VsaW5lIiB5PSItMzcuNzcxMTYzOTQwNDI5NjgiIHg9IjEuOTMwMDQyMjY2ODQ1NzAyNyIgZm9udC1mYW1pbHk9InNlcmlmIiBmb250LXNpemU9IjEwIiBmaWxsPSJibGFjayI+KDwvdGV4dD48dGV4dCBhbGlnbm1lbnQtYmFzZWxpbmU9ImJhc2VsaW5lIiB5PSItMzcuNzcxMTYzOTQwNDI5NjgiIHg9IjUuODE4OTQ0OTMxMDMwMjcyNSIgZm9udC1mYW1pbHk9InNlcmlmIiBmb250LXNpemU9IjEwIiBmaWxsPSJibGFjayIgZm9udC1zdHlsZT0iaXRhbGljIj5zPC90ZXh0Pjx0ZXh0IGFsaWdubWVudC1iYXNlbGluZT0iYmFzZWxpbmUiIHk9Ii0zNy43NzExNjM5NDA0Mjk2OCIgeD0iMTAuNTA2NDQ0OTMxMDMwMjcyIiBmb250LWZhbWlseT0ic2VyaWYiIGZvbnQtc2l6ZT0iMTAiIGZpbGw9ImJsYWNrIj4pPC90ZXh0PjwvZz4gPC9nPiA8L2c+PC9nPiA8L2c+IDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC01OC4zODIyMywtMi41KSI+IDxnIHN0cm9rZT0iIzAwMCIgZmlsbD0iIzAwMCI+IDxnIHN0cm9rZT0ibm9uZSIgdHJhbnNmb3JtPSJzY2FsZSgtMSwxKSB0cmFuc2xhdGUoLTEwLjU1NDc5NDMxMTUyMzQzNiwtMzcuNzcxMTYzOTQwNDI5NjgpIHNjYWxlKC0xLC0xKSI+PGcgZmlsbD0iIzAwMCI+IDxnIHN0cm9rZT0ibm9uZSI+IDx0ZXh0IGFsaWdubWVudC1iYXNlbGluZT0iYmFzZWxpbmUiIHk9Ii0zNy43NzExNjM5NDA0Mjk2OCIgeD0iLTEwLjU1NDc5NDMxMTUyMzQzNiIgZm9udC1mYW1pbHk9InNlcmlmIiBmb250LXNpemU9IjEwIiBmaWxsPSJibGFjayI+UihzKTwvdGV4dD48L2c+IDwvZz4gPC9nPjwvZz4gPC9nPiA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyODEuMjI1MTksLTIuNSkiPiA8ZyBzdHJva2U9IiMwMDAiIGZpbGw9IiMwMDAiPiA8ZyBzdHJva2U9Im5vbmUiIHRyYW5zZm9ybT0ic2NhbGUoLTEsMSkgdHJhbnNsYXRlKC0xMC41NTQ3OTQzMTE1MjM0MzYsLTM3Ljc3MTE2Mzk0MDQyOTY4KSBzY2FsZSgtMSwtMSkiPjxnIGZpbGw9IiMwMDAiPiA8ZyBzdHJva2U9Im5vbmUiPiA8dGV4dCBhbGlnbm1lbnQtYmFzZWxpbmU9ImJhc2VsaW5lIiB5PSItMzcuNzcxMTYzOTQwNDI5NjgiIHg9Ii0xMC41NTQ3OTQzMTE1MjM0MzYiIGZvbnQtZmFtaWx5PSJzZXJpZiIgZm9udC1zaXplPSIxMCIgZmlsbD0iYmxhY2siPkMocyk8L3RleHQ+PC9nPiA8L2c+IDwvZz48L2c+IDwvZz4gPHBhdGggZD0iIE0gLTM1Ljc2NTkxIDAuMCBMIC0xMS45MTMxNSAwLjAgICIgZmlsbD0ibm9uZSI+PC9wYXRoPiA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTEuOTEzMTUsMC4wKSI+IDxnIHN0cm9rZS1kYXNoYXJyYXk9Im5vbmUiIHN0cm9rZS1kYXNob2Zmc2V0PSIwLjAiPiA8ZyBzdHJva2UtbGluZWpvaW49Im1pdGVyIj4gPHBhdGggZD0iIE0gMy43NzUzOCAwLjAgQyAzLjMxMTc0IDAuMTEzMTMgMS4yNzM3NiAwLjc1NDE4IDAuMCAxLjQ1MTggTCAwLjAgLTEuNDUxOCBDIDEuMjczNzYgLTAuNzU0MTggMy4zMTE3NCAtMC4xMTMxMyAzLjc3NTM4IDAuMCBaICAiPjwvcGF0aD4gPC9nPiA8L2c+ICA8L2c+IDxwYXRoIGQ9IiBNIDcuMzEzMTcgMC4wIEwgNTkuNjE4NyAwLjAgICIgZmlsbD0ibm9uZSI+PC9wYXRoPiA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1OS42MTg3LDAuMCkiPiA8ZyBzdHJva2UtZGFzaGFycmF5PSJub25lIiBzdHJva2UtZGFzaG9mZnNldD0iMC4wIj4gPGcgc3Ryb2tlLWxpbmVqb2luPSJtaXRlciI+IDxwYXRoIGQ9IiBNIDMuNzc1MzggMC4wIEMgMy4zMTE3NCAwLjExMzEzIDEuMjczNzYgMC43NTQxOCAwLjAgMS40NTE4IEwgMC4wIC0xLjQ1MTggQyAxLjI3Mzc2IC0wLjc1NDE4IDMuMzExNzQgLTAuMTEzMTMgMy43NzUzOCAwLjAgWiAgIj48L3BhdGg+IDwvZz4gPC9nPiAgPC9nPiA8cGF0aCBkPSIgTSAxMzUuMDI4NDkgMC4wIEwgMjAxLjU2MDQgMC4wICAiIGZpbGw9Im5vbmUiPjwvcGF0aD4gPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjAxLjU2MDQsMC4wKSI+IDxnIHN0cm9rZS1kYXNoYXJyYXk9Im5vbmUiIHN0cm9rZS1kYXNob2Zmc2V0PSIwLjAiPiA8ZyBzdHJva2UtbGluZWpvaW49Im1pdGVyIj4gPHBhdGggZD0iIE0gMy43NzUzOCAwLjAgQyAzLjMxMTc0IDAuMTEzMTMgMS4yNzM3NiAwLjc1NDE4IDAuMCAxLjQ1MTggTCAwLjAgLTEuNDUxOCBDIDEuMjczNzYgLTAuNzU0MTggMy4zMTE3NCAtMC4xMTMxMyAzLjc3NTM4IDAuMCBaICAiPjwvcGF0aD4gPC9nPiA8L2c+ICA8L2c+IDxwYXRoIGQ9IiBNIDI0OS4yMzk0NyAwLjAgTCAyNzMuMDkyMjQgMC4wICAiIGZpbGw9Im5vbmUiPjwvcGF0aD4gPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjczLjA5MjI0LDAuMCkiPiA8ZyBzdHJva2UtZGFzaGFycmF5PSJub25lIiBzdHJva2UtZGFzaG9mZnNldD0iMC4wIj4gPGcgc3Ryb2tlLWxpbmVqb2luPSJtaXRlciI+IDxwYXRoIGQ9IiBNIDMuNzc1MzggMC4wIEMgMy4zMTE3NCAwLjExMzEzIDEuMjczNzYgMC43NTQxOCAwLjAgMS40NTE4IEwgMC4wIC0xLjQ1MTggQyAxLjI3Mzc2IC0wLjc1NDE4IDMuMzExNzQgLTAuMTEzMTMgMy43NzUzOCAwLjAgWiAgIj48L3BhdGg+IDwvZz4gPC9nPiAgPC9nPiA8cGF0aCBkPSIgTSAzMDMuNzAyNjIgMC4wIEwgMzMyLjE1NTM2IDAuMCBMIDMzMi4xNTUzNiAtNjQuMTEwNjcgTCAxMjEuOTA2NTkgLTY0LjExMDY3IE0gNzcuMzQwNTggLTY0LjExMDY3IEwgMC4wIC02NC4xMTA2NyBMIDAuMCAtMTEuOTEzMTUgICIgZmlsbD0ibm9uZSI+PC9wYXRoPiA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgwLjAsMS4wLC0xLjAsMC4wLDAuMCwtMTEuOTEzMTUpIj4gPGcgc3Ryb2tlLWRhc2hhcnJheT0ibm9uZSIgc3Ryb2tlLWRhc2hvZmZzZXQ9IjAuMCI+IDxnIHN0cm9rZS1saW5lam9pbj0ibWl0ZXIiPiA8cGF0aCBkPSIgTSAzLjc3NTM4IDAuMCBDIDMuMzExNzQgMC4xMTMxMyAxLjI3Mzc2IDAuNzU0MTggMC4wIDEuNDUxOCBMIDAuMCAtMS40NTE4IEMgMS4yNzM3NiAtMC43NTQxOCAzLjMxMTc0IC0wLjExMzEzIDMuNzc1MzggMC4wIFogICI+PC9wYXRoPiA8L2c+IDwvZz4gIDwvZz4gPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMS44MDE1NiwxMS43MjYzNikiPiA8ZyBzdHJva2U9IiMwMDAiIGZpbGw9IiMwMDAiPiA8ZyBzdHJva2U9Im5vbmUiIHRyYW5zZm9ybT0ic2NhbGUoLTEsMSkgdHJhbnNsYXRlKC0xMC41NTQ3OTQzMTE1MjM0MzYsLTM3Ljc3MTE2Mzk0MDQyOTY4KSBzY2FsZSgtMSwtMSkiPjxnIGZpbGw9IiMwMDAiPiA8ZyBzdHJva2U9Im5vbmUiPiA8dGV4dCBhbGlnbm1lbnQtYmFzZWxpbmU9ImJhc2VsaW5lIiB5PSItMzcuNzcxMTYzOTQwNDI5NjgiIHg9Ii0xMC41NTQ3OTQzMTE1MjM0MzYiIGZvbnQtZmFtaWx5PSJzZXJpZiIgZm9udC1zaXplPSIxMCIgZmlsbD0iYmxhY2siPis8L3RleHQ+PC9nPiA8L2c+IDwvZz48L2c+IDwvZz4gPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNC4wMjM4LC0xNi4zNzkxNCkiPiA8ZyBzdHJva2U9IiMwMDAiIGZpbGw9IiMwMDAiPiA8ZyBzdHJva2U9Im5vbmUiIHRyYW5zZm9ybT0ic2NhbGUoLTEsMSkgdHJhbnNsYXRlKC0xMC41NTQ3OTQzMTE1MjM0MzYsLTM3Ljc3MTE2Mzk0MDQyOTY4KSBzY2FsZSgtMSwtMSkiPjxnIGZpbGw9IiMwMDAiPiA8ZyBzdHJva2U9Im5vbmUiPiA8dGV4dCBhbGlnbm1lbnQtYmFzZWxpbmU9ImJhc2VsaW5lIiB5PSItMzcuNzcxMTYzOTQwNDI5NjgiIHg9Ii0xMC41NTQ3OTQzMTE1MjM0MzYiIGZvbnQtZmFtaWx5PSJzZXJpZiIgZm9udC1zaXplPSIxMCIgZmlsbD0iYmxhY2siPi08L3RleHQ+PC9nPiA8L2c+IDwvZz48L2c+IDwvZz4gPC9nPiA8L2c+IDwvZz48L3N2Zz4=" alt="tikz diagram" loading="lazy" decoding="async"><figcaption><em>source code</em><button class="source-code-button" aria-label="copy source code for this tikz graph" title="copy source code for this tikz graph"><svg class="source-icon" xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 -4 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><use href="#code-icon"></use></svg><svg class="check-icon" xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 -4 16 16" fill="currentColor" stroke="none" stroke-width="0" stroke-linecap="round" stroke-linejoin="round"><use href="#github-check"></use></svg></button></figcaption></figure>

The closed-loop transfer function becomes

$$
T(s)=\frac{K_ps+K_I}{s^2+(1+K_p)s+K_I}.
$$

For this second-order characteristic polynomial, stability requires $K_I>0$ and $K_p>-1$. Under these conditions, a unit step has zero steady-state error. The denominator gives

$$
\omega_n=\sqrt{K_I},
\qquad
\zeta=\frac{1+K_p}{2\sqrt{K_I}}.
$$

At fixed $K_p$, raising $K_I$ increases the natural frequency and reduces the damping ratio. Gain changes affect the same pair of poles, so tuning each term in isolation can produce an oscillatory response.

## derivative control

Ideal derivative action responds to the rate of change of error:

$$
u_D(t)=K_D\dot e(t),
\qquad
G_C(s)=K_Ds.
$$

<figure class="tikz" data-remark-tikz style="gap:2rem;"><span class="tikz-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><annotation encoding="application/x-tex">"\\usepackage{tikz}\n\\usetikzlibrary{positioning, arrows.meta}\n\n\\begin{document}\n\\begin{tikzpicture}[auto, node distance=2cm, >=Latex, block/.style={draw, minimum width=1.5cm, minimum height=1cm}]\n\n% Nodes\n\\node[draw, circle, minimum size=0.5cm] (sum) {}; % Summing junction\n\\node[block, right=2cm of sum] (compensator) {$G_c = K_D s$};\n\\node[block, right=2.5cm of compensator] (Gp) {$\\frac{1}{s+1}$};\n\\node[below=1.5cm of compensator] (feedback) {feedback};\n\n% Labels\n\\node[above=0.1cm of compensator] {compensator};\n\\node[above=0.1cm of Gp] {$G_p(s)$};\n\n% Input and Output\n\\node[left=1cm of sum] (input) {R(s)};\n\\node[right=1cm of Gp] (output) {C(s)};\n\n% Arrows (Forward path)\n\\draw[->] (input) -- (sum.west);\n\\draw[->] (sum.east) -- (compensator.west);\n\\draw[->] (compensator.east) -- (Gp.west);\n\\draw[->] (Gp.east) -- (output);\n\n% Feedback path\n\\draw[->] (output.east)  -- ++(1,0) |- (feedback) -| (sum.south);\n\n% Plus and Minus signs\n\\node at (0.2, 0.5) {$+$};\n\\node at (0.2, -0.5) {$\\textrm{-}$};\n\n\\end{tikzpicture}\n\\end{document}"</annotation></semantics></math></span><img src="data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHdpZHRoPSIzNzYuMDMwNDdwdCIgaGVpZ2h0PSIxMDUuNDE0N3B0IiB2aWV3Qm94PSItNzIgLTcyIDM3Ni4wMzA0NyAxMDUuNDE0NyI+PGcgc3Ryb2tlLW1pdGVybGltaXQ9IjEwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTAuNTU0Nzk0MzExNTIzNDM2LC0zNy43NzExNjM5NDA0Mjk2OCkgc2NhbGUoMSwtMSkiPjxnIHN0cm9rZT0iIzAwMCIgZmlsbD0iIzAwMCI+IDxnIHN0cm9rZS13aWR0aD0iMC40Ij4gPHBhdGggZD0iIE0gNy4xMTMxNyAwLjAgQyA3LjExMzE3IDMuOTI4NTQgMy45Mjg1NCA3LjExMzE3IDAuMCA3LjExMzE3IEMgLTMuOTI4NTQgNy4xMTMxNyAtNy4xMTMxNyAzLjkyODU0IC03LjExMzE3IDAuMCBDIC03LjExMzE3IC0zLjkyODU0IC0zLjkyODU0IC03LjExMzE3IDAuMCAtNy4xMTMxNyBDIDMuOTI4NTQgLTcuMTEzMTcgNy4xMTMxNyAtMy45Mjg1NCA3LjExMzE3IDAuMCBaIE0gMC4wIDAuMCAgIiBmaWxsPSJub25lIj48L3BhdGg+IDxnIHN0cm9rZT0iIzAwMCIgZmlsbD0iIzAwMCI+IDxnIHN0cm9rZT0ibm9uZSIgdHJhbnNmb3JtPSJzY2FsZSgtMSwxKSB0cmFuc2xhdGUoLTEwLjU1NDc5NDMxMTUyMzQzNiwtMzcuNzcxMTYzOTQwNDI5NjgpIHNjYWxlKC0xLC0xKSI+PGcgZmlsbD0iIzAwMCI+IDxnIHN0cm9rZT0ibm9uZSI+IDwvZz4gPC9nPiA8L2c+PC9nPiA8cGF0aCBkPSIgTSA2NC40MTg2NyAtMTQuMjI2MzYgaCA1Mi4zNjk3MiB2IDI4LjQ1MjczIGggLTUyLjM2OTcyIFogICIgZmlsbD0ibm9uZSI+PC9wYXRoPiA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg2Ny43NTE2NSwtMi42NjY2NykiPiA8ZyBzdHJva2U9IiMwMDAiIGZpbGw9IiMwMDAiPiA8ZyBzdHJva2U9Im5vbmUiIHRyYW5zZm9ybT0ic2NhbGUoLTEsMSkgdHJhbnNsYXRlKC0xMC41NTQ3OTQzMTE1MjM0MzYsLTM3Ljc3MTE2Mzk0MDQyOTY4KSBzY2FsZSgtMSwtMSkiPjxnIGZpbGw9IiMwMDAiPiA8ZyBzdHJva2U9Im5vbmUiPiA8dGV4dCBhbGlnbm1lbnQtYmFzZWxpbmU9ImJhc2VsaW5lIiB5PSItMzcuNzcxMTYzOTQwNDI5NjgiIHg9Ii0xMC41NTQ3OTQzMTE1MjM0MzYiIGZvbnQtZmFtaWx5PSJzZXJpZiIgZm9udC1zaXplPSIxMCIgZmlsbD0iYmxhY2siIGZvbnQtc3R5bGU9Iml0YWxpYyI+RzwvdGV4dD48dGV4dCBhbGlnbm1lbnQtYmFzZWxpbmU9ImJhc2VsaW5lIiB5PSItMzYuMjcxMTc5MTk5MjE4NzQiIHg9Ii0yLjY5MjMwMjcwMzg1NzQyMTQiIGZvbnQtZmFtaWx5PSJzZXJpZiIgZm9udC1zaXplPSI3IiBmaWxsPSJibGFjayIgZm9udC1zdHlsZT0iaXRhbGljIj5jPC90ZXh0Pjx0ZXh0IGFsaWdubWVudC1iYXNlbGluZT0iYmFzZWxpbmUiIHk9Ii0zNy43NzExNjM5NDA0Mjk2OCIgeD0iNC4xNTkxNTI5ODQ2MTkxNCIgZm9udC1mYW1pbHk9InNlcmlmIiBmb250LXNpemU9IjEwIiBmaWxsPSJibGFjayI+PTwvdGV4dD48dGV4dCBhbGlnbm1lbnQtYmFzZWxpbmU9ImJhc2VsaW5lIiB5PSItMzcuNzcxMTYzOTQwNDI5NjgiIHg9IjE0LjcxNDY2ODI3MzkyNTc3OCIgZm9udC1mYW1pbHk9InNlcmlmIiBmb250LXNpemU9IjEwIiBmaWxsPSJibGFjayIgZm9udC1zdHlsZT0iaXRhbGljIj5LPC90ZXh0Pjx0ZXh0IGFsaWdubWVudC1iYXNlbGluZT0iYmFzZWxpbmUiIHk9Ii0zNi4yNzExNzkxOTkyMTg3NCIgeD0iMjMuMjA3NzM4ODc2MzQyNzciIGZvbnQtZmFtaWx5PSJzZXJpZiIgZm9udC1zaXplPSI3IiBmaWxsPSJibGFjayIgZm9udC1zdHlsZT0iaXRhbGljIj5EPC90ZXh0Pjx0ZXh0IGFsaWdubWVudC1iYXNlbGluZT0iYmFzZWxpbmUiIHk9Ii0zNy43NzExNjM5NDA0Mjk2OCIgeD0iMzAuNDYxNTA3Nzk3MjQxMjA0IiBmb250LWZhbWlseT0ic2VyaWYiIGZvbnQtc2l6ZT0iMTAiIGZpbGw9ImJsYWNrIiBmb250LXN0eWxlPSJpdGFsaWMiPnM8L3RleHQ+PC9nPiA8L2c+IDwvZz48L2c+IDwvZz4gPHBhdGggZD0iIE0gMTg4LjMyMDI3IC0xNC4yMjYzNiBoIDQyLjY3OTExIHYgMjguNDUyNzMgaCAtNDIuNjc5MTEgWiAgIiBmaWxsPSJub25lIj48L3BhdGg+IDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIwMS41MTAxNSwtMi4wODMzNCkiPiA8ZyBzdHJva2U9IiMwMDAiIGZpbGw9IiMwMDAiPiA8ZyBzdHJva2U9Im5vbmUiIHRyYW5zZm9ybT0ic2NhbGUoLTEsMSkgdHJhbnNsYXRlKC0xMC41NTQ3OTQzMTE1MjM0MzYsLTM3Ljc3MTE2Mzk0MDQyOTY4KSBzY2FsZSgtMSwtMSkiPjxnIGZpbGw9IiMwMDAiPiA8ZyBzdHJva2U9Im5vbmUiPiA8dGV4dCBhbGlnbm1lbnQtYmFzZWxpbmU9ImJhc2VsaW5lIiB5PSItNDEuNzA4NDgwODM0OTYwOTMiIHg9Ii00LjM5ODE3ODEwMDU4NTkzNyIgZm9udC1mYW1pbHk9InNlcmlmIiBmb250LXNpemU9IjciIGZpbGw9ImJsYWNrIj4xPC90ZXh0PjxyZWN0IHg9Ii05LjM1NDc5NzM2MzI4MTI0OCIgeT0iLTQwLjQ3MTE2MDg4ODY3MTg3IiB3aWR0aD0iMTMuODk5MzY4Mjg2MTMyODA5IiBoZWlnaHQ9IjAuMzk5OTc4NjM3Njk1MzEyNCIgZmlsbD0iYmxhY2siPjwvcmVjdD48dGV4dCBhbGlnbm1lbnQtYmFzZWxpbmU9ImJhc2VsaW5lIiB5PSItMzQuMzIyNzY5MTY1MDM5MDU1IiB4PSItOS4zNTQ3OTczNjMyODEyNDgiIGZvbnQtZmFtaWx5PSJzZXJpZiIgZm9udC1zaXplPSI3IiBmaWxsPSJibGFjayIgZm9udC1zdHlsZT0iaXRhbGljIj5zPC90ZXh0Pjx0ZXh0IGFsaWdubWVudC1iYXNlbGluZT0iYmFzZWxpbmUiIHk9Ii0zNC4zMjI3NjkxNjUwMzkwNTUiIHg9Ii01LjU4MDQ3MTk5MjQ5MjY3NSIgZm9udC1mYW1pbHk9InNlcmlmIiBmb250LXNpemU9IjciIGZpbGw9ImJsYWNrIj4rMTwvdGV4dD48L2c+IDwvZz4gPC9nPjwvZz4gPC9nPiA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg3MS44NTM1LC02Ny41ODI4OSkiPiA8ZyBzdHJva2U9IiMwMDAiIGZpbGw9IiMwMDAiPiA8ZyBzdHJva2U9Im5vbmUiIHRyYW5zZm9ybT0ic2NhbGUoLTEsMSkgdHJhbnNsYXRlKC0xMC41NTQ3OTQzMTE1MjM0MzYsLTM3Ljc3MTE2Mzk0MDQyOTY4KSBzY2FsZSgtMSwtMSkiPjxnIGZpbGw9IiMwMDAiPiA8ZyBzdHJva2U9Im5vbmUiPiA8dGV4dCBhbGlnbm1lbnQtYmFzZWxpbmU9ImJhc2VsaW5lIiB5PSItMzcuNzcxMTYzOTQwNDI5NjgiIHg9Ii0xMC41NTQ3OTQzMTE1MjM0MzYiIGZvbnQtZmFtaWx5PSJzZXJpZiIgZm9udC1zaXplPSIxMCIgZmlsbD0iYmxhY2siPmZlZWRiYWM8L3RleHQ+PHRleHQgYWxpZ25tZW50LWJhc2VsaW5lPSJiYXNlbGluZSIgeT0iLTM3Ljc3MTE2Mzk0MDQyOTY4IiB4PSIyMS42Njc1MjQzMzc3Njg1NSIgZm9udC1mYW1pbHk9InNlcmlmIiBmb250LXNpemU9IjEwIiBmaWxsPSJibGFjayI+azwvdGV4dD48L2c+IDwvZz4gPC9nPjwvZz4gPC9nPiA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg2Mi45MjI5MSwyMi43NDkyKSI+IDxnIHN0cm9rZT0iIzAwMCIgZmlsbD0iIzAwMCI+IDxnIHN0cm9rZT0ibm9uZSIgdHJhbnNmb3JtPSJzY2FsZSgtMSwxKSB0cmFuc2xhdGUoLTEwLjU1NDc5NDMxMTUyMzQzNiwtMzcuNzcxMTYzOTQwNDI5NjgpIHNjYWxlKC0xLC0xKSI+PGcgZmlsbD0iIzAwMCI+IDxnIHN0cm9rZT0ibm9uZSI+IDx0ZXh0IGFsaWdubWVudC1iYXNlbGluZT0iYmFzZWxpbmUiIHk9Ii0zNy43NzExNjM5NDA0Mjk2OCIgeD0iLTEwLjU1NDc5NDMxMTUyMzQzNiIgZm9udC1mYW1pbHk9InNlcmlmIiBmb250LXNpemU9IjEwIiBmaWxsPSJibGFjayI+Y29tcDwvdGV4dD48dGV4dCBhbGlnbm1lbnQtYmFzZWxpbmU9ImJhc2VsaW5lIiB5PSItMzcuNzcxMTYzOTQwNDI5NjgiIHg9IjEzLjA1NjM5ODM5MTcyMzYzIiBmb250LWZhbWlseT0ic2VyaWYiIGZvbnQtc2l6ZT0iMTAiIGZpbGw9ImJsYWNrIj5lbnNhdG9yPC90ZXh0PjwvZz4gPC9nPiA8L2c+PC9nPiA8L2c+IDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE5Ny4xODQ3NSwyMy42NjU4NikiPiA8ZyBzdHJva2U9IiMwMDAiIGZpbGw9IiMwMDAiPiA8ZyBzdHJva2U9Im5vbmUiIHRyYW5zZm9ybT0ic2NhbGUoLTEsMSkgdHJhbnNsYXRlKC0xMC41NTQ3OTQzMTE1MjM0MzYsLTM3Ljc3MTE2Mzk0MDQyOTY4KSBzY2FsZSgtMSwtMSkiPjxnIGZpbGw9IiMwMDAiPiA8ZyBzdHJva2U9Im5vbmUiPiA8dGV4dCBhbGlnbm1lbnQtYmFzZWxpbmU9ImJhc2VsaW5lIiB5PSItMzcuNzcxMTYzOTQwNDI5NjgiIHg9Ii0xMC41NTQ3OTQzMTE1MjM0MzYiIGZvbnQtZmFtaWx5PSJzZXJpZiIgZm9udC1zaXplPSIxMCIgZmlsbD0iYmxhY2siIGZvbnQtc3R5bGU9Iml0YWxpYyI+RzwvdGV4dD48dGV4dCBhbGlnbm1lbnQtYmFzZWxpbmU9ImJhc2VsaW5lIiB5PSItMzYuMjcxMTc5MTk5MjE4NzQiIHg9Ii0yLjY5MjMwMjcwMzg1NzQyMTQiIGZvbnQtZmFtaWx5PSJzZXJpZiIgZm9udC1zaXplPSI3IiBmaWxsPSJibGFjayIgZm9udC1zdHlsZT0iaXRhbGljIj5wPC90ZXh0Pjx0ZXh0IGFsaWdubWVudC1iYXNlbGluZT0iYmFzZWxpbmUiIHk9Ii0zNy43NzExNjM5NDA0Mjk2OCIgeD0iMS45MzAwNDIyNjY4NDU3MDI3IiBmb250LWZhbWlseT0ic2VyaWYiIGZvbnQtc2l6ZT0iMTAiIGZpbGw9ImJsYWNrIj4oPC90ZXh0Pjx0ZXh0IGFsaWdubWVudC1iYXNlbGluZT0iYmFzZWxpbmUiIHk9Ii0zNy43NzExNjM5NDA0Mjk2OCIgeD0iNS44MTg5NDQ5MzEwMzAyNzI1IiBmb250LWZhbWlseT0ic2VyaWYiIGZvbnQtc2l6ZT0iMTAiIGZpbGw9ImJsYWNrIiBmb250LXN0eWxlPSJpdGFsaWMiPnM8L3RleHQ+PHRleHQgYWxpZ25tZW50LWJhc2VsaW5lPSJiYXNlbGluZSIgeT0iLTM3Ljc3MTE2Mzk0MDQyOTY4IiB4PSIxMC41MDY0NDQ5MzEwMzAyNzIiIGZvbnQtZmFtaWx5PSJzZXJpZiIgZm9udC1zaXplPSIxMCIgZmlsbD0iYmxhY2siPik8L3RleHQ+PC9nPiA8L2c+IDwvZz48L2c+IDwvZz4gPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTU4LjM4MjIzLC0yLjUpIj4gPGcgc3Ryb2tlPSIjMDAwIiBmaWxsPSIjMDAwIj4gPGcgc3Ryb2tlPSJub25lIiB0cmFuc2Zvcm09InNjYWxlKC0xLDEpIHRyYW5zbGF0ZSgtMTAuNTU0Nzk0MzExNTIzNDM2LC0zNy43NzExNjM5NDA0Mjk2OCkgc2NhbGUoLTEsLTEpIj48ZyBmaWxsPSIjMDAwIj4gPGcgc3Ryb2tlPSJub25lIj4gPHRleHQgYWxpZ25tZW50LWJhc2VsaW5lPSJiYXNlbGluZSIgeT0iLTM3Ljc3MTE2Mzk0MDQyOTY4IiB4PSItMTAuNTU0Nzk0MzExNTIzNDM2IiBmb250LWZhbWlseT0ic2VyaWYiIGZvbnQtc2l6ZT0iMTAiIGZpbGw9ImJsYWNrIj5SKHMpPC90ZXh0PjwvZz4gPC9nPiA8L2c+PC9nPiA8L2c+IDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDI2My4xODUwOSwtMi41KSI+IDxnIHN0cm9rZT0iIzAwMCIgZmlsbD0iIzAwMCI+IDxnIHN0cm9rZT0ibm9uZSIgdHJhbnNmb3JtPSJzY2FsZSgtMSwxKSB0cmFuc2xhdGUoLTEwLjU1NDc5NDMxMTUyMzQzNiwtMzcuNzcxMTYzOTQwNDI5NjgpIHNjYWxlKC0xLC0xKSI+PGcgZmlsbD0iIzAwMCI+IDxnIHN0cm9rZT0ibm9uZSI+IDx0ZXh0IGFsaWdubWVudC1iYXNlbGluZT0iYmFzZWxpbmUiIHk9Ii0zNy43NzExNjM5NDA0Mjk2OCIgeD0iLTEwLjU1NDc5NDMxMTUyMzQzNiIgZm9udC1mYW1pbHk9InNlcmlmIiBmb250LXNpemU9IjEwIiBmaWxsPSJibGFjayI+QyhzKTwvdGV4dD48L2c+IDwvZz4gPC9nPjwvZz4gPC9nPiA8cGF0aCBkPSIgTSAtMzUuNzY1OTEgMC4wIEwgLTExLjkxMzE1IDAuMCAgIiBmaWxsPSJub25lIj48L3BhdGg+IDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xMS45MTMxNSwwLjApIj4gPGcgc3Ryb2tlLWRhc2hhcnJheT0ibm9uZSIgc3Ryb2tlLWRhc2hvZmZzZXQ9IjAuMCI+IDxnIHN0cm9rZS1saW5lam9pbj0ibWl0ZXIiPiA8cGF0aCBkPSIgTSAzLjc3NTM4IDAuMCBDIDMuMzExNzQgMC4xMTMxMyAxLjI3Mzc2IDAuNzU0MTggMC4wIDEuNDUxOCBMIDAuMCAtMS40NTE4IEMgMS4yNzM3NiAtMC43NTQxOCAzLjMxMTc0IC0wLjExMzEzIDMuNzc1MzggMC4wIFogICI+PC9wYXRoPiA8L2c+IDwvZz4gIDwvZz4gPHBhdGggZD0iIE0gNy4zMTMxNyAwLjAgTCA1OS42MTg3IDAuMCAgIiBmaWxsPSJub25lIj48L3BhdGg+IDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDU5LjYxODcsMC4wKSI+IDxnIHN0cm9rZS1kYXNoYXJyYXk9Im5vbmUiIHN0cm9rZS1kYXNob2Zmc2V0PSIwLjAiPiA8ZyBzdHJva2UtbGluZWpvaW49Im1pdGVyIj4gPHBhdGggZD0iIE0gMy43NzUzOCAwLjAgQyAzLjMxMTc0IDAuMTEzMTMgMS4yNzM3NiAwLjc1NDE4IDAuMCAxLjQ1MTggTCAwLjAgLTEuNDUxOCBDIDEuMjczNzYgLTAuNzU0MTggMy4zMTE3NCAtMC4xMTMxMyAzLjc3NTM4IDAuMCBaICAiPjwvcGF0aD4gPC9nPiA8L2c+ICA8L2c+IDxwYXRoIGQ9IiBNIDExNi45ODgzOSAwLjAgTCAxODMuNTIwMyAwLjAgICIgZmlsbD0ibm9uZSI+PC9wYXRoPiA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxODMuNTIwMywwLjApIj4gPGcgc3Ryb2tlLWRhc2hhcnJheT0ibm9uZSIgc3Ryb2tlLWRhc2hvZmZzZXQ9IjAuMCI+IDxnIHN0cm9rZS1saW5lam9pbj0ibWl0ZXIiPiA8cGF0aCBkPSIgTSAzLjc3NTM4IDAuMCBDIDMuMzExNzQgMC4xMTMxMyAxLjI3Mzc2IDAuNzU0MTggMC4wIDEuNDUxOCBMIDAuMCAtMS40NTE4IEMgMS4yNzM3NiAtMC43NTQxOCAzLjMxMTc0IC0wLjExMzEzIDMuNzc1MzggMC4wIFogICI+PC9wYXRoPiA8L2c+IDwvZz4gIDwvZz4gPHBhdGggZD0iIE0gMjMxLjE5OTM3IDAuMCBMIDI1NS4wNTIxNCAwLjAgICIgZmlsbD0ibm9uZSI+PC9wYXRoPiA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyNTUuMDUyMTQsMC4wKSI+IDxnIHN0cm9rZS1kYXNoYXJyYXk9Im5vbmUiIHN0cm9rZS1kYXNob2Zmc2V0PSIwLjAiPiA8ZyBzdHJva2UtbGluZWpvaW49Im1pdGVyIj4gPHBhdGggZD0iIE0gMy43NzUzOCAwLjAgQyAzLjMxMTc0IDAuMTEzMTMgMS4yNzM3NiAwLjc1NDE4IDAuMCAxLjQ1MTggTCAwLjAgLTEuNDUxOCBDIDEuMjczNzYgLTAuNzU0MTggMy4zMTE3NCAtMC4xMTMxMyAzLjc3NTM4IDAuMCBaICAiPjwvcGF0aD4gPC9nPiA8L2c+ICA8L2c+IDxwYXRoIGQ9IiBNIDI4NS42NjI1MiAwLjAgTCAzMTQuMTE1MjYgMC4wIEwgMzE0LjExNTI2IC02NC4xMTA2NyBMIDExMi44ODY1NCAtNjQuMTEwNjcgTSA2OC4zMjA1MyAtNjQuMTEwNjcgTCAwLjAgLTY0LjExMDY3IEwgMC4wIC0xMS45MTMxNSAgIiBmaWxsPSJub25lIj48L3BhdGg+IDxnIHRyYW5zZm9ybT0ibWF0cml4KDAuMCwxLjAsLTEuMCwwLjAsMC4wLC0xMS45MTMxNSkiPiA8ZyBzdHJva2UtZGFzaGFycmF5PSJub25lIiBzdHJva2UtZGFzaG9mZnNldD0iMC4wIj4gPGcgc3Ryb2tlLWxpbmVqb2luPSJtaXRlciI+IDxwYXRoIGQ9IiBNIDMuNzc1MzggMC4wIEMgMy4zMTE3NCAwLjExMzEzIDEuMjczNzYgMC43NTQxOCAwLjAgMS40NTE4IEwgMC4wIC0xLjQ1MTggQyAxLjI3Mzc2IC0wLjc1NDE4IDMuMzExNzQgLTAuMTEzMTMgMy43NzUzOCAwLjAgWiAgIj48L3BhdGg+IDwvZz4gPC9nPiAgPC9nPiA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxLjgwMTU2LDExLjcyNjM2KSI+IDxnIHN0cm9rZT0iIzAwMCIgZmlsbD0iIzAwMCI+IDxnIHN0cm9rZT0ibm9uZSIgdHJhbnNmb3JtPSJzY2FsZSgtMSwxKSB0cmFuc2xhdGUoLTEwLjU1NDc5NDMxMTUyMzQzNiwtMzcuNzcxMTYzOTQwNDI5NjgpIHNjYWxlKC0xLC0xKSI+PGcgZmlsbD0iIzAwMCI+IDxnIHN0cm9rZT0ibm9uZSI+IDx0ZXh0IGFsaWdubWVudC1iYXNlbGluZT0iYmFzZWxpbmUiIHk9Ii0zNy43NzExNjM5NDA0Mjk2OCIgeD0iLTEwLjU1NDc5NDMxMTUyMzQzNiIgZm9udC1mYW1pbHk9InNlcmlmIiBmb250LXNpemU9IjEwIiBmaWxsPSJibGFjayI+KzwvdGV4dD48L2c+IDwvZz4gPC9nPjwvZz4gPC9nPiA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0LjAyMzgsLTE2LjM3OTE0KSI+IDxnIHN0cm9rZT0iIzAwMCIgZmlsbD0iIzAwMCI+IDxnIHN0cm9rZT0ibm9uZSIgdHJhbnNmb3JtPSJzY2FsZSgtMSwxKSB0cmFuc2xhdGUoLTEwLjU1NDc5NDMxMTUyMzQzNiwtMzcuNzcxMTYzOTQwNDI5NjgpIHNjYWxlKC0xLC0xKSI+PGcgZmlsbD0iIzAwMCI+IDxnIHN0cm9rZT0ibm9uZSI+IDx0ZXh0IGFsaWdubWVudC1iYXNlbGluZT0iYmFzZWxpbmUiIHk9Ii0zNy43NzExNjM5NDA0Mjk2OCIgeD0iLTEwLjU1NDc5NDMxMTUyMzQzNiIgZm9udC1mYW1pbHk9InNlcmlmIiBmb250LXNpemU9IjEwIiBmaWxsPSJibGFjayI+LTwvdGV4dD48L2c+IDwvZz4gPC9nPjwvZz4gPC9nPiA8L2c+IDwvZz4gPC9nPjwvc3ZnPg==" alt="tikz diagram" loading="lazy" decoding="async"><figcaption><em>source code</em><button class="source-code-button" aria-label="copy source code for this tikz graph" title="copy source code for this tikz graph"><svg class="source-icon" xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 -4 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><use href="#code-icon"></use></svg><svg class="check-icon" xmlns="http://www.w3.org/2000/svg" width="12" height="16" viewBox="0 -4 16 16" fill="currentColor" stroke="none" stroke-width="0" stroke-linecap="round" stroke-linejoin="round"><use href="#github-check"></use></svg></button></figcaption></figure>

For the displayed first-order plant,

$$
T(s)=\frac{K_Ds}{(1+K_D)s+1}.
$$

With $K_D\geq0$, its pole is $-1/(1+K_D)$, so increasing this gain preserves stability in this particular model and slows the decay. The zero at the origin makes $T(0)=0$: derivative-only control produces no steady output in response to a constant reference.

> \[!tip\] in second-order system
>
> For the plant
>
> $$
> G_p(s)=\frac{P\omega_n^2}{s^2+2\zeta\omega_ns+\omega_n^2},
> $$
>
> where $P>0$ is the DC gain, derivative-only feedback gives
>
> $$
> T(s)=\frac{K_DP\omega_n^2s}{s^2+(2\zeta\omega_n+K_DP\omega_n^2)s+\omega_n^2}.
> $$
>
> With $\omega_n>0$, the denominator has effective damping ratio
>
> $$
> \zeta'=\zeta+\frac{K_DP\omega_n}{2}.
> $$
>
> Positive derivative gain increases this coefficient. This calculation concerns the displayed second-order plant; extra modes or delay can move the closed-loop poles.

An ideal differentiator has magnitude $K_D\omega$ at frequency $\omega$, which amplifies high-frequency measurement noise. A practical derivative term includes a low-pass filter:

$$
G_D(s)=\frac{K_Ds}{1+\tau_fs},
\qquad \tau_f>0.
$$

Its high-frequency gain approaches $K_D/\tau_f$. This is the filtered derivative used in the [parallel-form PID model](https://www.mathworks.com/help/control/ref/pid.html).

## PID control

The ideal parallel form is

$$
G_C(s)=K_p+\frac{K_I}{s}+K_Ds,
$$

or, with the integral state made explicit,

$$
u(t)=K_pe(t)+u_I(0)+K_I\int_0^t e(\tau)\,d\tau+K_D\dot e(t).
$$

For sampling period $T$, choose backward Euler for the integral and a backward difference for the unfiltered derivative. These are specific discretization choices; see [[thoughts/university/twenty-four-twenty-five/sfwr-4aa4/CCS to DCS|CCS to DCS]] for alternatives.

| Component             | Discrete-time equation               |
| --------------------- | ------------------------------------ |
| Proportional          | $u_P[k]=K_pe[k]$                     |
| Integral              | $u_I[k]=u_I[k-1]+K_ITe[k]$           |
| Unfiltered derivative | $u_D[k]=\dfrac{K_D}{T}(e[k]-e[k-1])$ |

Starting from $u_I[0]=0$ and updating for $k\geq1$ gives

$$
u[k]=K_pe[k]+K_IT\sum_{i=1}^{k}e[i]+\frac{K_D}{T}(e[k]-e[k-1]).
$$

The sum stops at the current sample $k$. Store the integral state between calls so each update requires one addition instead of summing the whole history.

Applying backward Euler to the filtered derivative instead gives

$$
u_D[k]=\frac{\tau_f}{\tau_f+T}u_D[k-1]
+\frac{K_D}{\tau_f+T}(e[k]-e[k-1]).
$$

Specify the initial integral and derivative states. If the actuator saturates, also account for that limit in the integral update: continued accumulation can delay recovery after the error changes sign. The [discrete PID controller reference](https://www.mathworks.com/help/simulink/slref/discretepidcontroller.html) describes the integration choices, initial states, and anti-windup options.

