みなさん,こんにちは
おかしょです.
制御系の設計ではフィードバック制御が主流となっていますが.
それとは反対の意味を持つフィードフォワード制御というものがあります.
この記事では1次遅れ系のシステムを対象としたフィードフォワード制御のやり方や特徴を解説していきます.
この記事を読むと以下のようなことがわかる・できるようになります.
- フィードフォワード制御とは
- フィードフォワード制御のやり方
- フィードフォワード制御の特徴
この記事を読む前に
この記事では1次遅れ系の伝達関数を用いて逆ラプラス変換を行います.
逆ラプラス変換のやり方などがわからない方は,この記事を読む前に以下の記事を先に読んでおいた方が理解しやすいと思いますので,そちらを先に読んでおくことをおすすめします.
フィードフォワード制御とは
制御工学を学習している方はフィードバック制御をよく目にすると思います.
現在あるほぼすべての制御系は,このフィードバック制御を基にして設計されています.
このフィードバック制御と言うのは,制御をするために目標値と現在の状態量を比較して制御入力を求める構造のことを言います.
ブロック線図で表すと以下のようになります.
このように状態量を目標値のところまで戻す(back)ので,フィードバック制御と呼ばれます.
これに対して,フィードフォワード制御と言うのは,以下のブロック線図のように状態量を戻しません.
このように目標値との誤差を求めずに,目標値のみを使って制御入力を決定します.
フィードフォワード制御のやり方
フィードバック制御,フィードフォワード制御は制御系の構造は異なりますが,どちらも状態量を目標値へと到達させるという目的は同じです.
フィードフォワード制御の場合は,制御入力の算出に状態量は使えないので制御対象の数学モデルを使用します.
ここでは制御対象の数学モデルが以下のような伝達関数で与えられた場合を考えます.
\[
G(s) = \frac{K}{Ts+1} \tag{1}
\]
この伝達関数は入力と出力の比を表すので,以下のように書き換えることができます.
\[
\begin{eqnarray}
\frac{Y}{U} &=& \frac{K}{Ts+1} \\
Y &=& \frac{K}{Ts+1} U \tag{2}
\end{eqnarray}
\]
ここで,出力を\(Y\),入力を\(U\)としています.
この入力\(U\)を工夫して,出力\(Y\)を目標値\(R\)に追従させたいです.
フィードフォワード制御器を構成するために,まずは目標値\(R\)への到達の仕方を設定します.
今回は以下のような1次遅れ系の応答と同じように出力\(Y\)が目標値\(R\)へと追従するように設計します.
\[
G_R = \frac{1}{as+1} \tag{3}
\]
このように目標値を設計することで,制御対象の位相の遅れがひどい場合でも即応性をパラメータ―\(a\)で調整することが可能となります.
実際の出力\(Y\)が式(3)で設計した\(G_R\)と同じ応答をするには,制御器も含めた伝達関数が式(3)と一致しなければなりません.
そのため,制御入力\(U\)は以下のようにして式(1)の伝達関数を打ち消す要素が必要になります.
\[
U = \frac{Ts+1}{K} \frac{1}{as+1} R \tag{4}
\]
この式を式(2)に代入することで,伝達関数は式(3)と完全に一致します.
この式(4)がフィードフォワード制御器の伝達関数表現となります.
数値シミュレーション
式(4)のような伝達関数表現でもsimulinkなどの数値計算ソフトを使えば数値シミュレーションはできますが,ここではそのようなソフトがない場合を想定してプログラムの書き方を解説します.
数値シミュレーションをするのにラプラス変換された伝達関数では困ってしまうので,この伝達関数を逆ラプラス変換します.
式(4)を逆ラプラス変換すると以下のようになります.(逆ラプラス変換についてわからない方はこちらを参照してください.)
\[
\begin{eqnarray}
K(as+1) U &=& (Ts+1) R \\
Ka\dot{u} + Ku &=& T\dot{r}+r \\
\dot{u} &=& -\frac{1}{a} u+\frac{T}{aK} \dot{r} + \frac{1}{aK} r \tag{5}
\end{eqnarray}
\]
ここで,大文字から小文字に変化した\(u\)と\(r\)はそれぞれの逆ラプラス変換した結果を表しています.
以上のようにして入力\(u\)の微分方程式を求めることができます.
あとはプログラムでこの微分方程式を積分することでフィードフォワード制御入力を求めることができます.
この微分方程式を用いて数値シミュレーションを行います.
この時,目標値は一定値で1としました.
ここで,式(5)の右辺第2項は目標値を微分しています.目標値は一定値なので,この項は0になると思うかもしれませんが,それは間違いです.
この時の目標値は初期値を0とする必要があります.
つまり,初期値の時のむ式(5)の右辺第2項は0ではなくなります.
このようにして数値シミュレーションを行いました.
まずは入力を一定値の1とした時の応答を以下に示します.
この時,制御対象は式(1)において\(T=10,\ K=2\)としています.
結果を見ると明らかなように,60秒ほどたって2に収束していることがわかります.
目標値である1を制御入力として与えましたが,これでは目標値には追従できませんでした.
次に,上で解説したフィードフォワード制御を行います.
先程の応答とは明らかに違っています.
目標値である1に速やかに収束していることがわかります.
この時,設定パラメータ―である\(a\)は1としました.
以上のようにして,フィードフォワード制御によって目標値へと収束させることができました.
フィードフォワード制御の欠点
以上のようにフィードフォワード制御で十分な制御性能の確認が数値シミュレーションからできました.
しかし,フィードフォワード制御には大きな欠点があります.
それはモデル化誤差によって制御性能が著しく劣化することです.
フィードフォワード制御では状態量の代わりに数学モデルを使用して制御入力を算出していました.
どのため,この数学モデルが実際の値と異なっていた場合は目的としている応答を得ることはできなくなってしまいます.
フィードバック制御の場合は数学モデルが異なっていても目標値に収束させることは可能ですが,フィードフォワード制御の場合は収束させることができないことがあります.
上の数値シミュレーションでは一次遅れ系のシステムを制御しましたが,この時の\(T\)の値が間違っていても目標値に収束させることはできます.
しかし,\(K\)の値が間違っていた場合は目標値とは違う値に収束してしまいます.
これは式(4)を式(2)に代入して最終値の定理を使うと確認できます.(最終値の定理についてはこちら)
制御対象の数学モデルが完全に分かっている状況というのは実際にはありえません.
そのため,フィードフォワード制御のみで制御するというのは無謀とも言えます.
しかし,このフィードフォワード制御はフィードバック制御と組み合わせることでフィードバック制御のみの制御器よりも性能を向上させることが可能となります.
このような制御器を二自由度制御と言います.
興味のある方は二自由度制御についても調べてみることをおすすめします.
まとめ
この記事ではフィードフォワード制御について解説しました.
一次遅れ系を例にしたフォードフォワード制御器の設計の仕方も公開して,実際の数値シミュレーション結果も示しました.
このフィードフォワード制御は単体では使用されることはありませんが,二自由度制御では非常に大きな役割を持つのでしっかり覚えておくと良いと思います.
続けて読む
この記事でも少しだけ触れたフィードバック制御であるPID制御については以下の記事で解説しているので,この記事で合わせて参考にしてください.
Twitterでは記事の更新情報や活動の進捗などをつぶやいているので気が向いたらフォローしてください.
それでは最後まで読んでいただきありがとうございました.
コメント