PID上級 (DBL配列)
- 更新日2025-07-30
- 9分で読める
上級オプション機能を使用するPIDアルゴリズムを使用してPIDコントローラを実装します。上級PIDアルゴリズムには、PID VIが使用するアルゴリズムの機能の他、手動モード制御 (バンプレスな手動―自動切換)、非線形インテグラル動作、2自由度制御、2乗誤差制御があります。単一の制御ループを実装するには、このVIのDBLインスタンスを使用します。並列マルチループ制御を実装するには、DBL配列インスタンスを使用します。

入力/出力
ガンマ
—
ガンマには、微分動作に適用される誤差を加重する量を指定します。デフォルト値は0で、微分キック (目標値の変更後に起こる可能性のあるコントローラ出力の急激な変化) を回避します。 微分キックの心配がない特定のカスケード制御操作では、ガンマを増加させることで、最初のPIDコントローラの速度が上がる場合があります。 このVIは、ガンマ入力配列のサイズをプロセス変数入力配列のサイズに一致するように変更します。
手動制御
—
手動制御には、自動?がFALSEのときの制御出力の値を指定します。このVIは、手動制御入力配列のサイズをプロセス変数入力配列のサイズに一致するように変更します。
自動? (T)
—
自動?は、自動制御と手動制御のどちらを使用するかを指定します。自動?がFALSEの場合、このVIは自動制御を使用します。自動?がFALSEの場合、このVIは手動制御を使用します。このVIは、手動制御から自動制御へのバンプレス転送を使用します。デフォルトはTRUEです。 このVIは、自動?入力配列のサイズをプロセス変数入力配列のサイズに一致するように変更します。
出力レンジ
—
出力範囲は、制御出力を強制する範囲を指定します。デフォルトの範囲は -100~100で、これはフルスケールのパーセントとして指定された値に対応します。 この範囲は、制御システムに合わせて変更できます。たとえば、パーセントからパーセントではなく、工学単位から工学単位に関連付けることができます。このVIは、指定された最小値または最大値でコントローラ出力が飽和したときに、積分器アンチワインドアップを実装します。 出力範囲は、以下の要素のクラスタの配列です。
目標値
—
目標値は、制御されているプロセス変数の目標値を指定します。このVIは、目標値入力配列のサイズをプロセス変数入力配列のサイズに一致するように変更します。
プロセス変数
—
プロセス変数には、制御されているプロセス変数の測定値を指定します。この値は、フィードバック制御ループのフィードバック値と同じです。
目標値範囲
—
目標値の範囲には、目標値/プロセス変数の範囲の最大値と最小値を指定します。このVIは、非線形積分動作を計算するために目標値の範囲を使用します。デフォルトの範囲は0~100であり、これはフルスケールのパーセンテージとして指定された値に対応します。この範囲は、制御システムに合わせて変更できます。たとえば、パーセントからパーセントではなく、工学単位から工学単位に関連付けることができます。 本 VI は、非線形積分動作計算および 非線形誤差計算において、 設定値範囲を 使用します。
PIDゲイン
—
PIDゲインは、以下の要素のクラスタの配列です。
dt (s)
—
dt (s) には、このVIが呼び出されるループサイクル時間または間隔を秒数で指定します。dt (s) がゼロ以下の場合、このVIは、分解能1 msの内蔵タイマーを使用して、前回呼び出し以降の時間を計算します。dt (s) が1 ms未満である必要がある場合は、値を明示的に指定してください。デフォルトは -1 です。
再初期化? (F)
—
再初期化?には、統合されたエラーなど、コントローラの内部パラメータを再初期化するかどうかを指定します。アプリケーション全体を再起動せずに、制御ループを停止して再開することが必要な場合は、再初期化?をTRUEに設定します。デフォルトはFALSEです。
ベータ
—
ベータは、目標値トラッキングへの変動抑制の相対的重要度を指定します。ほとんどのアプリケーションでデフォルト値の1が適切です。プロセス負荷の変更などの変動抑制を強調する場合には、より小さい値 (0~1の値) を使用します。このVIは、ベータ入力配列のサイズをプロセス変数入力配列のサイズに一致するように変更します。
線形性
—
線形性には、エラー応答の線形性を指定します。線形性の有効範囲は、0~1です。1の場合は通常の線形応答、0.1の場合はほぼ放物線状の応答になります。 VIはこの値を非線形の誤差と非線形ゲイン係数の計算に使用します。
出力
—
出力は、制御するプロセスに適用するPIDアルゴリズムの制御出力を返します。このVIは、プロセス変数入力配列のサイズを元に出力配列の長さを決定します。
dt出力 (s)
—
dt出力 (s)は、実際の時間間隔 (秒) を返します。dt出力 (s)は、dt (s)の値、または計算された間隔 (dt (s)を「–1」に設定した場合) を返します。 |
この多態性VIのDBL配列インスタンスは、マルチループPID制御アプリケーションで使用できます。この場合、プロセス変数入力により、出力配列の長さが決まります。他の入力配列は、プロセス変数入力と同じである必要はありません。このVIは、以下のように他の入力配列をプロセス変数入力と同じ長さに変更します。
- 入力配列がプロセス変数入力よりも長い場合、入力配列はプロセス変数入力の長さで切り捨てられます。配列内の追加値は使用されません。
- 入力配列がプロセス変数入力よりも短い場合は、サイズがプロセス変数入力のサイズに一致するまで、入力配列の最後の値が繰り返されます。
こうすることで、各出力計算に使用する必要がある入力を、このVIに渡す配列で繰り返し指定する必要がなくなります。その代わりに、各出力計算に使用する単一値を配列に含めることができます。
バンプレスな手動‐自動転送
このVIは、バンプレスな手動‐自動転送をサポートします。これにより、制御モードが手動から自動に移行する間のスムーズなコントローラ出力が実現できます。
バンプレスな自動‐手動転送
このVIは、バンプレスな手動‐自動転送を実装できません。自動から手動の制御モードにスムーズに移行するには、制御モードが自動から手動に移行するときに手動出力値が制御出力値に一致するようにアプリケーションを設計する必要があります。これは、以下のブロックダイアグラムに示すように、手動制御用のローカル変数を使用することで実現できます。

サンプルプログラム
LabVIEWに含まれている以下のサンプルファイルを参照してください。
- labview\examples\control\PID\Manual-Automatic Control.vi
ガンマ
—
自動? (T)
—
出力レンジ
—
出力上限
—
再初期化? (F)
—
出力
—
dt出力 (s)
—