kawazu_gkgkのブログ

井の中の蛙が勉強して得たことを記録する.

Double integrator(二重積分系)にPID制御を適用した際の極零

Double integratorとは

Double-Integrator(二重積分系)とは以下のような伝達関数を持つ単入力単出力(SISO)システムである.

G(s)=\displaystyle{\frac{1}{s^ 2}}

このようなシステムには,例えば人工衛星をスラスターやリアクションホイール等のアクチュエータで発生させたトルクによって姿勢角を制御するといったものがある. また,サーボモータやサーボシリンダ等を用いて位置決め制御を行う場合にも,アクチュエータダイナミクスや摩擦等を無視した最も簡潔なモデルはこのDouble-Integratorで表される.
サーボモータ等を用いたサーボ系は産業界においてしばしば用いられ,そのような場所での制御にはPID制御が用いられていることが殆どである.

ここではそんなDouble-IntegratorにPID制御を適用したシステムに関して,極・零点がどのように配置されるのかを確かめる.

PID制御

f:id:kawazu_gkgk:20200827001611p:plain:w200

PID制御とは,上のブロック線図のように制御対象の出力と目標値との差e(t)=r(t)-y(t),その積分\int e(t)dt微分\frac{d}{dt}e(t)にそれぞれゲインを掛けた値の和を制御入力とする制御である.

PID制御といえばP,I,D各ゲインを(ツマミを回して)調整して応答性をチューニングするというコンセプトで使う場合において,"応答性への影響がわかりやすい3つのゲインを調整するだけ"という扱いやすさから製造現場との相性がいい.
このPID制御の用途には制御対象のモデル(伝達関数)を用いずに制御系を構築する,いわゆるモデルフリー制御の考え方が基にある.
モデルフリー制御は化学プラントなど制御対象のモデルを得るのが難しい場合に有用な手段であるが,要求に合わせるためには実機での調整が必要となる.

モーター制御等でもPID制御によるモデルフリー制御が用いられるが,DCモーターのようにモデル構築が十分可能な制御対象の場合,モデルを使用することでシミュレーションや理論に基づく設計が可能なため,チューニングの容易化やより良い設計につながるだろう.

さて,モデルベースド制御,すなわちモデルを用いて制御器の構造及びパラメータを設計する制御器設計としては全状態フィードバックによる極配置法が有名である. 通常PID制御では極や零点の位置に着目せずにチューニングするが,制御対象のモデルがあれば極・零点の位置を導出でき,そこからダイナミクスを予測することができる.
以下Double IntegratorにPID制御器を適用した場合に極・零点がどのように配置されるかを示す.

制御対象

制御対象は簡単のため,下図のような入力係数としてbが掛かるだけの抽象的かつシンプルなDouble Integratorとする.

f:id:kawazu_gkgk:20200826005947p:plain:w300

伝達関数P(s)は,

P(s)=\displaystyle{\frac{b}{s^2}}

である.

例えば質量mの物体に対し,電圧を制御入力として入力係数Kで力にアクチュエータが変換するような場合ではb=\displaystyle{\frac{K}{m}}とすることで等価になる.

なお粘性抵抗等のフリクションは無視しているため注意.

PID制御器

制御系を次のように構成する.

f:id:kawazu_gkgk:20200825230119p:plain

e(t)=r(t)-x(t)とすれば,PID制御器は以下の制御則で表される.

u(t)=\displaystyle{k_pe(t)+k_d\frac{d}{dt}e(t)+k_i\int_0^t e(t)}

これをラプラス変換することで,

 \begin{align}
  C(s) &= \frac{U(s)}{E(s)} \\
  &= k_p+k_ds+k_i\frac{1}{s} \\
  &= \frac{1}{s}(k_ds^2+k_ps+k_i)
\end{align}

となる.

閉ループ系の伝達関数

以上の結果より,閉ループ伝達関数G_c(s)

\begin{align}
  G_c(s)&=\frac{Y(s)}{U(s)}  \\
  &=\frac{C(s)P(s)}{1+C(s)P(s)}  \\
  &=bk_d\frac{s^2+\frac{k_p}{k_d}s+\frac{k_i}{k_d}}{s^3+bk_ds^2+bk_ps+bk_i}
  \end{align}

となる.

極と零点

閉ループ系伝達関数G_c(s)の分母多項式D(s),分子多項式N(s)とする.
すなわち,

D(s)=s^3+bk_ds^2+bk_ps+bk_i  \\
  N(s)=\displaystyle{s^2+\frac{k_p}{k_d}s+\frac{k_i}{k_d}}

であり,これらの多項式D(s),N(s)の根を求めることでそれぞれ極,零点を得ることができる.

代表二次極法による極配置

代表二次極法とは,極配置設計手法の一つである.
代表二次極法では,閉ループダイナミクスが代表極,すなわち極の実部が原点に最も近い極のみに概ね支配される性質を利用した極配置を行う.
ここでは設計したい極の数は3つなので,閉ループ極は- \zeta \omega _ n \pm j \sqrt{1-\zeta^ 2} \omega _ n,- \alpha \omega _ nとする. ここで,\zeta,\omega_nはそれぞれ代表極の減衰比,自然角周波数であり,これらのパラメータでダイナミクスを調整する. \alphaは代表極でない残り一つの極の代表極からの距離を決めるパラメータであり,値を大きくとるほどダイナミクスへの影響が小さくなる. すなわち,\alphaを十分大きくすることで閉ループダイナミクスは以下の伝達関数で表される2次システムのダイナミクスに近づくため,この2次システムの応答のみを検討するだけでおおよその閉ループダイナミクスを設計することができる.

閉ループ極を- \zeta \omega _ n \pm j \sqrt{1-\zeta^ 2} \omega _ n,- \alpha \omega _ nに配置する場合,閉ループ伝達関数の分母多項式D(s)は次式を満たす必要がある.

\begin{align}
  D(s)=s^3+bk_ds^2+bk_ps+bk_i &= (s^2+2\zeta\omega_n s+\omega_n^2)(s+\alpha\omega_n)  \\
  &= s^3+(2\zeta+\alpha)\omega_n s^2+(2\alpha\zeta+1)\omega_n^2 s+\alpha\omega_n^3
  \end{align}

係数を比較することで,

\begin{align}
  kp &= \displaystyle{\frac{(2\alpha\zeta+1)\omega_n^2}{b}}  \\
  ki &= \displaystyle{\frac{\alpha\omega_n^3}{b}}  \\
  kd &= \displaystyle{\frac{(2\zeta+\alpha)\omega_n}{b}}
  \end{align}

を得ることができ,\alpha,\zeta,\omega_nを上式に与えることで各ゲインの値を得ることができる.

また,これらのゲインを閉ループ系の分子多項式に代入すると次のようになる.

\displaystyle{N(s)=s^2+\frac{k_p}{k_d}s+\frac{k_i}{k_d} = s^2+\frac{2\alpha\zeta+1}{2\zeta+\alpha}\omega_n s+\frac{\alpha}{2\zeta+\alpha}\omega_n^2}

\omega_n'=\sqrt{\frac{\alpha}{2\zeta+\alpha}}\omega_n, \zeta'=\frac{2\alpha\zeta+1}{2\sqrt{\alpha(2\zeta+\alpha)}}とおけば次のように整理される.

N(s)=s^2+2\zeta'\omega_n's+\omega_n'^2

すなわち零点は半径\omega_n'偏角\pm\arctan{\frac{\sqrt{1-\zeta'^2}}{\zeta'}}の位置に配置される. \omega_n'は常に\omega_nより小さく,\alphaを大きくとることで\omega_nに漸近する. また,\zeta'\alphaを大きくとることで\zetaに漸近するが,\zeta'>\zeta\zeta'\lt\zetaかは\zetaに依存し,\zeta=1に近い高減衰比の場合では\zeta'\lt\zetaとなる. これは\alpha\rightarrow\inftyで極零相殺が生じることを意味し,その場合のダイナミクスは残りの一つの極-\alpha\omega_nによって決まることとなる.

f:id:kawazu_gkgk:20200826011103p:plain:w300

上図は\omega_n=1としたときの\omega_n'/\omega_n(上)と\zeta'/\zeta(下)であり,横軸は\alphaを表す. \alpha\rightarrow\inftyは無限大の制御入力を与えることとなり非現実的だが,\alpha=3程度でも\omega_n'\omega_nの0.8~0.9倍程度,\zeta'\zetaがごく小さくなければ\zetaの1~1.5倍程度まで近づくため,極零相殺に近い状況になる.

配置例

例として\omega_n=1,\zeta=0.707,\alpha=3とした場合のステップ応答を示す.

f:id:kawazu_gkgk:20200826011536p:plain:w250

この場合,\omega_n'=0.824,\zeta'=0.720となり,零点は代表極より原点に近くダイナミクスへの影響が大きく現れる. ボード線図を見ると零点によってピークが生じていることがわかる. このようなピークがある周波数特性では応答にオーバーシュートが発生する.

f:id:kawazu_gkgk:20200826011554p:plain:w250

なおこのピークは極・零点の位置関係の関係から\alpha\rightarrow\inftyとならない限り現れるため,このDouble-IntegratorへPIDを適用する場合には避けられない.
ここで現れている零点は制御器の零点そのものであり,これはPID制御器の比例要素と微分要素で出力y(t)と参照入力r(t)との差をとっていることに由来する. この比例要素と微分要素で参照入力r(t)による差をとらず出力y(t)のみのフィードバックとする構造をとることで零点はなくなり,オーバーシュートを抑えることができる. ただし零点がなくなることにより応答の立ち上がりは遅くなるため,どちらをとるかは設計仕様次第か.