速度型PID制御
$ \dot c(t)=K_p\dot e(t)+K_ie(t)+K_d\ddot e(t)
プログラム上、過去の制御偏差$ e(t)を大量に保持しなくて済む利点もある 差分化する
$ \varDelta f(t):=f(t)-f(t-\varDelta t)として
$ \varDelta c(t)=K_p\varDelta e(t)+K_ie(t)\varDelta t+K_d\frac{e(t)-2e(t-\varDelta t)+e(t-2\varDelta t)}{\varDelta t}
$ =\left(K_p+K_i\varDelta t+\frac{K_d}{\varDelta t}\right)e(t)-\left(K_p+2\frac{K_d}{\varDelta t}\right)e(t-\varDelta t)+\frac{K_d}{\varDelta t}e(t-2\varDelta t)
$ =K_p\left(1+\frac{\varDelta t}{T_i}+\frac{T_d}{\varDelta t}\right)e(t)-K_p\left(1+2\frac{T_d}{\varDelta t}\right)e(t-\varDelta t)+K_p\frac{T_d}{\varDelta t}e(t-2\varDelta t)
$ \implies c(t)=c(t-\varDelta t)+K_p\left(1+\frac{\varDelta t}{T_i}+\frac{T_d}{\varDelta t}\right)e(t)-K_p\left(1+2\frac{T_d}{\varDelta t}\right)e(t-\varDelta t)+K_p\frac{T_d}{\varDelta t}e(t-2\varDelta t)
$ c(t-\varDelta t),e(t),e(t-\varDelta t),e(t-2\varDelta t)の4変数だけ保持していれば計算可能
code