PIDコントローラーシミュレーター 戻る
解析ツール

PIDコントローラーシミュレーター — ステップ応答チューニング

要点(クイックアンサー)
PID 制御の操作量は u(t) = Kp·[ e(t) + (1/Ti)·∫e dt + Td·de/dt ]。P で応答を速く、I で定常偏差を除去、D で振動を抑制。Ziegler–Nichols 法で初期ゲインを設定できます。

Kp・積分時間Ti・微分時間Tdをスライダーで操作し、閉ループステップ応答をリアルタイム表示。オーバーシュート・整定時間・IAEを即時計算して最適PIDゲインを直感的に学ぼう。

PIDゲイン
比例ゲイン Kp
積分時間 Ti (s)
s
大きいほどI項が弱い(100=ほぼP制御)
微分時間 Td (s)
s
目標値 SP
シミュレーション時間 (s)
s
プリセット
パフォーマンス指標
閉ループ・ライブ制御(PVがSPを追従)
0.70
目標値 SP
0.000
現在値 PV
0.700
偏差 e
0.00
制御出力 u
0.0%
オーバーシュート
立上り時間
整定時間
0.700
定常偏差
0.000
Ki=Kp/Ti
0.00
Kd=Kp·Td
PV(液位) SP(目標) e(偏差) u(流入=制御出力)
比例ゲイン Kp1.50
積分時間 Ti (s)8.0
微分時間 Td (s)0.00
目標液位 SP0.70
プロセス時定数 τ (s)5.0
Kp/Ki/Kdを変えると閉ループ応答が「鈍い→俊敏→振動→不安定」と目に見えて変化します。1次遅れプラントではP制御のみで定常偏差=1/(1+Kp·K)が残り、I項を加えると偏差→0になります。
計算結果
立上り時間 tr (s)
整定時間 ts (s)
オーバー シュート %
定常偏差 %
IAE
ITAE
プロセス変数 y(t) とセットポイント
コントローラー出力 u(t)
PID 制御入力 u(t)
プロセス変数 y(t) 目標値 SP 制御出力 u(t)
理論・主要公式
$$u(t)=K_p\!\left[e(t)+\frac{1}{T_i}\!\int_0^t\!e\,d\tau+T_d\frac{de}{dt}\right]$$
ZN整定式(ステップ応答法):
$K_p=1.2\,\tau/(K\cdot L),\quad T_i=2L,\quad T_d=0.5L$

PID制御とは

🙋
PID制御って何ですか?P、I、Dってそれぞれ何をしているんですか?
🎓
大まかに言うと、目標値と現在値の「偏差」を元に、最適な制御力を計算する方法だよ。Pは今の偏差に比例して動く基本の力。Iは過去の偏差の蓄積を解消して、定常状態でのズレをゼロにする。Dは偏差の変化率を見て「このまま行き過ぎそうだ」と先読みしてブレーキをかける役割だ。このシミュレーターで上のKp, Ti, Tdのスライダーを動かすと、それぞれの効果が一目でわかるよ。
🙋
え、そうなんですか!じゃあ、Kpを大きくしすぎるとダメなんですか?
🎓
その通り!実務でよくある失敗だね。Kp(比例ゲイン)を大きくしすぎると、応答は速くなるけど、目標値を大きく超える「オーバーシュート」が発生して振動が収まらなくなる。例えば、オーブンの温度制御でこれが起きると、設定温度を大幅に超えて焦がしてしまう。シミュレーターでKpを最大まで上げてみると、グラフが激しく振動するのが確認できるはずだ。
🙋
最適なパラメータの決め方が難しそう…。自動で決めてくれる方法はあるんですか?
🎓
あるよ!このツールに実装されている「Ziegler-Nichols整定法」が代表的だ。プロセスのステップ応答から時定数や無駄時間を読み取って、経験則でKp, Ti, Tdを計算する方法さ。シミュレーターの「ZN整定」ボタンを押すと、自動で一組のパラメータが設定されるから確認してみて。現場ではこれをもとに微調整することが多いね。

PID制御の式と各項の役割

PID制御は、目標値と現在値の差(偏差 $e$)に対し、比例(P)・積分(I)・微分(D)の3つの操作を組み合わせて操作量 $u$ を決めます。

$u(t) = K_p\,e(t) + K_i\!\int_0^t\! e\,d\tau + K_d\,\dfrac{de}{dt}$

作用効果と副作用
比例 P ($K_p$)偏差に比例応答を速くするが定常偏差が残り、大きすぎると振動
積分 I ($K_i$)偏差の累積定常偏差を除去するが、行き過ぎ(オーバーシュート)を招く
微分 D ($K_d$)偏差の変化率応答を安定化・先読みするが、ノイズに敏感

PIDチューニング

各ゲインの調整(チューニング)が制御性能を左右します。代表的なジーグラ・ニコルス法では、I・Dを切り、$K_p$ を上げて系が持続振動する限界ゲイン $K_u$ と振動周期 $T_u$ を求め、そこから経験式で $K_p, K_i, K_d$ を設定します。

一般に、立ち上がりを速く=$K_p$↑、定常偏差を消す=$K_i$↑、オーバーシュート/振動を抑える=$K_d$↑ が基本方針です。ただし過大なゲインは不安定化を招くため、応答(立ち上がり時間・行き過ぎ量・整定時間)を見ながら調整します。本シミュレーターで各ゲインを変え、ステップ応答の変化を確認できます。

よくある質問

このツールはスライダーや入力欄を操作するたびに自動で再計算されます。グラフが変わらないように見える場合は、変更量が小さく応答差が見えにくい可能性があります。また、ブラウザのタブがバックグラウンドにあると描画の更新が遅れる場合があります。
まず比例ゲインKpを小さくして応答を緩やかにし、次に微分時間Tdを徐々に大きくして先読み効果を強めるとオーバーシュートが抑制されます。積分時間Tiは大きめに設定し、積分効果を弱めておくと安定しやすいです。
はい、IAEは偏差の累積を表すため、小さいほど目標値への追従性が高いと言えます。ただし、IAEだけを最小化すると過度な操作量変動や発振を招くことがあるため、オーバーシュートや整定時間も合わせて確認しながら調整することを推奨します。
はい、試せます。まずKpを小さく、TiとTdを最大にしてシミュレーションを実行し、ステップ応答の傾きと無駄時間を読み取ります。その値からZiegler-Nicholsの公式で初期ゲインを計算し、スライダーに入力して微調整してください。

実世界での応用

化学・プラントプロセス制御:反応器の温度、蒸留塔の圧力、タンクの液面レベルなど、安定性が求められる連続プロセスで広く使用されます。PIDパラメータのチューニング不良は、製品品質のばらつきやエネルギー損失に直結します。

モーションコントロール:CNC工作機械や産業用ロボットの位置・速度制御に用いられます。ここでは微分動作(D)が重要で、位置決めのオーバーシュートを抑えつつ、高速で正確に目標位置に到達させるために調整されます。

自動車制御:クルーズコントロール(定速走行装置)は代表例です。設定速度と現在速度の偏差をPID制御で計算し、スロットル開度を調整します。坂道でも速度を一定に保つためには積分動作(I)が不可欠です。

家電・ビル設備:エアコンの室温制御、給湯器の湯温制御、ビルの空調システムなど身近なところにも応用されています。省エネと快適性の両立のために、外気温変化に対する応答性がチューニングのポイントになります。

よくある誤解と注意点

まず、「積分時間(Ti)は短いほど良い」という誤解があります。確かにTiを短く(積分ゲインを強く)すると定常偏差は速く解消されますが、過度に短くするとシステムが不安定になり、持続的な振動(積分ワインドアップのリスクも含む)を引き起こします。例えば、Tiを0.1秒など極端に小さく設定すると、グラフは目標値を行ったり来たりして落ち着かなくなるはずです。実務では、まず比例ゲイン(Kp)で基本的な応答を整え、その後、振動を起こさない範囲でTiを調整するのがコツです。

次に、微分動作(D)は「万能の先読み機能」ではないという点。微分は確かに変化率を予測しますが、ノイズに対して極めて敏感です。実際のセンサ信号には必ずノイズが含まれており、これを微分するとノイズが巨大な制御信号に増幅されてしまいます。そのため、実機では微分ゲインを控えめに設定したり、微分動作にローパスフィルタを併用することがほとんどです。シミュレーターでは理想的な信号を使っているので、この危険性を実感しにくい点に注意が必要です。

最後に、Ziegler-Nichols法は「最適解」ではなく「出発点」です。この方法で得られたパラメータは、やや攻撃的(オーバーシュートが大きめ)で、ロバスト性(外乱への強さ)が必ずしも高くありません。例えば、ZN法で設定したパラメータでシミュレーションを実行し、その後、オーバーシュートを抑えたい場合はKpを少し下げ、Tiを少し上げるといった微調整が不可欠です。「一度設定したら終わり」ではなく、実際の応答を見ながら、トレードオフ(応答速度 vs 安定性)を考慮して手を加えるのが実践の現場です。

使い方ガイド

  1. 目標値(SP)はデフォルト1.0(範囲0.5~2.0)です。必要に応じてスライダーまたは入力欄で変更します
  2. Kp(比例ゲイン)をスライダーまたは入力欄で0.01~20の範囲で調整し、応答速度を制御します
  3. Ti(積分時間)を0.1~100秒の範囲で設定して定常偏差を除去し、Td(微分時間)を0~10秒の範囲で調整してオーバーシュートを抑制します
  4. パラメータを変更すると自動で再計算され、ステップ応答波形と立上り時間tr、整定時間ts、オーバーシュート%、IAE(積分絶対誤差)が即座に更新されます
  5. 「ZN自動整定」ボタンを押すと、プラントのゲインK・時定数τ・むだ時間Lから、Ziegler-Nicholsステップ応答法によりKp=1.2τ/(K·L)、Ti=2L、Td=0.5Lを自動算出します

具体的な計算例

1次遅れ系プロセス(時定数τ=2秒、ゲイン=1)を想定します。目標値SP=1.0、Kp=2.0、Ti=3.0秒、Td=0.5秒を設定した場合、立上り時間tr≈4.1秒、整定時間ts≈8.2秒、オーバーシュート0%、IAE≈1.5となります。Kpを4.0に増加させると立上り時間がtr≈2.1秒、整定時間がts≈3.7秒に短縮され、IAEも約0.75まで低下します。むだ時間のない1次遅れ系では、Kpを上げるほど応答が速くなることが確認できます。

実務での注意点

  1. モーター制御(応答帯域数十Hz)ではTi=0.1~0.5秒、プロセス温度制御(応答帯域0.1Hz以下)ではTi=5~20秒と、制御対象の時定数に応じてTiを大幅に変更する必要があります
  2. IAEが小さいほど総合的に良好な応答ですが、ITAEはより後期の誤差を重視するため、製造工程の安定性が重要な場合はITAEも確認してください
  3. 実装時にはKpの符号とプロセス極性(逆作用/正作用)の一致を確認し、Tdが大きすぎるとノイズ増幅により不安定化するため、Td≦0.2×Tiの目安を遵守します
  4. 油圧シリンダ制御など不可逆なアクチュエータではオーバーシュート%を5%以下に抑制し、エンコーダサンプリング周期(例:10ms)の10倍以上をTdの下限値として設定してください

準拠規格・前提条件

準拠/参考: 標準形(非干渉形)PID:u(t) = Kp[e + (1/Ti)∫e dτ + Td·de/dt](ISA / 制御工学の標準形)。Ziegler–Nichols ステップ応答法(FOPDT プラント K·e^(−Ls)/(τs+1)):Kp = 1.2τ/(K·L)、Ti = 2L、Td = 0.5L。

モデルの前提: 単一ループ SISO。プラントは一次遅れ+むだ時間/二次系/積分系を前進オイラー法で数値積分。微分項はノイズ抑制のためフィルタ付き(τ_f = Td/8)、積分項はアンチワインドアップでクランプ。検証では PI 制御で定常偏差ゼロ(目標 1.0 に対し 0.9999)を確認。

適用範囲・限界: 教育用の連続時間近似で、刻み dt=0.02 s 固定。アクチュエータ飽和は ±10 に固定し、計測ノイズ・量子化・離散化整定(Tustin 等)は扱わない。ZN 整定は出発点であり、実機では追い込みが前提。