みなさま、お疲れ様です。
今回はデジタル制御の入門ということで、s領域のPID制御の伝達関数を双一次変換で離散化し、z領域の伝達関数から差分方程式を導出するまでを説明します。
上記の悩みをお持ちの方の参考になれば幸いです。
結論:PID制御器の双一次変換から導出される差分方程式
以下がPID制御器の差分方程式です。
$$\small{
y[n]=y[n-2]+
(K_p+\frac{K_iT}{2}+\frac{2K_d}{T})x[n]\\
+(K_iT-\frac{4K_d}{T})x[n-1]
+(-K_p+\frac{K_iT}{2}+\frac{2K_d}{T})x[n-2]
}$$
Kp:比例ゲイン、Ki:積分ゲイン、Kd:微分ゲイン、T:サンプリング時間、y[n]:出力、y[n-2]:2回前の出力、x[n]:入力、x[n-1]:1回前の入力、x[n-2]:2回前の入力
これがどうやって導出されるのかをやっていきます。
そもそもPID制御の伝達関数は?
以下の通りです。
$$\small{
G(s)=K_p+\frac{K_i}{s}+K_ds
}$$
Kp:比例ゲイン、Ki:積分ゲイン、Kd:微分ゲイン
はい、次です。
なぜ離散化するのか?双一次変換とは?差分方程式とは?
上記のPID制御器の伝達関数はs領域です。つまり連続時間系の関数となります。
アナログ回路で制御を行う場合はこれで問題ありませんが、デジタル回路で制御を行う場合はダメです。この伝達関数をs領域からz領域へ変換しないといけません。
双一次変換とはs領域の伝達関数の周波数特性を維持したままz領域に変換する方法です。
変換の仕方はとても簡単で、
$$\small{
s=\frac{2}{T}\frac{1-z^{-1}}{1+z^{-1}}
}$$
T:サンプリング周期
この式をsに代入したら双一次変換完了です。
実際にやってみる
実際にやってみます。まず、PID制御伝達関数のsに
$$\small{
s=\frac{2}{T}\frac{1-z^{-1}}{1+z^{-1}}
}$$
を代入します。
$$\small{
G(z)=K_p+\frac{K_i}{\frac{2}{T}\frac{1-z^{-1}}{1+z^{-1}}}+K_d\frac{2}{T}\frac{1-z^{-1}}{1+z^{-1}}
}$$
積分項を整理します。
$$\small{
G(z)=K_p+\frac{K_iT}{2}\frac{1+z^{-1}}{1-z^{-1}}+\frac{2K_d}{T}\frac{1-z^{-1}}{1+z^{-1}}
}$$
全項に(1-z^-1)(1+z^-1)を掛けて、分数を無くします。
$$\small{
G(z)(1+z^{-1})(1-z^{-1})=
K_p(1+z^{-1})(1-z^{-1})
+\frac{K_iT}{2}(1+z^{-1})^2
+\frac{2K_d}{T}(1-z^{-1})^2
}$$
()内を展開します。
$$\small{
G(z)(1-z^{-2})=
K_p(1-z^{-2})
+\frac{K_iT}{2}(1+2z^{-1}+z^{-2})
+\frac{2K_d}{T}(1-2z^{-1}+z^{-2})
}$$
伝達関数=出力/入力です。なのでG(z)=Y[z]/X[z]を代入します。
$$\small{
\frac{Y[z]}{X[z]}(1-z^{-2})=
K_p(1-z^{-2})
+\frac{K_iT}{2}(1+2z^{-1}+z^{-2})
+\frac{2K_d}{T}(1-2z^{-1}+z^{-2})
}$$
X[z]を移動します。
$$\small{
(1-z^{-2})Y[z]=
K_p(1-z^{-2})X[z]
+\frac{K_iT}{2}(1+2z^{-1}+z^{-2})X[z]
+\frac{2K_d}{T}(1-2z^{-1}+z^{-2})X[z]
}$$
展開します。
$$\small{
Y[z]-z^{-2}Y[z]=
K_pX[z]-K_pz^{-2}X[z]\\
+\frac{K_iT}{2}X[z]+K_iTz^{-1}X[z]+\frac{K_iT}{2}z^{-2}X[z]\\
+\frac{2K_d}{T}X[z]-\frac{4K_d}{T}z^{-1}X[z]+\frac{2K_d}{T}z^{-2}X[z]
}$$
Y[z]=の形にして、xの項をまとめます。
$$\small{
Y[z]=z^{-2}Y[z]+
(K_p+\frac{K_iT}{2}+\frac{2K_d}{T})X[z]\\
+(K_iT-\frac{4K_d}{T})z^{-1}X[z]
+(-K_p+\frac{K_iT}{2}+\frac{2K_d}{T})z^{-2}X[z]
}$$
z-1はn-1,z-2はn-2といった具合に差分方程式に変換します。
$$\small{
y[n]=y[n-2]+
(K_p+\frac{K_iT}{2}+\frac{2K_d}{T})x[n]\\
+(K_iT-\frac{4K_d}{T})x[n-1]
+(-K_p+\frac{K_iT}{2}+\frac{2K_d}{T})x[n-2]
}$$
Kp:比例ゲイン、Ki:積分ゲイン、Kd:微分ゲイン、T:サンプリング時間、y[n]:出力、y[n-2]:2回前の出力、x[n]:入力、x[n-1]:1回前の入力、x[n-2]:2回前の入力
サンプリングごとにこの計算をすれば、デジタルPID制御の完成です。
はい、これで終わりです。
誰かの参考になれば幸いです。最後までお読みいただきありがとうございました!!!