【デジタル制御】PID制御を双一次変換して、差分方程式の導出までを解説する

みなさま、お疲れ様です。

今回はデジタル制御の入門ということで、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制御の完成です。

はい、これで終わりです。

誰かの参考になれば幸いです。最後までお読みいただきありがとうございました!!!