ゲインスケジューリング制御シミュレーター 戻る
制御工学

ゲインスケジューリング制御シミュレーター

運転点によってゲインが変わる非線形プラントを制御するツールです。固定ゲイン制御とゲインスケジュール制御を切り替え、運転点を動かすと、実ループゲイン・設計値からの偏差・推定オーバーシュートがリアルタイムで変わり、なぜスケジューリングが必要かを体感できます。

パラメータ設定
運転点(スケジューリング変数)
%
対気速度・液位・スループットなど、直接計測できる量
低運転点でのプラントゲイン
運転点 0% でのプロセスゲイン
高運転点でのプラントゲイン
運転点 100% でのプロセスゲイン
設計(公称)比例ゲイン Kdesign
公称運転点 50% で調整したコントローラゲイン
コントローラ方式
固定ゲインか、運転点に追従するスケジュール制御か
計算結果
現運転点のプラントゲイン
コントローラゲイン Kc
実ループゲイン
設計値からのゲイン偏差 (%)
推定オーバーシュート (%)
性能の一貫性
運転包絡線 — プラントゲイン・コントローラゲイン・ループゲイン

水平軸はスケジューリング変数 0〜100%。プラントゲイン(青)は右上がりに増加。固定方式ではコントローラゲイン(橙)は水平、スケジュール方式ではプラントゲインを打ち消す曲線になり、その積であるループゲイン(緑)が水平に保たれます。

ループゲイン vs 運転点
推定オーバーシュート vs 運転点
理論・主要公式

$$K_{plant}(s)=K_{low}+(K_{high}-K_{low})\,\frac{s}{100}$$

プラントゲインはスケジューリング変数 s [%] に対して線形に変化する。Klow・Khigh は運転点 0%・100% でのプロセスゲイン。

$$K_c=K_{design}\cdot\frac{K_{plant,nominal}}{K_{plant}}\ \Rightarrow\ K_c\,K_{plant}=\text{const}$$

スケジュール制御のコントローラゲイン Kc は、公称運転点 50% のプラントゲイン Kplant,nominal に対してプラントゲインの逆数で補正する。これによりループゲイン Kc·Kplant が一定に保たれる。

$$\zeta=\zeta_{nom}\sqrt{\frac{K_{design}\,K_{plant,nominal}}{K_c\,K_{plant}}},\qquad M_p=e^{-\pi\zeta/\sqrt{1-\zeta^{2}}}$$

閉ループを二次系とみなし、減衰比 ζ はループゲインの平方根に反比例する(公称減衰比 ζnom=0.6)。オーバーシュート Mp は ζ から求まる。スケジューリングはループゲインを一定に保つため、応答が運転範囲全体で一貫する。

ゲインスケジューリングとは

🙋
「ゲインスケジューリング」って言葉、制御の本でよく見るんですけど、ざっくり何をする手法なんですか?
🎓
ざっくり言うと「運転点ごとにコントローラのゲインを切り替える」手法だよ。多くの実プラントは非線形で、運転点によってプロセスゲインが変わるんだ。例えば航空機は速度や高度で空力特性がガラッと変わるし、タンクは液位で、化学反応器は温度でゲインが変わる。1つの運転点で完璧に調整したコントローラを、別の運転点に持っていくと途端に性能が落ちる。だから運転点に応じてゲインを変えてやるのがゲインスケジューリングなんだ。
🙋
なるほど。でも、ゲインを1つに固定しちゃダメなんですか?平均的な値にしておけば…と思っちゃいます。
🎓
それがうまくいかないんだ。左で「固定ゲイン制御」を選んで運転点スライダーを動かしてごらん。プラントゲインが低い側ではループゲインが小さくなって応答が鈍く、高い側ではループゲインが過大になってオーバーシュートが増える。既定値だと運転点100%でループゲインが設計値の+60%にもなる。平均値で妥協しても、両端のどちらでも中途半端な性能にしかならない。これが固定ゲインの限界なんだよ。
🙋
じゃあスケジュール制御にすると何が変わるんですか?
🎓
「ゲインスケジュール制御」に切り替えて、また運転点を動かしてみて。コントローラゲイン Kc がプラントゲインの逆数に合わせて変化するだろう? プラントゲインが2倍なら Kc を半分にする。すると両者の積であるループゲインがずっと一定になる。ループゲインが一定なら、減衰比もオーバーシュートも運転範囲全体でほぼ同じ。グラフの「ループゲイン vs 運転点」が水平な直線になるのが、スケジューリングが効いている証拠だよ。
🙋
うまい仕組みですね。でも、Kc をどうやって「いまの運転点」に合わせるんですか?プラントゲインを直接測るんですか?
🎓
いい質問だ。プラントゲインそのものは測りにくい。だから代わりに「スケジューリング変数」を測るんだ。これは非線形性をよく代表していて、直接・高速に計測できる量を選ぶ。飛行制御なら対気速度や動圧、タンクなら液位、エンジンなら回転数や負荷だね。実装では、複数の運転点ごとに調整したゲインを表に持っておき、計測したスケジューリング変数で表を引いて補間する。だから「スケジュール(予定表)」という名前なんだよ。
🙋
適応制御とは違うんですか?どちらも自動でゲインを変える気がします。
🎓
似て非なるものだね。適応制御は、運転中にプラントの応答を「観測」してゲインを推定・調整する。ゲインスケジューリングは、運転前に各運転点で設計を済ませておき、運転中はスケジューリング変数で「あらかじめ決めた」ゲインを引くだけ。だから動作が予測しやすく、検証もしやすい。航空機の飛行制御がほぼ全てゲインスケジューリングなのは、その予測可能性と認証のしやすさが理由なんだ。実務での採用が圧倒的に多い、堅実な手法だよ。

よくある質問

ゲインスケジューリングは、運転点によって特性(特にゲイン)が変わる非線形プラントを制御するための、実務で非常に広く使われる手法です。あらかじめ複数の運転点ごとに調整したコントローラゲインの集合を用意しておき、直接計測できる「スケジューリング変数」(航空機なら対気速度、タンクなら液位、プロセスならスループット)に応じて、それらのゲインを連続的に切り替え・補間します。これにより、運転範囲全体でループゲインを一定に保ち、閉ループ応答を一貫させます。
プラントのゲインや速応性が運転点で変わると、固定ゲインのコントローラはある1点でしか良好に調整できません。プラントゲインが低い領域では応答が鈍くなり、プラントゲインが高い領域ではループゲインが過大になって振動的・場合によっては不安定になります。本ツールの既定値(gainLow=1, gainHigh=4)では、固定ゲインだと運転点100%でループゲインが設計値の+60%になります。ゲインスケジューリングはコントローラゲインをプラントゲインの逆数に比例させ、ループゲインを一定に保ちます。
スケジューリング変数は、(1) プラントの非線形性をよく代表し、(2) 直接かつ高速・確実に計測でき、(3) 制御入力の影響を受けにくい外生的な量であることが理想です。飛行制御では対気速度や動圧と高度、タンクの液位制御では液位そのもの、化学反応器では反応温度、エンジン制御では回転数や負荷が典型例です。スケジューリング変数の選択を誤ると、ゲインが正しい運転点に追従せず、スケジューリングの効果が失われます。
代表的な注意点は、(1) 運転点間の補間が粗すぎると、点と点の間でループゲインがずれること、(2) スケジューリング変数が速く動くと、固定の各運転点で行った線形設計の前提が崩れる「速い変動」の問題が生じること、(3) 各運転点での安定性が保証されても、運転点を移動する全体としての安定性は別途確認が必要なこと、です。実務では運転点を十分密に取り、スケジューリング変数の変化速度に制限を設け、全包絡線でシミュレーションして検証します。

実世界での応用

航空機の飛行制御:ゲインスケジューリングの最も古典的かつ代表的な用途です。航空機の空力特性は対気速度・動圧・高度・機体重量で大きく変わるため、飛行制御則のゲインはこれらを引数にしたテーブルで管理されます。低速・高高度では舵の効きが弱く、高速・低高度では効きすぎて振動しやすい。スケジューリングにより、離陸から巡航、着陸までの全飛行包絡線で一貫した操縦感覚と安定余裕を確保します。予測可能で認証しやすいことから、民間機・軍用機を問わず標準的に採用されています。

プロセス制御(タンク液位・流量):液位制御では、タンク断面が一定でなかったり、出口バルブの特性が非線形だったりするため、液位そのものをスケジューリング変数としてPIDゲインを切り替えます。化学反応器の温度制御でも、反応速度が温度に対して指数関数的に変わるため、温度域ごとに調整したゲインへ切り替えるのが定石です。pH制御のように非線形性が極端な系では、ゲインスケジューリングがほぼ必須になります。

エンジン・パワートレイン制御:自動車エンジンやガスタービンは、回転数・負荷・吸気量によって応答特性が大きく変わります。アイドルから高回転まで一貫した制御を行うため、回転数や負荷をスケジューリング変数にしてアクチュエータ制御ゲインを切り替えます。電気自動車のモータ制御でも、回転数域でトルク応答が変わるため、同様のスケジューリングが使われます。

風力タービン・ロボティクス:風力タービンは風速によってブレードの空力特性が変わるため、ピッチ制御ゲインを風速でスケジューリングします。ロボットアームでは、姿勢によって慣性モーメントや重力負荷が変わるため、関節角度をスケジューリング変数にして各関節のゲインを調整します。可動範囲が広く非線形性が強いシステムほど、ゲインスケジューリングの価値が高まります。

よくある誤解と注意点

まず多い誤解が、「各運転点で安定なら、全体としても安定」という思い込みです。ゲインスケジューリングは、固定した各運転点で線形設計を行い、それを補間する手法です。しかし運転点が移動している最中の系は、もはや凍結した線形系ではありません。スケジューリング変数がゆっくり動く(「ゆっくり変化」の前提が成り立つ)限り各点の設計は有効ですが、変数が速く動くと、各点では安定でも全体としては不安定になり得ます。実務ではスケジューリング変数の変化速度に上限を設け、必ず全包絡線で時間応答シミュレーションを行って検証します。

次に、「運転点は数点あれば十分」という油断です。本ツールはプラントゲインが線形に変化する単純なモデルですが、実際の非線形プラントのゲインは運転点に対して大きく湾曲します。運転点を粗く取ると、調整した点と点の間でループゲインが設計値からずれ、その区間で応答が劣化します。非線形性が強いほど運転点を密に取る必要があります。逆に、補間方式(線形補間か区分定数か)の選択もループゲインの滑らかさに影響するため、設計時に意識すべき点です。

最後に、「ゲインスケジューリングと適応制御は同じ」という混同です。適応制御は運転中にプラントを観測してパラメータを推定・更新しますが、ゲインスケジューリングは運転前に全ての設計を終え、運転中はスケジューリング変数でゲインを引くだけです。観測に基づかないため、未知の特性変化(経年劣化や故障)には自動では対応できません。その代わり動作が完全に予測可能で、検証・認証がしやすい。航空宇宙のように安全性の保証が最優先される分野でゲインスケジューリングが選ばれるのは、まさにこの予測可能性のためです。両者は競合ではなく、要求に応じて使い分けるべき手法です。

使い方ガイド

  1. 運転点数(opNum)を1~10の範囲で設定し、比例ゲイン範囲(opRange)で操作点の変動幅を指定する
  2. 低ゲイン限界(glNum)と高ゲイン限界(ghNum)を入力し、プラントゲイン変動域を定義してからglRange/ghRangeで許容偏差を設定
  3. 初期比例ゲイン(kpNum)を設定後、kpRangeで固定ゲイン制御時の許容範囲を決めて、シミュレーション実行ボタンで現運転点のプラントゲイン・コントローラゲインKc・実ループゲイン・設計値からのゲイン偏差・推定オーバーシュートを計算する

具体的な計算例

油圧サーボシステムで操作点がP=50bar~200barで変動する場合、プラントゲインが0.8~1.5rad/(s・V)で変化する。運転点10点、glNum=0.8、ghNum=1.5、opRange=±75bar、kpNum=2.5[V/rad]で設定すると、P=125barの中間運転点では実ループゲイン=1.875rad/s、設計値からのゲイン偏差が±18%、推定オーバーシュート12.3%となる。一方、固定ゲイン制御(kpRange±0.3)では最悪運転点でゲイン偏差が+35%に達し、オーバーシュート24%になるのに対し、ゲインスケジューリング制御では全運転域で偏差を±8%以内に抑制できる。

実務での注意点

  1. 航空機フラッター制御など高速応答システムでは、運転点の急激な変化(opRange>100%)に対応するため、ゲインスケジュール更新レート≧20Hzを確保してから実装する
  2. プラントゲイン計測が非線形の場合(glNum≠1.0時)、多点キャリブレーション実施後にglRangeの計測不確かさ±3%以上を余裕として組み込む
  3. オーバーシュート推定値が20%を超える場合、kpNum値を段階的に低減(0.2V/rad単位)して再計算し、制御則の安定余裕を検証する
  4. 性能一貫性指標が75%未満の場合、運転域を複数の小領域に分割して個別にゲインマップ作成し直すことを推奨する