H∞制御シミュレーター 戻る
制御工学シミュレーター

H∞制御シミュレーター — 混合感度設計とH∞ノルム

プロセス G_p=1/(T_p s+1) に対するPI制御で、感度関数Sと相補感度T、重みW_S・W_Tの混合感度ピーク(H∞ノルム)を可視化。外乱抑圧とノイズ抑圧の設計トレードオフを学べます。

パラメータ設定
PI 比例ゲイン K_c
感度ピーク制約 M_s
ロールオフ周波数 ω_BW
rad/s
相補感度ロールオフ ω_BT
rad/s

プロセスは T_p=2s の一次遅れ、コントローラは PI(積分時間 T_i=2s)。重みは A_s=0.01、A_t=0.01、M_t=2.0 を仮定しています。

計算結果
|S|max(Msピーク)
|T|max(Mtピーク)
||W_S·S||_∞
閉ループ帯域 ω_c
Bode 線図:|S|, |T|, |W_S|, |W_T|

赤=|S|, 青=|T|, 緑破線=|W_S|, 紫破線=|W_T|, グレー破線=M_s 上限

理論・主要公式

プロセス $G_p(s)=\dfrac{1}{T_p s+1}$ と PI コントローラ $C(s)=K_c\left(1+\dfrac{1}{T_i s}\right)$ から開ループ $L=CG_p$ を構成します。

感度関数 $S$ と相補感度 $T$(代数的拘束 $S+T=1$):

$$S(s)=\frac{1}{1+L(s)},\qquad T(s)=\frac{L(s)}{1+L(s)}$$

感度重み $W_S$(低周波で大)と相補感度重み $W_T$(高周波で大):

$$W_S(s)=\frac{s/M_s+\omega_{BW}}{s+\omega_{BW} A_s},\qquad W_T(s)=\frac{s+\omega_{BT}/M_t}{A_t\,s+\omega_{BT}}$$

混合感度のH∞ノルム(設計の評価指標):

$$\|T_{zw}\|_\infty=\sup_{\omega}\sqrt{|W_S(j\omega)S(j\omega)|^2+|W_T(j\omega)T(j\omega)|^2}$$

設計条件は $\|W_S S\|_\infty<1$ かつ $\|W_T T\|_\infty<1$。両者を同時に満たせば、外乱抑圧とノイズ抑圧・モデル誤差耐性が保証されます。

H∞制御シミュレーターとは

🙋
「H∞制御」って名前は聞くんですけど、何が嬉しい設計手法なんですか?普通の PID と何が違うんでしょう。
🎓
ざっくり言うと、H∞制御は「閉ループ系の周波数ゲインの最大値」を直接小さくする設計だ。PID は時間領域の応答(オーバーシュート、整定時間)を見るけど、H∞は周波数領域で「悪い周波数でゲインが暴れないこと」を保証する。上のシミュレーターで K_c を上げてみて。赤の |S| カーブのピーク(Ms)が変化する。これがロバストネスの直接の指標なんだ。
🙋
|S| と |T| が低周波と高周波で入れ替わるように動きますね。これって何を表しているんですか?
🎓
そこが H∞ 設計の核心だよ。S は「外乱がどれだけ出力に残るか」、T は「目標値がどれだけ出力に伝わるか・センサノイズがどれだけ通るか」を表す。S+T=1 という数学的拘束があるから、両方を同時にゼロにはできない。低周波は S を小さくして外乱を消し、高周波は T を小さくしてノイズを切る——その境目を ω_BW、ω_BT で決めるのが重み設計だ。
🙋
緑と紫の破線が「重み」ですよね。これより上に S や T が出ちゃダメってこと?
🎓
正確には、|W_S·S| と |W_T·T| が 1 未満になるように設計する。これを「混合感度問題」と呼ぶ。グラフで言うと、赤の |S| が緑の |W_S|^(-1) を上回らない、青の |T| が紫の |W_T|^(-1) を上回らないこと。シミュレーターの「||W_S·S||_∞」カードが 1 未満なら、外乱抑圧の要求は満たしている。1 を超えると要求未達だよ。
🙋
M_s を 1.4 から 5 まで動かすと、グラフが大きく変わりますね。実機では M_s をどう決めるんですか?
🎓
実務では 1.4〜2.0 が標準的な範囲だ。1.4 だと保守的でロバスト性は高いけど追従性能が出にくい。2.0 を超えるとモデル誤差に対する余裕(ゲイン余裕・位相余裕)が小さくなって、現場でモータの摩擦が変わった、配管の長さがちょっと違った、というだけで発振しやすくなる。シミュレーターで M_s=2.0 を基準に、K_c をいじって |S| のピークがちょうど M_s 線に触れるくらいを目安にしてみるといい。

よくある質問

H∞制御は不確かさを最大特異値ノルムで一括評価するため、ブロック対角構造を持つ構造化不確かさには保守的になります。μ-シンセシス(構造化特異値設計)はブロック構造を利用してより正確なロバスト性能を得ますが、D-Kイテレーションを必要とし計算コストが高く、グローバル最適性も保証されません。実務ではまずH∞で出発し、保守性が問題になったらμに進むのが定石です。
ロバスト制御は「モデル不確かさに対して安定性・性能を保証する制御」という概念全体を指す広い用語です。H∞制御はその代表的な設計手法のひとつで、不確かさを伝達関数のH∞ノルムで定量化して扱います。他のロバスト手法には、LQG/LTR、QFT、スライディングモード制御、μ-シンセシスなどがあり、H∞は周波数領域での厳密な保証が得意な選択肢です。
線形時不変な安定系では、log|S(jω)| を全周波数で積分すると非負の固定値(不安定極の和)になります。つまり、ある周波数帯域で S を 1 未満(外乱抑圧)にしたら、別の帯域で S が 1 を超え(外乱増幅)るしかありません。これが「waterbed効果」で、水面(S=1)を一方で押し下げると他方で必ず盛り上がる比喩です。H∞設計はこの拘束の下で、どの周波数で水面を下げるかを最適化する作業と言えます。
W_S は低周波で高ゲイン(外乱抑圧)、ロールオフ周波数 ω_BW で 0 dB を通り、高周波で 1/M_s(許容ピーク)の水平漸近線に近づく形が標準です。W_T は逆に高周波で高ゲイン(ノイズ抑圧)にし、ω_BT で 0 dB を切ります。ω_BW と ω_BT の間に「設計の余裕」を持たせると数値解が見つかりやすくなります。両方を同じ周波数で押し下げようとすると S+T=1 拘束に矛盾し、解なしになります。

実世界での応用

航空機・ロケットの飛行制御:機体パラメータが速度・高度・搭載量で大きく変化するため、ロバスト性が必須です。H∞制御は飛行包絡線全体で安定性余裕を保証する設計に使われ、F-16のCAS、各種無人機の姿勢制御、ロケットの推力ベクトル制御などで採用されています。

HDDのヘッド位置決め・半導体露光装置:外乱(振動・衝撃)抑圧と高速追従の両立が要求されるメカトロニクス系で標準的に使われます。共振モードを持つ柔軟構造をロバストに制御するため、H∞は ノッチフィルタを自動的に重み内に取り込めるのが強みです。

プロセス制御(化学プラント・電力系統):多変数連成・むだ時間・モデル不確かさが大きいプロセスで、H∞や混合感度設計が活躍します。蒸留塔の組成制御、火力発電所のボイラ・タービン制御、電力系統の安定化装置(PSS)などで実装例があります。

自動車のシャシ制御:アクティブサスペンション、電動パワーステアリング、ESCなど、路面状態や乗員数で特性が変わるシステムに適用されます。乗り心地と路面追従というトレードオフを周波数別に重み付けして設計する手法は、まさにH∞混合感度の典型です。

よくある誤解と注意点

最も多い誤解は、「H∞ノルムが小さければ実機性能も自動的に良くなる」と考えてしまうことです。H∞は周波数領域のピークゲインを下げる設計であり、時間応答の整定時間やオーバーシュートを直接最小化するわけではありません。シミュレーターで K_c を大きくして ||W_S·S||_∞ を下げても、過渡応答が振動的になることがあります。H∞設計は「ロバスト性能保証」が目的であり、時間応答品質は別途確認・調整が必要です。

次に多いのが、重み関数を「とりあえず厳しくすれば良い設計が得られる」と思い込むことです。W_S を低周波で過剰に大きくしたり、W_T を高周波で過剰に大きくしたりすると、解が存在しない(infeasible)または極端に高次のコントローラが出力されます。シミュレーターで ω_BW を ω_BT に近づけてみてください。重みのカーブが重なり、Ms ピークが急に大きくなります。これは設計要求が物理的限界に近づいたサインです。実務では Bode 感度積分(waterbed効果)の制約を意識し、要求のメリハリを付けることが重要です。

最後に、このシミュレーターは固定 PI 構造での評価ツールである点に注意してください。真のH∞設計では Riccati 方程式や LMI を解いて最適コントローラ K(s) を構成します。ここで示しているのは「PI ゲイン K_c を変えたとき、混合感度の指標がどう変化するか」というプロセスエンジニア向けの直感的可視化です。本格的な H∞ コントローラ合成には MATLAB Robust Control Toolbox の hinfsyn、Python の python-control、あるいは SLICOT ライブラリを使うのが標準で、得られるコントローラは通常 PI より高次(プラント次数+重み次数)になります。