みなさん,こんにちは
おかしょです.
制御工学の参考書ではよく1次遅れ系や2次遅れ系のシステムが扱われます.
しかし,実際にロボットを作ってみて伝達関数を求めると参考書で扱われるものとは異なることがよくあります.
そこで,この記事では3次のシステムをPID制御器で制御する数値シミュレーションを紹介します.
この記事を読むと以下のようなことがわかる・できるようになります.
- PID制御のやり方
- 3次のシステムを制御する方法
この記事を読む前に
この記事では数値シミュレーションを行います.
3次の伝達関数を逆ラプラス変換して微分方程式を求めて数値シミュレーションを行っています.
数値シミュレーションを行う方法を知りたい方は以下の記事で解説しているので,そちらを参照してください.
3次のシステム
この記事では以下のような3次のシステムを対象として数値シミュレーションを行います.
\begin{eqnarray}
G(s) = \frac{b_2 s^2 +b_1 s +b_0}{s^3+a_2 s^2+a_1 s+a_0} \tag{1}
\end{eqnarray}
上記の伝達関数で表されるシステムは極を3つもち,零点を1つもちます.
このシステムで数値シミュレーションを行うと以下のようになります.
このときシミュレーションでは\(b_2=0,\ b_1=1,\ b_0=1,\ a_2=1,\ a_1=1,\ a_0=1\)として,入力は一定値の1を入力しました.
この結果を見ると,収束も発散もしていません.
このときの極の位置を求めると,\(-1,\ -i,\ +i\)の3つです.
極が虚軸上に二つと左半平面に一つあるので,システム的にはぎりぎり安定です.
このシステムをPID制御で目標値に収束させます.
伝達関数はシステムの入出力関係を表しているので,上の3次遅れ系の伝達関数は以下のように書き直すことができます.
\begin{eqnarray}
\frac{Y}{U} = \frac{b_2 s^2 +b_1 s +b_0}{s^3+a_2 s^2+a_1 s+a_0} \tag{2}
\end{eqnarray}
ここで,\(Y\)は出力をラプラス変換したもの,\(U\)は入力をラプラス変換したものを表しています.この入力\(U\)をPID制御器で構成します.
PID制御の伝達関数
上記の3次のシステムをPID制御器で制御します.
PID制御器\(C(s)\)を伝達関数で表すと以下のようになります.
\begin{eqnarray}
C(s) &=& K_P+\frac{1}{s} K_I +sK_D\tag{3}
\end{eqnarray}
ここで,PID制御器の伝達関数はシステムの出力と目標値の誤差\(E\)を入力とし,制御入力を\(U\)を出力とした時の関係を表すので,以下のように書き直すことができます.
\begin{eqnarray}
\frac{U}{E} &=& K_P+\frac{1}{s} K_I +sK_D\\
U &=& \left(K_P+\frac{1}{s} K_I +sK_D\right)E\tag{4}
\end{eqnarray}
ここで,誤差\(E\)は以下のように表せます.
\begin{eqnarray}
E &=& R-Y\tag{5}
\end{eqnarray}
ここで,\(R\)は目標値を表します.したがって,制御入力\(U\)は
\begin{eqnarray}
U &=& \left(K_P+\frac{1}{s} K_I +sK_D\right)(R-Y) \tag{6}
\end{eqnarray}
これを先ほどの3次遅れ系の伝達関数に代入します.
\begin{eqnarray}
Y &=& \frac{b_2 s^2 +b_1 s +b_0}{s^3+a_2 s^2+a_1 s+a_0} U\\
&=& \frac{b_2 s^2 +b_1 s +b_0}{s^3+a_2 s^2+a_1 s+a_0}\left(K_P+\frac{1}{s} K_I +sK_D\right)(R-Y)\\
\left\{1+\frac{b_2 s^2 +b_1 s +b_0}{s^3+a_2 s^2+a_1 s+a_0}\left(K_P+\frac{1}{s} K_I +sK_D\right)\right\} Y &=& \frac{b_2 s^2 +b_1 s +b_0}{s^3+a_2 s^2+a_1 s+a_0} \left( K_P + \frac{1}{s} K_I+sK_D\right)R\\
\frac{Y}{R} &=& \frac{\frac{b_2 s^2 +b_1 s +b_0}{s^3+a_2 s^2+a_1 s+a_0} \left( K_P + \frac{1}{s} K_I+sK_D\right)}{1+\frac{b_2 s^2 +b_1 s +b_0}{s^3+a_2 s^2+a_1 s+a_0} \left( K_P + \frac{1}{s} K_I+sK_D\right)}\\
&=& \frac{(b_2 s^2 +b_1 s +b_0) (sK_P+K_I+s^2 K_D)}{s(s^3+a_2 s^2+a_1 s+a_0)+ (b_2 s^2 +b_1 s +b_0) (sK_P+K_I+s^2 K_D)}\\
&=& \frac{(b_2 s^2 +b_1 s +b_0) (s^2 K_D+sK_P+K_I)}{(1+K_D b_2)s^4+(a_2+K_P b_2+K_D b_1)s^3 + (a_1+K_I b_2+K_P b_1+K_D b_0) s^2 + (a_0+K_I b_1+K_P b_0)s + K_I b_0}\tag{7}
\end{eqnarray}
上記のように目標値\(R\)を入力,システムの出力\(Y\)を出力とする伝達関数を求めると,制御器も含めたシステム全体の伝達関数を求めることができます. この伝達関数の極の位置を指定することで,制御器のゲインを求めることができるようになります.
ゲインを決定する
PID制御において最も重要なのがゲインです.このゲインによって応答が全く変わります.なので,ゲインを決定するのにも安定性に気を付けて決定する必要があります.
今回は極配置法で決めます.
極配置法というのは,自分で決めた極の位置になるように制御する方法です.
先程求めたPID制御器を搭載した伝達関数は分母多項式が4次でした.なので,極も4つとなります.
任意に指定した極を\(s_1,\ s_2, \ s_3\ s_4\)とすると,分母多項式は以下のようになります.
\begin{eqnarray}
(1+K_D b_2)s^4+(a_2+K_P b_2+K_D b_1)s^3 + (a_1+K_I b_2+K_P b_1+K_D b_0) s^2 + (a_0+K_I b_1+K_P b_0)s + K_I b_0 &=& (s-s_1) (s-s_2) (s-s_3) (s-s_4)\\
&=& s^4 – (s_1+s_2+s_3+s_4)s^3 +(s_1 s_2+s_2 s_3 +s_3 s_4+s_1 s_3+s_1 s_4+s_2 s_4 ) s^2 –(s_1 s_2 s_3+s_1 s_2 s_4+s_2 s_3 s_4+s_1 s_3 s_4)s+s_1 s_2 s_3 s_4 \tag{8}
\end{eqnarray}
この式の両辺の係数を比較すると
\begin{eqnarray}
\left\{
\begin{array}{l}
1+K_D b_2 = 1 \\
a_2+K_P b_2+K_D b_1 = – (s_1+s_2+s_3+s_4) \\
a_1+K_I b_2+K_P b_1+K_D b_0 = s_1 s_2+s_2 s_3 +s_3 s_4+s_1 s_3+s_1 s_4+s_2 s_4 \tag{9} \\
a_0+K_I b_1+K_P b_0 = –(s_1 s_2 s_3+s_1 s_2 s_4+s_2 s_3 s_4+s_1 s_3 s_4)\\
K_I b_0 = s_1 s_2 s_3 s_4
\end{array}
\right.
\end{eqnarray}
これを解くことで制御ゲインを求めることができます.ただ,ここで問題となるのがどの式を使ってゲインを求めるのかということです.今回求めたいゲインは比例・微分・積分の3つだけです.それに対して式が5つもあるので,その中から3つの式を選ぶ必要があります.
この時の式の選び方によって求められるゲインが異なるので注意してください.
ここでは真ん中の3式を使ってゲインを求めることにします.真ん中の3式を使ってゲインを求めると以下のようになります.
\begin{eqnarray}
\left\{
\begin{array}{l}
K_P = \frac{b_1(s_1 s_2+s_2 s_3 +s_3 s_4+s_1 s_3+s_1 s_4+s_2 s_4)-a_1 b_1+b_2(s_1 s_2 s_3+s_1 s_2 s_4+s_2 s_3 s_4+s_1 s_3 s_4)+a_0 b_2+b_0(s_1+s_2+s_3+s_4)+a_2 b_0}{b_1^2-2b_0 b_2}\\
K_D = \frac{ – (s_1+s_2+s_3+s_4)- a_2-K_P b_2 }{b_1} \tag{10} \\
K_I = \frac{ –(s_1 s_2 s_3+s_1 s_2 s_4+s_2 s_3 s_4+s_1 s_3 s_4)-a_0-K_P b_0}{b_1}
\end{array}
\right.
\end{eqnarray}
シミュレーション結果
以上のような極配置法でPIDゲインを決定して,数値シミュレーションを行います.システムの設定は先ほどと同じです.
このシミュレーションでは極の位置を\(s_1=-1,\ s_2=-2,\ s_3=-3,\ s_4=-4\)と設定してゲインを求めました.
先程の制御器を搭載していない時のシミュレーション結果と比べると,格段に応答が良くなりました.
初期応答が目標値を超えてしまっていますが,極の位置を工夫すればこの応答もさらに良くすることができます.
まとめ
この記事では零点を一つ持った3次のシステムをPID制御器で制御しました.
ゲインは極配置法で決定して,目標値に収束させることができました.
制御器を搭載しなかった時の応答では,収束する気配がありませんでしたが,PID制御によって良好な応答を示すことができました.
続けて読む
3次のシステムのPID制御の設計方法を解説しましたが,以下の記事ではシステムの次数に限らず,PID制御器の解説をしています.
PID制御器について詳しく知りたい方は以下の記事を参考にしてください.
Twitterでは記事の更新情報や活動の進捗などをつぶやいているので気が向いたらフォローしてください.
それでは最後まで読んでいただきありがとうございました.
コメント