状態フィードバック制御とは~ブロック線図や数値シミュレーションを使って詳しく解説~

制御工学

みなさん,こんにちは
おかしょです.

現代制御の第一歩ともいえる状態フィードバックについてブロック線図や数値シミュレーションを使って制御工学について学び始めたばかりの方でも理解できるように解説していきます.

この記事を読むと以下のようなことがわかる・できるようになります.

  • 状態フィードバックとは
  • 状態フィードバック制御のプログラムの書き方
  • 状態フィードバックの性能

 

この記事を読む前に

この記事では数値シミュレーションにマス・スプリング・ダンパーシステムを使用します.

以下の記事で求めた状態方程式を使用するのでそちらを先に読んでおくことをおすすめします.

 

状態フィードバック制御とは

状態フィードバック制御とは現代制御における制御手法の基礎です.

この状態フィードバックをブロック線図で表すと以下のようになrます.

古典制御のフィードバック制御では一つの状態量・出力のみにゲインをかけて制御入力としていましたが,状態フィードバック制御では状態方程式の状態量のすべてにゲインをかけて制御入力とします.

このようにすることで,状態量の一つだけを安定化させるのではなく,すべての状態量を安定化させることができます.

しかし,すべてのシステムを必ず安定化できるわけではなく,そのシステムが可制御である必要があります.可制御性についてはこちらで解説しています.

 

状態フィードバック制御のプログラム

状態フィードバック制御のプログラムは簡単に書くことができます.

一つだけ注意することは行列の次元です.

例えば,状態方程式の入力の数が2つだったとします.

\[
u=
\begin{bmatrix}
u_1\\ u_2
\end{bmatrix}
\tag{1}
\]

このuを状態フィードバックによって求めます.

このときの状態量が4つだった場合,この状態量にゲイン\(K\)を掛けて入力と同じ次元の行列を求める必要があります.

$$ ゲイン\in R^{?\times ?}\times 状態量\in R^{4\times 1} = 入力\in R^{2\times 1} $$

そのため,ゲイン\(K\)の次元は2行4列となります.

そのため,プログラムを書く場合はまずゲイン\(K\)の値を設定します.

$$ K=[k_1\ k_2]; $$

そして制御入力\(u\)は以下のようにしてプログラミングします.

$$ u=-K*x $$

\(x\)には状態量がすべて入っています.

これを制御入力としてシステムに与えることで状態フィードバック制御が行えます.

 

数値シミュレーション

冒頭でも述べたように数値シミュレーションはマス・スプリング・ダンパーシステムを使用します.

このとき,マス・スプリング・ダンパーシステムの質量\(m\)は1 kg,ばね定数\(k\)は10 N/m,ダンパー係数\(c\)は0.1 Ns/mとしました.

状態量の初期値は位置\(x\)を1 m,速度\(v\)は0 m/sとしました.

何も制御をしなかったときの応答はこのようになります.

このシステムは安定ですが,ダンパー係数が小さいので振動が収束するまでに時間がかかります.

これを上記で解説した状態フィードバック制御を用いると以下のようになります.

このようにフィードバック制御をすることで,システムをすぐに安定な状態へと遷移させることができます.

 

状態フィードバック制御の欠点

状態フィードバック制御では状態量のすべてをフィードバックします.

ほとんどのシステムでは状態量に微分値が含まれます.

その微分値にもゲイン\(K\)を掛けるので,状態フィードバック制御器はPD制御と同じような特徴があります.

PD制御の詳しい解説はこちらに書いてありますが,この制御器で問題となったのは定常偏差でした.

今回解説した状態フィードバック制御でも同様に定常偏差が生じてしまいます.

先程の数値シミュレーションで初期値をすべて0として,目標値に位置を1にするように与えて定常偏差が生じるのかを確認します.

このときのブロック線図は以下のようになります.

数値シミュレーションを行った結果,マス・スプリング・ダンパーシステムの位置の時間履歴は以下のようになりました.

このように目標値を1としているのにもかかわらず,マス・スプリング・ダンパーシステムの位置は0.5に収束しています.

 

まとめ

この記事では現代制御の基礎ともいえる状態フィードバック制御について解説しました.

状態フィードバックによって複数の状態量を同時に安定化させることができますが,目標値を与えると定常偏差が生じることが数値シミュレーションから確認できました.

 

続けて読む

状態フィードバック制御で生じてしまった定常偏差をなくすには偏差を積分する必要があります.

この定常偏差をなくす方法は以下の記事で解説しているので,続けて参考にしてください.

Twitterでは記事の更新情報や活動の進捗などをつぶやいているので気が向いたらフォローしてください.

それでは最後まで読んでいただきありがとうございました.

コメント

タイトルとURLをコピーしました