Main Content

piddata

並列形式 PID コントローラーのアクセス係数

構文

[Kp,Ki,Kd,Tf] = piddata(sys)
[Kp,Ki,Kd,Tf,Ts] = piddata(sys)
[Kp,Ki,Kd,Tf,Ts] = piddata(sys,J1,...,JN)

説明

[Kp,Ki,Kd,Tf] = piddata(sys) は PID ゲイン KpKiKd、および動的システムの sys で表される、並列形式コントローラーのフィルター時定数 Tf を返します。

[Kp,Ki,Kd,Tf,Ts] = piddata(sys) はサンプル時間 Ts も返します。

[Kp,Ki,Kd,Tf,Ts] = piddata(sys,J1,...,JN) は、sys におけるエントリのサブセットのデータを抽出します。ここで、sys は動的システムの N 次元配列です。インデックス J は、抽出する配列エントリを指定します。

入力引数

sys

SISO 動的システムまたは SISO 動的システムの配列。syspid オブジェクトではない場合、それは並列 PID 形式で記述できる、有効な PID コントローラーを表現しなければなりません。

J

動的システムの配列 sys における N エントリの整数インデックス。たとえば、sys が、pid コントローラーの 4 行 5 列の (2 次元) 配列か、または PID コントローラーを表す動的システム モデルであるとします。次のコマンドは、配列のエントリ (2,3) のデータを抽出します。

[Kp,Ki,Kd,Tf,Ts] = piddata(sys,2,3);

出力引数

Kp

動的システム sys により表される並列形式 PID コントローラーの比例ゲイン

syspid コントローラー オブジェクトの場合、出力 KpsysKp 値と等しくなります。

syspid オブジェクトでない場合、Kpsys と等価な並列形式 PID コントローラーの比例ゲインとなります。

sys が動的システムの配列の場合、Kpsys と同じ次元の配列となります。

Ki

動的システム sys により表される並列形式 PID コントローラーの積分ゲイン

syspid コントローラー オブジェクトの場合、出力 KisysKi 値と等しくなります。

syspid オブジェクトではない場合、Kisys と等価な並列 PID コントローラーの積分ゲインとなります。

sys が動的システムの配列の場合、Kisys と同じ次元の配列となります。

Kd

動的システム sys により表される並列形式 PID コントローラーの微分ゲイン

syspid コントローラー オブジェクトの場合、出力 KdsysKd 値と等しくなります。

syspid オブジェクトではない場合、Kdsys と等価な並列 PID コントローラーの微分ゲインとなります。

sys が動的システムの配列の場合、Kdsys と同じ次元の配列となります。

Tf

動的システム sys により表される並列形式 PID コントローラーのフィルター時定数

syspid コントローラー オブジェクトの場合、出力 TfsysTf 値と等しくなります。

syspid オブジェクトでない場合、Tfsys と等価な並列形式 PID コントローラーのフィルター時定数となります。

sys が動的システムの配列の場合、Tfsys と同じ次元の配列となります。

Ts

動的システム sys のサンプル時間 Ts は常にスカラー値です。

すべて折りたたむ

通常は、pidtunegetBlockValue などの別の関数によって取得したコントローラーから係数を抽出します。この例では、乱数の係数をもつ PID コントローラーを作成します。

rng('default');    % for reproducibility
C = pid(rand,rand,rand,rand);

PID ゲインとフィルター時定数を抽出します。

[Kp,Ki,Kd,Tf] = piddata(C)
Kp = 0.8147
Ki = 0.9058
Kd = 0.1270
Tf = 0.9134

PI コントローラーを標準形式で作成します。

C = pidstd(2,3)
C =
 
             1      1 
  Kp * (1 + ---- * ---)
             Ti     s 

  with Kp = 2, Ti = 3
 
Continuous-time PI controller in standard form

等価な並列形式 PID コントローラーのゲインを計算します。

[Kp,Ki] = piddata(C)
Kp = 2
Ki = 0.6667

微分フィルターをもつ有効な離散時間の並列形式 PID コントローラーを表す動的システムから係数を抽出します。

H(z)=(z-0.5)(z-0.6)(z-1)(z+0.8)

H = zpk([0.5 0.6],[1,-0.8],1,0.1);

PID ゲインとフィルター時定数を抽出します。

[Kp,Ki,Kd,Tf,Ts] = piddata(H)
Kp = 0.4383
Ki = 1.1111
Kd = 0.0312
Tf = 0.0556
Ts = 0.1000

離散時間システムでは、piddata が既定の ForwardEuler 離散積分器の式を IFormulaDFormula の両方に使用して、係数値を計算します。

通常は、プラント モデルの配列の pidtune を使用して、コントローラーの配列を取得します。この例では PI コントローラーの 2 行 3 列の配列を乱数値の Kp および Ki で作成します。

rng('default');
C = pid(rand(2,3),rand(2,3));

配列からすべての係数を抽出します。

[Kp,Ki] = piddata(C);

各出力は、それ自体が 2 行 3 列の配列です。たとえば、Ki を調べます。

Ki
Ki = 2×3

    0.2785    0.9575    0.1576
    0.5469    0.9649    0.9706

配列のエントリ (2,1) の係数のみを抽出します。

[Kp,Ki] = piddata(C,2,1)
Kp = 0.9058
Ki = 0.5469

ヒント

syspid コントローラー オブジェクトでない場合、piddataKpKiKd、および sys と等価な並列形式コントローラーのフィルター時定数 Tf を返します。

離散時間 sys の場合、piddata は等価な並列形式コントローラーのパラメーターを返します。このコントローラーは、ForwardEuler に設定された離散積分器の式 IFormulaDFormula をもちます。離散積分器の式の詳細は、pid のリファレンス ページを参照してください。

バージョン履歴

R2010b で導入

参考

| |