12-1. 状態フィードバック制御(演習)

離散時間システムの状態フィードバック制御

離散時間システムが、$$x(k+1) = \begin{bmatrix} 0 & 1 & 0 \\ 0 & 0 & 1 \\ 0 & 0.4 & 0.3 \end{bmatrix} x(k) + \begin{bmatrix} 0 \\ 0 \\ 1 \end{bmatrix} u(k) \;\;\; \cdots (1)$$ において、$$u(k) = - \begin{bmatrix} f_1 & f_2 & f_3 \end{bmatrix} x(k)$$として、閉ループの極がすべて零となるように、\(f_1 , f_2 , f_3\)を定める。(閉ループ系はデッドビート制御となる。)

式(1)に\(u(k)\)を代入すると、$$x(k+1) = \begin{bmatrix} 0 & 1 & 0 \\ 0 & 0 & 1 \\ 0 & 0.4 & 0.3 \end{bmatrix} x(k) - \begin{bmatrix} 0 \\ 0 \\ 1 \end{bmatrix} \begin{bmatrix} f_1 & f_2 & f_3 \end{bmatrix} x(k) = \begin{bmatrix} 0 & 1 & 0 \\ 0 & 0 & 1 \\ -f_1 & 0.4 - f_2 & 0.3 -f_3 \end{bmatrix} x(k)$$となる。特性方程式は、$$|zI - A| = \left| \begin{bmatrix} z & 0 & 0 \\ 0 & z & 0 \\ 0 & 0 & z \end{bmatrix} - \begin{bmatrix} 0 & 1 & 0 \\ 0 & 0 & 1 \\ -f_1 & 0.4 - f_2 & 0.3 -f_3 \end{bmatrix} \right| \\ = \begin{vmatrix} z & -1 & 0 \\ 0 & z & -1 \\ f_1 & -(0.4-f_2) & z - (0.3 - f_3) \end{vmatrix} \\= z^3 + (f_3- 0.3)z^2 + (f_2 - 0.4)z + f_1 = 0 $$となる。閉ループの極が全て零であるためには、$$f_1 = 0, \;\;\; f_2 = 0.4, \;\;\; f_3 = 0.3$$であれば良い。このとき閉ループ系は、$$x(k+1) = \begin{bmatrix} 0 & 1 & 0 \\ 0 & 0 & 1 \\ 0 & 0 & 0 \end{bmatrix} x(k)$$となる。$$x(0) = \begin{bmatrix} a \\ b \\ c \end{bmatrix}$$とすると、$$x(1) = \begin{bmatrix} 0 & 1 & 0 \\ 0 & 0 & 1 \\ 0 & 0 & 0 \end{bmatrix} x(0) = \begin{bmatrix} b \\ c \\ 0 \end{bmatrix} $$ $$ x(2) = \begin{bmatrix} 0 & 1 & 0 \\ 0 & 0 & 1 \\ 0 & 0 & 0 \end{bmatrix} x(1) = \begin{bmatrix} c \\ 0 \\ 0 \end{bmatrix} $$ $$ x(3) = \begin{bmatrix} 0 & 1 & 0 \\ 0 & 0 & 1 \\ 0 & 0 & 0 \end{bmatrix} x(2) = \begin{bmatrix} 0 \\ 0 \\ 0 \end{bmatrix}$$となる。すなわち、3ステップで状態変数\(x\)は、初期値に係わらず零となる。

離散時間システムの状態空間表現とパルス伝達関数

離散時間システムの状態方程式と出力方程式を$$x(k+1) = \begin{bmatrix} 1 & -1 \\ 0 & 2 \end{bmatrix} x(k) + \begin{bmatrix} 0 \\1 \end{bmatrix} u(k) \\ y(k) = \begin{bmatrix} -1 & 0 \end{bmatrix} x(k)$$とする。

(1)\(u\)から\(y\)までの伝達関数を求める。

$$A = \begin{bmatrix} 1 & -1 \\ 0 & 2 \end{bmatrix} , \;\;\; b = \begin{bmatrix} 0 \\1 \end{bmatrix} , \;\;\; c=\begin{bmatrix} -1 & 0 \end{bmatrix} $$なので、\(u,\;\;y\)間の伝達関数は、$$G(z) = c(z I -A)^{-1} b = \begin{bmatrix} -1 & 0 \end{bmatrix} \begin{bmatrix} z-1 & 1 \\ 0 & z-2 \end{bmatrix} ^{-1} \begin{bmatrix} 0 \\1 \end{bmatrix} = \frac{1}{(z-1)(z-2)}$$である。

(2)この離散時間システムの閉ループ系の極を\(z_1 = 0.5 ,\;\;\; z_2 = -0.5\)にする状態フィードバックのゲイン\(f\)を求める。なお、\(u = -f x + v\)とする。

Gopinathの定理を適用する。
開ループの特性方程式は、$$\phi(z) = |z I - A| =z^2 -3 z +2 =0$$となる。また、$$W=\begin{bmatrix} b & Ab \end{bmatrix} = \begin{bmatrix} 0 & -1 \\ 1 & 2 \end{bmatrix} \\ S = \begin{bmatrix} -3 & 1 \\ 1 & 0 \end{bmatrix}$$である。指定極より、閉ループ系の特性方程式は、$$\phi_f(z) = (z - 0.5)(z + 0.5) = z^2 - 0.25$$となる。$$a = \begin{bmatrix} 2 & -3 \end{bmatrix} \\ \alpha = \begin{bmatrix} -0.25 & 0 \end{bmatrix}$$なので、フィードバックゲインは$$f = (\alpha - a) S^{-1} W^{-1} = \begin{bmatrix} -0.75 & 3 \end{bmatrix}$$と求まる。

極配置法
Gopinathの定理

1入力系の開ループの特性方程式が、$$\phi(z) = |zI -A| \\ = z^n + a_1 z^{n-1} + \cdots + a_n$$であるシステムを状態フィードバック\(f\)を使って閉ループ系の特性方程式$$\phi_f(z) = | zI - (A - bf) | \\ = z^n + \alpha_1 z^{n-1} + \cdots + \alpha_n$$にする\(f\)は次のように与えられる。$$f = ( \alpha - a) S^{-1} W^{-1}$$ここで、$$\alpha = \begin{bmatrix} \alpha_n & \alpha_{n-1} & \cdots & \alpha_1 \end{bmatrix} \\ a = \begin{bmatrix} a_n & a_{n-1} & \cdots & a_1 \end{bmatrix} \\ W = \begin{bmatrix} b & Ab & \cdots & A^{n-1} b \end{bmatrix} \\ S = \begin{bmatrix} a_{n-1} & a_{n-2} & \cdots & a_1 & 1 \\ a_{n-2} & a_{n-3} &\cdots & 1 & 0 \\ \vdots & \vdots & \vdots & \vdots & \vdots \\ a_1 & 1 & 0 & \cdots & \vdots \\1 & 0 & \cdots & & 0 \end{bmatrix}$$

(3)閉ループ系の状態方程式、出力方程式を求める。

$$A - bf = \begin{bmatrix} 1 & -1 \\ 0 & 2 \end{bmatrix} - \begin{bmatrix} 0 \\1 \end{bmatrix} \begin{bmatrix} -0.75 & 3 \end{bmatrix} = \begin{bmatrix} 1 & -1 \\ 0.75 -1 \end{bmatrix}$$となるので、閉ループ系の状態方程式、出力方程式は、$$x(k+1) = \begin{bmatrix} 1 & -1 \\ 0.75 & -1 \end{bmatrix} x(k) + \begin{bmatrix} 0 \\1 \end{bmatrix} v(k) \\ y(k) = \begin{bmatrix} -1 & 0 \end{bmatrix} x(k)$$となる。

(4)閉ループ系の\(v\)から\(y\)の伝達関数を求める。

\(v, \;\;y\)間の伝達関数は、$$G_c(z) = c[z I - (a-bf)]^{-1} b =\begin{bmatrix} -1 & 0 \end{bmatrix} \begin{bmatrix} z-1 & 1 \\ -0.75 & z+1 \end{bmatrix}^{-1} \begin{bmatrix} 0 \\1 \end{bmatrix} = \frac{1}{(z-0.5)(z+0.5)}$$となる。閉ループ系の極が\(z_1 = 0.5 ,\;\;\; z_2 = -0.5\)となっていることがわかる。また、開ループ伝達関数と比較すると、状態フィードバックによって、零点は変わらないことがわかる。