状態空間表現でのPID制御

はじめに

PID制御でゲインを決める場合,位相余裕やゲイン余裕を見たり,限界感度法などシステムの周波数応答を元にしてゲインを決める方法はよく知られていますが,状態空間でHurwitzの安定判別法を使いゲインを決める方法はあまり知られていないような気がします.ここでは非線形システムを例に状態空間でのPID制御器の設計方法を紹介します.

非線形システム

今回の制御対象となる非線形システムは図のような振り子とします.

振り子

ここで\(g\)は重力加速度,\(l\)は棒の長さで\(m\)は棒の先端のおもりの質量,\(\theta\)は棒と垂線がなす角度とします.棒は剛体で質量はゼロと仮定します.また,振り子には振れる角速度に比例した摩擦力が働き,その係数を\(k\)とします.この時の振り子のモデルは

\(ml\ddot{\theta} = – mg \sin \theta – kl \dot{\theta} + \cfrac{1}{l} T\)

となります.ここで\(T\)は振り子に加わるトルクです.\(T\)を制御入力として\(\theta\)を\(\delta\)にすることを考えます.\(x_1 = \theta – \delta\),\(x_2 = \dot{\theta}\),\(u = T\),\(y = x_1\)とすると

\(\begin{align} \dot{x}_1 &= x_2 \newline \dot{x}_2 &= – \cfrac{g}{l} \sin (x_1 + \delta) – \cfrac{k}{m} x_2 + \cfrac{1}{ml^2}u \newline \dot{\sigma} & = \theta – \delta \newline y & = x_1 \end{align} \)

となります.ここで\(\sigma\)は\(\theta\)と\(\delta\)の差の積分値です.

制御器の設計

\(x = \begin{bmatrix} x_1 & x_2 \end{bmatrix}^T\)とします.システムの平衡点\(x_{ss}\),\(u_{ss}\)は

\(x_{ss} = \begin{bmatrix} 0 & 0 \end{bmatrix}^T, \; \; \; u_{ss} = mgl \sin \delta\)

です.\(\dot{x} = f(x, u)\),\(y = h(x)\)とし,平衡点近傍で線形化すると

\(A = \frac{\partial f}{\partial x}(x, u) \left. \right|_{x=x_{ss},u=u_{ss}}\)

\(\left. A = \cfrac{\partial f}{\partial x} (x, u) \right|_{x = x_{ss}, u = u_{ss}} = \begin{bmatrix} 0 & 1 \newline – \cfrac{g}{l}\cos{\delta} & – \cfrac{k}{m} \end{bmatrix} \)

\(B = \left. \cfrac{\partial f}{\partial u} (x, u) \right|{x = x{ss}, u = u_{ss}} = \begin{bmatrix} 0 \newline \cfrac{1}{ml^2} \end{bmatrix} \)

\(C = \left. \cfrac{\partial h}{\partial x} \right|{x = x{ss}} = \begin{bmatrix} 1 & 0 \end{bmatrix} D &= \cfrac{\partial f}{\partial x} (x, u) {x = x{ss}, u = u_{ss}}\)

\(D = \cfrac{\partial f}{\partial x} (x, u)\)

となります.ここで

\(u = – K_1 x – K_2 \sigma \)

としたときの線形化システムの閉ループ系は

\(\begin{align} \begin{bmatrix} \dot{x} \newline \dot{\sigma} \end{bmatrix} = \left( \begin{bmatrix} A & 0 \newline C & 0 \end{bmatrix} – \begin{bmatrix} B \newline 0 \end{bmatrix} \begin{bmatrix} K_1 & K_2 \end{bmatrix} \right) \begin{bmatrix} x \newline \sigma \end{bmatrix} \end{align}\)

となります.ここでもし

\(\begin{bmatrix} A & 0 \newline C & 0 \end{bmatrix} – \begin{bmatrix} B \newline 0 \end{bmatrix} \begin{bmatrix} K_1 & K_2 \end{bmatrix} \)

がHurwitzの条件をみたすならば線形化システムの閉ループ系は指数安定となり,非線形システムの閉ループ系では局所的漸近安定性が保証されます.\(K_1 = \begin{bmatrix}k_1 & k_2\end{bmatrix}\),\(K_2 = k_3\)としたとき,特性方程式は

\(\begin{align} &\textrm{det}\left( \begin{bmatrix} A & 0 \newline C & 0 \end{bmatrix} – \begin{bmatrix} B \newline 0 \end{bmatrix} \begin{bmatrix} K_1 & K_2 \end{bmatrix} – \lambda E \right) \newline &= \lambda^3 + \left(\cfrac{k}{m} + \cfrac{1}{ml^2} k_2\right)\lambda^2 + \left( \cfrac{g}{l} \cos \delta + \cfrac{1}{ml^2} k_1 \right) \lambda + \cfrac{1}{ml^2} k_3 = 0 \end{align} \)

となります.よって

\(\cfrac{k}{m} + \cfrac{1}{ml^2} k_2 \gt 0\)

\(k_3 \gt 0\)

\(\left(\cfrac{k}{m} + \cfrac{1}{ml^2} k_2\right)\left(\cfrac{g}{l} \cos \delta + \cfrac{1}{ml^2} k_1\right) – \cfrac{1}{ml^2} k_3 \gt 0 \)となるように\(k_1\),\(k_2\),\(k_3\)を決めればよいことがわかります.

シミュレーション

それでは実際にHurwitzの条件を満たすようなゲインを定めてシミュレーションをします.パラメータを\(g = 9.8[\textrm{m}/\textrm{s}^2]\),\(l = 0.4[\textrm{m}\),\(m=0.3[\textrm{kg}]\) \(k = 0.1\)とし,ゲインを\(k_1 = 30\),\(k_2 = 6.0\),\(k_3 = 9.0\)とします.初期値を\(x = \begin{bmatrix}0 & \pi\end{bmatrix}^T\),\(\delta = \cfrac{\pi}{4}\)としたときの結果は下の図のようになります.図ではわかりやすいように弧度法から度数法に直して表示しています.図より目標の角度である\(\cfrac{\pi}{4}\)に収束していることがわかります.

角度

まとめ

Hurwitzの安定判別法を使ってPID制御器を設計し,その効果をシミュレーションで確認をしました.この方法ではモデルの次数が大きくなると解かなければならない行列式が多くなるのが難点です.最後にシミュレーションで使用したソースを載せておきます.

コメントを残す

メールアドレスが公開されることはありません。