カスケード制御シミュレーター 戻る
制御工学

カスケード制御シミュレーター

内側ループ $G_i(s) = \frac{K_i}{\tau_i s+1}$ と外側ループを組み合わせた2重PID制御のステップ応答を可視化。単ループとの差を体感しよう。

内側ループ(Inner Loop)
Kp(内)2.0
Ki(内)1.0
Kd(内)0.1
時定数 τᵢ (s)0.5
外側ループ(Outer Loop)
Kp(外)1.0
Ki(外)0.5
Kd(外)0.2
時定数 τ₀ (s)2.0
ステップ目標値1.0
立上り時間
カスケード(s)
オーバー
シュート%
整定時間
カスケード(s)
立上り時間
単ループ(s)
オーバー
シュート%
整定時間
単ループ(s)
$$G_i(s) = \frac{K_i}{\tau_i s + 1}$$ $$G_o(s) = \frac{K_o}{\tau_o s + 1}$$ $$C(s) = K_p + \frac{K_i}{s} + K_d s$$
「シミュレーション実行」ボタンを押すとカスケード制御(実線)と単ループ制御(破線)のステップ応答を比較表示します。

カスケード制御とは

🧑‍🎓
カスケード制御って何ですか?普通のPID制御と何が違うんですか?
🎓
ざっくり言うと、制御ループを2重にしたものだよ。内側ループ(内ループ)と外側ループ(外ループ)があって、それぞれ別のPIDコントローラが働いている。例えば、部屋の温度を制御する時に、外ループが「室温」を目標に設定し、内ループはその指令を受けて「ヒーターの熱量」を素早く調整するイメージだね。このシミュレーターでは、上の「内ループゲイン」スライダーを動かすと、内側の応答の速さがどう変わるかすぐに確認できるよ。
🧑‍🎓
え、ループが2つもあると複雑じゃないですか?何かメリットがあるんですか?
🎓
確かに複雑だけど、大きなメリットがあるんだ。内ループが外乱を素早く打ち消してくれるから、外ループの制御がすごく安定するんだよ。例えば、ポンプの流量が急に変動しても、内ループがすぐに検知して補正するから、最終的に制御したい温度や圧力にはほとんど影響が出ない。シミュレーターで「外乱の大きさ」を増やして、単一ループとカスケード制御の応答を比べてみて。カスケードの方がオーバーシュートが小さく、早く落ち着くのがわかるはずだよ。
🧑‍🎓
なるほど!でも、内ループと外ループのチューニング、どうやるんですか?難しそう…。
🎓
実務では「内側から外側へ」が鉄則だね。まずは「内ループゲイン」を上げて、内側のプロセスを単体でできるだけ速く安定させる。その状態で初めて「外ループゲイン」を調整するんだ。シミュレーターで試すとよくわかるけど、内ループがガタガタな状態で外ループのPゲインを上げると、全体が発振してしまう。逆に、内ループをしっかり固めておけば、外ループの調整はかなり楽になるんだ。

物理モデルと主要な数式

このシミュレーターでは、内側と外側のプロセスをそれぞれ一次遅れ系でモデル化しています。一次遅れ系は、多くの工業プロセス(温度、レベル、流量など)の動特性をシンプルに表現する基本的なモデルです。

$$G_i(s) = \frac{K_i}{\tau_i s + 1}$$

$G_i(s)$: 内側プロセスの伝達関数、$K_i$: 内側プロセスのゲイン(定常ゲイン)、$\tau_i$: 内側プロセスの時定数(応答の速さを決める)

外側プロセスも同様に一次遅れ系で、通常は内側プロセスよりも応答が遅い(時定数$\tau_o$が大きい)設定になります。

$$G_o(s) = \frac{K_o}{\tau_o s + 1}$$

$G_o(s)$: 外側プロセスの伝達関数、$K_o$: 外側プロセスのゲイン、$\tau_o$: 外側プロセスの時定数。カスケード制御が有効なのは、$\tau_i$が$\tau_o$に比べて十分に小さい(例えば1/3〜1/5以下)場合です。

実世界での応用

化学プラントの反応器温度制御:外ループが反応器全体の温度を目標値に保ち、内ループがその指令に基づいてジャケットを流れる冷却水の流量を高速で制御します。反応熱の急激な変動といった内乱を、冷却水流で素早く打ち消すことができます。

ボイラーの蒸気圧力制御:外ループがボイラー出口の蒸気圧力を管理し、内ループが燃料(重油やガス)の供給量を微調整します。燃料側の圧力変動などの外乱を内ループが即座に吸収し、蒸気圧力を安定させます。

紙の厚み(ベーシックウェイト)制御:外ループが最終製品の紙の厚みを計測・制御し、内ループが紙パルプの供給流量を制御します。パルプ濃度のむらなどのプロセス外乱を、厚みに影響が出る前に内ループで抑制します。

航空機のオートパイロット(姿勢制御):外ループが機体の目標姿勢(ピッチ角)を設定し、内ループがエレベータなどの操縦翼面を素早く動かして姿勢を実現します。気流の乱れなどの外乱を、機体の挙動に大きな影響を与える前に内ループで補正します。

よくある誤解と注意点

カスケード制御を始めて触るとき、いくつかハマりやすい落とし穴があるんだ。まず大きな誤解が「外ループさえしっかりチューニングすれば内ループは適当でいい」という考え。これは絶対にダメ。内ループが鈍いと、外ループから見れば「指令を出してもなかなか応答しない、挙動が予測できない部下」を抱えているようなもの。例えば、内ループの時定数 $\tau_i$ が1秒、外ループの時定数 $\tau_o$ が10秒の理想的な組み合わせならうまくいく。でも、もし内ループの応答が遅くて $\tau_i$ が5秒もあれば、外ループ(10秒)との差が小さすぎて、カスケード制御のメリットがほとんど消えてしまう。シミュレーターで内ループゲインを極端に下げて、外ループゲインを上げてみると、すぐに発振するのが確認できるはずだよ。

次に、外乱の注入ポイントを見誤ること。カスケード制御が威力を発揮するのは、外乱が内ループで検知・補正できるポイントに入る時だ。逆に、外乱が外ループのプロセスに直接入ってくる場合は、単一ループと大差ない結果になることもある。実務では、どの経路からどんな外乱が入るのか、プロセスフローをよく見極めることが超重要。

最後に、内ループと外ループのサンプリング周期を同じに設定してしまうという実装上のミス。内ループは速い応答が求められるので、制御周期は短く(例えば100ms)、外ループは遅いプロセスを制御するので、もう少し長い周期(例えば1秒)で十分なことが多い。両方を同じ速い周期で動かすと、無駄な計算負荷がかかるだけだし、場合によっては外ループの制御が不安定になる原因にもなるから注意してね。

関連する工学分野

このシミュレーターで扱っているカスケード制御の考え方は、実は制御工学の枠を超えて、いろんな工学分野に応用されているんだ。まず挙げるのはロボット工学。マニピュレータの関節制御では、外ループが「位置」を制御し、内ループが「トルク」や「電流」を高速に制御するカスケード構造が一般的。これにより、負荷変動があっても正確な位置決めが実現できる。

もう一つは電力システムの制御だ。例えば、電力系統の周波数安定化制御では、外側のループで広域の周波数偏差を検出し、内側のループで個々の発電機の出力を素早く調整する。これも立派なカスケード制御の応用例と言える。

さらに自動車の運動制御も深く関わっている。車両の横滑り防止制御(ESC)では、外ループが「目標ヨーレート」を計算し、内ループが各車輪のブレーキ油圧を個別に、ミリ秒単位で制御する。内ループの高速な応答がなければ、外ループで計算した理想的な車両挙動を実現することはできない。このように、階層化された制御構造は、複雑で高速応答が要求される現代のシステム工学の基本形になっているんだ。

発展的な学習のために

このシミュレーターでカスケード制御の「感覚」をつかんだら、次は理論的なバックボーンを固めるのがおすすめだ。まずステップとして、「ブロック線図の等価変換」をマスターしよう。カスケード制御系の全体伝達関数を、内ループをまとめる形で導出できるようになると、なぜ内ループが外乱を抑制できるのかが数式的にもはっきり理解できる。具体的には、内ループ(PI制御器 $C_i(s)$ とプロセス $G_i(s)$)を一つのブロック $G_{eq}(s)$ にまとめるんだ。

次に挑戦したいのは、モデルベース制御への拡張。このシミュレーターではPIDを使っているけど、内ループのプロセスモデル $G_i(s)$ が正確にわかっているなら、より積極的な制御が可能になる。例えば、フィードフォワード制御を内ループに組み込めば、予測できる外乱に対してはほぼ完全に打ち消すことも理論上可能だ。

数学的には、「特異摂動法」という考え方が深く関連している。時定数が大きく異なる2つの動的システムが結合している時、速い系(内ループ)の応答を瞬時に終わったものとみなして、遅い系(外ループ)の動きを解析する手法だ。カスケード制御が成立する条件「$\tau_i \ll \tau_o$」は、まさにこの特異摂動法が適用できる条件そのものなんだ。この先は、状態空間表現や多変数制御へ進むと、現代の制御理論の広大な世界が見えてくるよ。