みなさん,こんにちは
おかしょです.
P制御と呼ばれる制御器ではゲインが大きすぎるとオーバーシュートしてしまい,目標値を超えてしまうという問題点がありました.
その結果,応答は振動的となってしまいます.
この記事では,そのような振動特性を抑制するD制御を追加したPD制御の性質や特性などを解説していきます.
この記事を読むと以下のようなことがわかる・できるようになります.
- D制御とは
- PD制御のプログラム
- PD制御の特徴
この記事を読む前に
この記事は以下のP制御の解説の続きとなっています.
P制御について知りたい方は以下の記事を先に読んでおくことをおすすめします.
D制御とは
D制御の「D」とは「derivation」の略で「微分」という意味になります.
P制御が「比例」という意味で,目標値と現在の値の偏差に一定値を掛けていたのに対して
D制御では,偏差を一度微分してから一定値を掛けます.
これをブロック線図で表すと以下のようになります.
図中の\(K_p\)はP制御のゲイン,\(K_d\)はD制御のゲインを表しています.
また,微分を表す「d/dt」はラプラス変換されて「s」と表すこともあります.
P制御の時と同様に,それぞれのゲインを変化させることで制御性能が大きく変化します.
プログラム
プログラムの書き方は二通りあります.
「完全微分」をする方法と「不完全微分」をする方法です.
「完全微分」の場合は以下のようにしてPD制御の制御入力\(u\)が求められます.
$$ u = (r[k]-y[k])\cdot K_p+\frac{(r[k]-y[k])-(r[k-1]-y[k-1])}{dt}\cdot K_d $$
ここで,式中の添え字「\(k\)」はステップ数を表していて,「\(k\)」は現在の値,「\(k-1\)」は1ステップ前の値を表しています.また,\(dt\)はステップ時間を表します.
本来,完全微分というのは「\(dt\)」を極限まで0に近づけた時のことを言うのですが,そのようなことは実現できないので,上のような式で表されるものをここでは完全微分としています.
さて,これに対して「不完全微分」というのは微分器にローパスフィルターを追加したようなもののことを言います.
実際には,センサーから出力される値にはノイズがのっているので,その値は急激な変化を繰り返しています.そのような値を微分すると非常に大きな値になってしまい,制御入力が大きくなりすぎてしまいます.
このような状態は危険なので,避けなくてはなりません.
そこで,ローパスフィルターを追加することでノイズの影響を少なくすることができます.そのため,微分しても大きな値にはならずに済みます.
この不完全微分を伝達関数で表すと以下のようになります.
$$ 不完全微分 = \frac{s}{1+Ts} $$
ここで,\(T\)の値を調整することでノイズの低減具合を調整することができます.また,\(T\)を0にすると完全微分になります.
ここで,\(e\)は\(r[k]-y[k]\)とすると,不完全微分を用いた制御入力は以下のようになります.
$$ u = \frac{Tu[k-1]+K_{p}dt\cdot e[k]+(TK_{p}+K_{d})(e[k]-e[k-1])}{T+dt} $$
PD制御の特徴
ここからは,数値シミュレーションを使ってPD制御の性質について説明していきます.
以下のような2次遅れ系にPD制御を行います.
$$ G(s) = \frac{\omega_{n}^{2}}{s^{2}+2\zeta \omega_{n} s+\omega_{n}^{2}} $$
ここで,\(\zeta\)は0.5,\(\omega_{n}\)は1としています.
目標値\(r\)を1として,ゲインをさまざまな値に変化させて数値シミュレーションを行いました.
その結果,以下のようになりました.
このとき,\(K_p\)は1で固定しています.図には凡例として\(K_{d}\)の値が示されています.
この図を見ると,Dゲインが小さい時はP制御の応答(青色)と大して変わりません.
しかし,Dゲインを大きくしていくと振動的だった応答が振動しなくなっているのがわかります.
ただ,Dゲインを大きくしすぎると収束する値よりも初期応答が大きくなってしまっています.
極の位置を確認
このPD制御によって極の位置がどのようになるのかを確認してみます.
私はゲインと極位置の関係を調べると,ゲインをどのような値にすればいいのかが見えてくるので,このような計算は必ずするようにしています.
PD制御をした時の伝達関数を求めると,以下のようになりました.
$$ \frac{Y}{R} = \frac{(K_{p} +sK_{d})G(s)}{1+(K_{p} +sK_{d})G(s)} $$
この式の\(G(s)\)に今回使用した2次遅れ系を代入すると以下のようになります.
$$ \frac{Y}{R} = \frac{\omega_{n}^{2}K_{d}s+\omega_{n}^{2}K_{p}}{s^{2}+(2\zeta \omega_{n}+\omega_{n}^{2}K_{d})s+\omega_{n}^{2}(1+K_{p} )} $$
この式の分母多項式を解の公式を用いて解くと,極位置は以下のようになります.
$$ s = \frac{-(2\zeta \omega_{n}+\omega_{n}^{2}K_{d})\pm \sqrt{(2\zeta \omega_{n}+\omega_{n}^{2}K_{d})^{2}-4\omega_{n}^{2}(1+K_{p})}}{2} $$
この式を見ると分かるように,応答が振動的になるかどうかはルートの中身によって決まります.そのため,\(K_{d}\)を大きくすればするほど応答が振動的になるのを防ぐことができます.
また,\(K_{p}\)を大きくしすぎると,Dゲインを大きくしても振動的になるのを防ぐことができないこともこの式からわかります.
つまり,この式から応答が振動的にならないためにはPゲインに対して,Dゲインが以下の不等式を満たせばいいことがわかります.
$$ K_{d}<\frac{-2(\zeta+\sqrt{1+K_{p}})}{\omega_{n}} , \frac{-2(\zeta-\sqrt{1+K_{p}})}{\omega_{n}}<K_{d}$$
今回,数値シミュレーションで行った条件(\(\zeta\)は0.5,\(\omega_{n}\)は1,\(K_p\)は1)をこの式に代入するとDゲインは以下のようになります.
$$ K_{d}< -1-2\sqrt{2}=-3.83, -1+2\sqrt{2}=1.83<K_{d} $$
以上の条件式から,Dゲインは1.83よりも大きな値,もしくはマイナスの値で-3.83よりも小さな値であれば振動の抑制ができるように思えます.確かに1.83よりも大きな値の場合は振動の抑制ができます.先程の数値シミュレーションの結果を見てもそうでした.
しかし,-3.83よりも小さな値の時は違います.このときは振動ではなく,安定性に注目してみましょう.
極の位置において,安定になるかどうかの判断は極が複素平面内の左側に存在するかどうかです.つまり,極の実部がマイナスの値になるかどうかによって安定かどうかが決まります.
先程求めた極位置の実部のみを取り出すと,以下のようになっていました.
$$ \frac{-(2\zeta \omega_{n}+\omega_{n}^{2}K_{d})}{2} $$
この式をよく見ると,\(K_{d}\)の項が含まれています.この値が負になるかどうかの条件式は上の式から以下のようになります.
$$ K_{d}>-\frac{2\zeta}{\omega_{n}} $$
つまり,今回のシミュレーション条件の場合は
$$ K_{d}>-1 $$
でなければ,システムを安定化することはできません.なので,先程の振動するかどうかを判別する条件式のうちDゲインが-1よりも小さくなるものは安定性の面から削除されなければなりません.
つまり,システムを安定化させて振動もしないようにするにはDゲインは1.83よりも大きくなければなりません.
定常偏差の確認
次は最終値の定理を使って,定常偏差の確認を行います.
先程の数値シミュレーションの結果を見ると,目標値の1には収束せずに定常偏差が残っていました.PD制御ではどうすれば定常偏差をなくす,もしくは減らすことができるのでしょうか.
\begin{eqnarray}
y(\infty)&=&\displaystyle \lim_{s \to 0} s\cdot F(s)\\
&=&\displaystyle \lim_{s \to 0} s\cdot \frac{\omega_{n}^{2}K_{d}s+\omega_{n}^{2}K_{p}}{s^{2}+(2\zeta \omega_{n}+\omega_{n}^{2}K_{d})s+\omega_{n}^{2}(1+K_{p} )}\cdot \frac{1}{s}\\
&=& \frac{K_{p}}{1+K_{p}}
\end{eqnarray}
この結果はP制御の時と全く同じになります.
このことから,PD制御において生じる定常偏差にDゲインは全く関係ないことがわかりました.
ボード線図から確認
次はボード線図を使って,PD制御の性能の確認をしていきます.
まずは制御器を使用していない,システムそのもののボード線図を確認しておきます.
次にゲインを1としたP制御のボード線図も確認しておきます.
最後にPD制御を適用した時のボード線図を示します.
この図における凡例は,先程の数値シミュレーションの結果と同じようにDゲインの値を表しています.つまり,0と書かれている青い線はP制御を行っている時のボード線図になります.
まずは上のゲイン線図から見ていきます.
Dゲインが大きくなればなるほど,高周波数帯でのゲインが大きくなっていっています.これは,ノイズのような高周波数の入力に対して過敏に反応しやすくなってしまうということです.
できるだけ,ノイズのような高周波数の入力には影響されたくないので,Dゲインはできるだけ小さくしたいです.
また,Dゲインが最も大きい10の時は,低周波数帯でもゲインがやや大きくなっています.このことから,Dゲインを大きくしすぎると低周波数帯でもゲインが大きくなってしまう事がわかりました.
次に下の位相線図を見ていきます.
この図を見ると,どのゲインでも高周波数帯は90°位相が遅れることがわかります.
また,Dゲインを大きくしすぎると低周波数帯では位相が進んでしまう事がわかります.
以上のことを簡単にまとめると,Dゲインを大きくすると高周波数帯の入力に過敏に反応するようになるけど,高周波数帯でも位相は遅れにくくなるということです.
まとめ
この記事ではPD制御の特徴や性質などをシミュレーション結果や最終値の定理,極位置,ボード線図から考察していきました.ゲインの決め方については極位置の関係から求めると,良い結果が得やすいのではないかと思います.
続けて読む
PD制御でもP制御と同様で定常偏差が生じてしまいます.
この定常偏差をなくすにはI制御をする必要があります.
以下の記事ではPI制御について解説しているので,興味のある方は読んでみてください.
Twitterでは記事の更新情報や活動の進捗などをつぶやいているので気が向いたらフォローしてください.
それでは最後まで読んでいただきありがとうございました.
コメント
[…] P制御とはプログラムの書き方や特徴PD制御とはプログラムの書き方や特徴 […]