比例
現在の偏差に比例して操作量を増減します。大きくすると応答は速くなりますが、大きすぎると振動やオーバーシュートが増えます。
PID定数を動かし、外乱・ノイズ・A/B比較・カスケード制御を含む応答をグラフで確かめられます。
標準形:スライダーは Ti 0〜50秒、Td 0〜10秒です。数値欄では200秒、100秒まで入力できます。Ti=0は積分動作OFFとして扱います。
制御対象G(s) = K / (T s + 1)
制御対象へ入る直前に、ステップ状の負荷外乱 \(d(t)\) を加えます。負の値では制御量が一時的に低下し、PIDが元の目標値へ戻そうとします。
制限前の要求操作量と、上下限で制限された実操作量を比較します。アンチワインドアップは、飽和をさらに強める方向への積分だけを停止します。
ノイズはセンサー測定値へ加わります。微分フィルタの時定数を大きくすると操作量は滑らかになりますが、D動作の反応は遅くなります。
現在のPIDを外側ループとして使い、その出力を内側PIDループの目標値にします。Td₂=0ではPIとして動作します。内側ループは外側ループより速く調整するのが基本です。
設定Aはまだ保存されていません。
値を変更すると、その場で再シミュレーションします。極端な組み合わせで計算が不安定になる場合は、安全のため結果の更新を停止します。
PIDが要求する操作量を \(u_c(t)\)、実際に制御対象へ送る操作量を \(u_a(t)\) とします。測定ノイズを有効にすると、真の制御量 \(y(t)\) に \(n(t)\) を加えた測定値 \(y_m(t)\) が負帰還されます。
外側PIDは内側目標値 \(SP_2\) を作り、内側PIDは内側制御量 \(PV_2\) を素早く追従させます。外側対象を通った最終制御量 \(y(t)\) が外側PIDへ負帰還されます。
| 評価項目 | 設定A | 設定B |
|---|---|---|
| 立ち上がり時間 | ||
| オーバーシュート | ||
| 整定時間 | ||
| 定常偏差 | ||
| 終盤の操作量振れ幅 | ||
| 飽和時間 |
現在の偏差に比例して操作量を増減します。大きくすると応答は速くなりますが、大きすぎると振動やオーバーシュートが増えます。
偏差を時間とともに積み重ねて補正します。定常偏差をなくす効果がありますが、強すぎるとオーバーシュートや振動が増えます。
偏差の変化速度を見て急激な変化を抑えます。オーバーシュートを抑えやすい一方、実機ではノイズの影響に注意が必要です。
PID制御では、目標値とセンサー測定値の差を「偏差」として扱います。
\(K_p\) がP・I・D全体に掛かります。\(T_i\) と \(T_d\) は時間の単位で設定します。このツールでは \(T_i=0\) を積分動作OFFとして扱います。
\(K_p\)、\(K_i\)、\(K_d\) を独立した係数として設定します。標準形とは \(K_i=K_p/T_i\)、\(K_d=K_pT_d\) の関係にあります。
上下限を適用した実操作量 \(u_a(t)\) と入力外乱 \(d(t)\) の和を制御対象へ入力し、制御量 \(y(t)\) の時間変化を計算します。
操作量制限を有効にすると、PIDの要求操作量 \(u_c(t)\) を上下限内に収めた \(u_a(t)\) を制御対象へ送ります。
アンチワインドアップONでは、操作量をさらに飽和させる方向の積分だけを停止します。偏差が飽和から戻す方向になれば積分を再開します。
微分項は測定値の高周波変動を強く拾います。このツールでは、フィルタON時に \(D_f\) を微分項へ使います。\(T_f\) を大きくするとノイズを抑えやすくなりますが、急な変化への反応も遅くなります。
外側PIDの出力を内側ループの目標値 \(SP_2\) とし、\(e_2=SP_2-PV_2\) を内側PIDで補正します。内側D項は \(PV_2\) の変化に掛け、変化する \(SP_2\) による微分キックを避けています。\(T_{d2}=0\) では内側はPIとして動作します。
| 記号 | 意味 | 単位・次元 |
|---|---|---|
| \(r(t)\) | 目標値(SP) | \([\mathrm{Q}]\) |
| \(y(t)\) | 制御量(PV) | \([\mathrm{Q}]\) |
| \(y_m(t)\) | ノイズを含むセンサー測定値 | \([\mathrm{Q}]\) |
| \(n(t)\) | 測定ノイズ | \([\mathrm{Q}]\) |
| \(e(t)\) | 偏差 | \([\mathrm{Q}]\) |
| \(u_c(t)\) | PIDが要求する操作量 | \([\mathrm{M}]\) |
| \(u_a(t)\) | 上下限適用後の実操作量(MV) | \([\mathrm{M}]\) |
| \(u_{\min},u_{\max}\) | 操作量の下限と上限 | \([\mathrm{M}]\) |
| \(I(t)\) | 偏差の積分状態 | \([\mathrm{Q}\cdot\mathrm{s}]\) |
| \(d(t),d_0\) | 入力外乱と設定した外乱の大きさ | \([\mathrm{M}]\) |
| \(t_{\mathrm{dist}}\) | 外乱の発生時刻 | \([\mathrm{s}]\) |
| \(t,\tau\) | 時間 | \([\mathrm{s}]\) |
| \(K_p\) | 比例ゲイン | \([\mathrm{M}/\mathrm{Q}]\) |
| \(T_i\) | 標準形の積分時間 | \([\mathrm{s}]\) |
| \(T_d\) | 標準形の微分時間 | \([\mathrm{s}]\) |
| \(T_f\) | 微分フィルタの時定数 | \([\mathrm{s}]\) |
| \(SP_2,PV_2,e_2\) | 内側ループの目標値、制御量、偏差 | 任意単位 |
| \(K_{p2},T_{i2},T_{d2}\) | 内側PIDの比例ゲイン、積分時間、微分時間 | ゲイン、\([\mathrm{s}]\)、\([\mathrm{s}]\) |
| \(K_i\) | 並列形の積分ゲイン | \([\mathrm{M}/(\mathrm{Q}\cdot\mathrm{s})]\) |
| \(K_d\) | 並列形の微分ゲイン | \([\mathrm{M}\cdot\mathrm{s}/\mathrm{Q}]\) |
| \(K\) | 制御対象の定常ゲイン | \([\mathrm{Q}/\mathrm{M}]\) |
| \(T\) | 制御対象の時定数 | \([\mathrm{s}]\) |
| \(s\) | ラプラス変数 | \([\mathrm{s}^{-1}]\) |
単位の読み方:\(\mathrm{Q}\) は制御量の単位、\(\mathrm{M}\) は操作量の単位を表します。例えば温度制御で \(y\) が温度[°C]、\(u_a\) がヒーター出力[%]なら、\(K_p\) は[%/°C]、\(K_i\) は[%/(°C·s)]、\(K_d\) は[%·s/°C]です。このシミュレーターの縦軸は、特定の物理量を指定しない任意単位として扱っています。
一定の目標値を時刻0で与え、ブラウザ内で数値シミュレーションしています。ノイズは毎回同じ波形を使うため、設定変更前後を同じ条件で比較できます。