目次[非表示]
はじめに
状態フィードバックも現代制御の入口です。その名の通りシステムの内部状態の全てを使ってフィードバックをかける制御理論です。PID制御のように直感では扱えません。制御理論の理解が必要です。
現代制御から先はエキスパートの世界?いえいえ、制御を志したならば是非扱えるようになって欲しいと思います。このブログではコントローラへの実装を前提に設計手順を説明し、そのロジックをEXCELで確認していきます。PID制御では十分な制御性能を得られない場合など、状態フィードバックを適用してみるために必要な知見を使える知識として身に着けられるように説明していきます。
状態フィードバック(レギュレータ)とは
外乱などにより発生したシステムの内部状態のズレを目標状態に収束させるフィードバック制御が状態フィードバック(レギュレータ)です。
下記のシステムの状態方程式において
\frac{dx(t)}{dt}=A x(t)+Bu(t)状態変数𝒙(𝑡)と目標状態 𝒙𝑜𝑏𝑗(𝑡) との偏差をゲインK 倍して入力 u(𝑡) としてフィードバックする制御機構を状態フィードバックとよびます。
\frac{dx(t)}{dt}=Ax(t)+BK\left(x_{obj}(t)-x(t)\right)
状態フィードバック(レギュレータ)では、目標状態 x_{obj}=0 とした
\frac{d x(t)}{d t}=(A-B K) x_{(t)}
が状態フィードバック(レギュレータ)の基本式になります。
状態フィードバック(レギュレータ)の設計手順
状態フィードバック(レギュレータ)の実システムへの適用では、コントローラへの実装を想定し、離散時間システムへの変換の際に制御入力を分離したモデル式で扱っていくのがポイントです。
設計手順1
連続時間系の特性方程式 \operatorname{det}(\lambda I-(A-BK))から ゲインK を求めます。
設計手順2
状態フィードバック(レギュレータ)の基本式\frac{d x(t)}{d t}=(A-B K) x_{(t)}を離散化する際、制御入力は分離して設計します A→P B→Q u=−Kx
x_{(n+1)}=Px_{(n)}+Q(-Kx_{(n)})
状態フィードバックゲインKの設定
まずは、連続時間系で状態フィードバックゲインKを設定します。基本式
\frac{d x(t)}{d t}=(A-B K) x_{(t)}
において、連続時間系の状態フィードバックが収束するための安定条件は、
特性方程式 \operatorname{det}(\lambda I-(A-BK))=0 の固有値 (解) λ の実部が負であることです。(システムの安定条件はバネマスモデルで説明しています。)
システムが2次の場合、状態フィードバックゲインKとベクトルBは
K=\left[k_{1} k_{2}\right] \hspace{0.5cm} B=\left[\begin{array}{l}b_{1} \\ b_{2}\end{array}\right] \hspace{0.5cm} BK=\left[\begin{array}{lll}b_{1} k_{1} & b_{1} k_{2} \\ b_{2} k_{1} & b_{2} k_{2}\end{array}\right] このとき特性方程式は
\operatorname{det}(\lambda I-(A-BK))=\operatorname{det}\left(\left[\begin{array}{ll}\lambda & 0 \\ 0 & \lambda\end{array}\right]-\left[\begin{array}{ll}a_{11} & a_{12} \\ a_{21} & a_{22}\end{array}\right]+\left[\begin{array}{lll}b_{1} k_{1} & b_{1} k_{2} \\ b_{2} k_{1} & b_{2} k_{2}\end{array}\right]\right) =\operatorname{det}\left(\left[\begin{array}{cc}\lambda-a_{11}+b_{1} k_{1} & -a_{12}+b_{1} k_{2} \\ -a_{21}+b_{2} k_{1} & \lambda-a_{22}+b_{2} k_{2}\end{array}\right]\right)=\left(\lambda-a_{11}+b_{1} k_{1}\right)\left(\lambda-a_{22}+b_{2} k_{2}\right)-\left(-a_{12}+b_{1} k_{2}\right)\left(-a_{21}+b_{2} k_{1}\right)=\lambda^{2}+\left(b_{1} k_{1}+b_{2} k_{2}-a_{11}-a_{22}\right) \lambda+\left(a_{12} b_{2}-a_{22} b_{1}\right) k_{1}+\left(-a_{11} b_{2}+a_{21} b_{1}\right) k_{2}+a_{11} a_{22}-a_{12} a_{21} ・・・・①
固有値 λ の安定条件 より λ = − d ( d は正の整数・・・固有値 (解) λ の実部が負)とすると
(\lambda+d)^{2}=\lambda^{2}+2 d \lambda+d^{2} ・・・・② ※計算を簡単にするために重根にしています
①と②の係数比較の連立式で状態フィードバックゲインK を設定します。
b_{1} k_{1}+b_{2} k_{2}=a_{11}+a_{22}+2 d\left(a_{12} b_{2}-a_{22} b_{1}\right) k_{1}+\left(-a_{11} b_{2}+a_{21} b_{1}\right) k_{2}=-a_{11} a_{22}+a_{12} a_{21}+d^{2}
この連立式を解いて状態フィードバックゲインk1,k2 を求めます。連立式はEXCELで解きます。この段階では連続系の式です。状態フィードバックゲインKは、\operatorname{det}(\lambda I-(A-BK))=0 を満たすλの解の実部が負になるように選ぶのがポイントです。
EXCELファイルのダウンロード
こちらから、状態フィードバックのEXCELファイルをダウンロードできます。
状態フィードバックゲインKの連立方程式をEXCELで解く
状態フィードバックゲインKの連立方程式
b_{1} k_{1}+b_{2} k_{2}=a_{11}+a_{22}+2 d\left(a_{12} b_{2}-a_{22} b_{1}\right) k_{1}+\left(-a_{11} b_{2}+a_{21} b_{1}\right) k_{2}=-a_{11} a_{22}+a_{12} a_{21}+d^{2}これを行列表現に修正します。
\left[\begin{array}{cc}b_{1} & b_{2} \\ a_{12} b_{2}-a_{22} b_{1} & -a_{11} b_{2}+a_{21} b_{1}\end{array}\right]\left[\begin{array}{l}k_{1} \\ k_{2}\end{array}\right]=\left[\begin{array}{c}a_{11}+a_{22}+2 d \\ -a_{11} a_{22}+a_{12} a_{21}+d^{2}\end{array}\right]
EXCELの逆行列(MINVERSE)や行列の積(MMULT)の関数を利用することで連立方程式を解くことができます。
\left[\begin{array}{l}k_{1} \\ k_{2}\end{array}\right]=\left[\begin{array}{cc}b_{1} & b_{2} \\ a_{12} b_{2}-a_{22} b_{1} & -a_{11} b_{2}+a_{21} b_{1}\end{array}\right]^{-1}\left[\begin{array}{c}a_{11}+a_{22}+2 d \\ -a_{11} a_{22}+a_{12} a_{21}+d^{2}\end{array}\right]
EXCELの状態方程式シートでは、上記の連立方程式から状態フィードバックゲインKを算出しています。
状態フィードバックの収束性確認
EXCELのシミュレーション (状態フィードバック)のシートでは、以下の状態方程式の仮想的なシステムに状態フィードバックを適用した結果を示しています。
仮想的なシステムは状態フィードバックがないと発散するシステムです。
状態フィードバック制御演算値–Kxを入力すると内部状態は全て0に収束させることができます。
グラフは λ=-10 の挙動です。特性方程式の固有値λをスライドボリュームで変更し、状態フィードバックゲインを変化させ、収束挙動の違いを確認することができます。
可制御性の確認
状態フィードバックが機能するには、可制御性の条件が必要です。
\frac{d x(t)}{d t}=A x(t)+B u(t)
において、係数行列A,Bはそれぞれ n×n , n×m の定数行列とすると、システムが制御可能であるための必要十分条件は、
M=\left[B A B \cdots \cdot A^{n-1} B\right]\operatorname{Rank} M=n \quad(\operatorname{det}(\mathrm{M}) \neq 0)
Rankは階段行列にしたときに0ではない行の数(独立した式の数)のことです。Rank M = n (フルランク)であればMは正則行列(det (M)≠ 0 )になります。Excelファイルの可制御性のシートでは可制御性をチェックしています。Excelには行列式(det)を計算する関数MDETERMがあるので、MDETERMによりシステムの可制御性を Mの行列式≠0 で確認しています。
実システムへの適用にはもう1段の検討が必要
仮想的なシステムで内部状態が全て0に収束することを確認しました。しかし、一般のシステムでは、全ての状態をゼロに収束させるよりも、目標状態に保つことが要求される場合が多いため、状態フィードバック(レギュレータ)の実システムへの適用にはもう1段の検討が必要になります。
次は、状態フィードバック(レギュレータ)の実システムへの適用に向けた検討になります。→ 次へ
0 件のコメント:
コメントを投稿