最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

pid

並列形式の PID コントローラーを作成、並列形式 PID コントローラーに変換

構文

C = pid(Kp,Ki,Kd,Tf)
C = pid(Kp,Ki,Kd,Tf,Ts)
C = pid(sys)
C = pid(Kp)
C = pid(Kp,Ki)
C = pid(Kp,Ki,Kd)
C = pid(...,Name,Value)
C = pid

説明

C = pid(Kp,Ki,Kd,Tf) は以下のように連続時間 PID コントローラーを作成します。このコントローラーは、比例、積分、微分のゲイン KpKiKd と、1 次の微分フィルター時定数 Tf をもちます。

C=Kp+Kis+KdsTfs+1.

この表現は "並列形式" です。KpKiKd および Tf がすべて実数の場合、結果として得られる Cpid コントローラー オブジェクトです。これらの係数の 1 つ以上が調整可能 (realp または genmat) な場合、C は調整可能な一般化状態空間 (genss) モデル オブジェクトになります。

C = pid(Kp,Ki,Kd,Tf,Ts) は、サンプル時間 Ts をもつ離散時間 PID コントローラーを作成します。コントローラーは次のようになります。

C=Kp+KiIF(z)+KdTf+DF(z).

IF(z) と DF(z) は積分器と微分フィルターのための "離散積分器の式" です。既定では以下のようになります。

IF(z)=DF(z)=Tsz1.

異なる離散積分器の式を選択するには、IFormulaDFormula のプロパティを使用します(IFormulaDFormula の詳細は、プロパティを参照してください)。DFormula = 'ForwardEuler' (既定値) と Tf ≠ 0 の場合、TsTfTf > Ts/2 を満たさなければなりません。この条件によって安定した微分フィルター極が保証されます。

C = pid(sys) は、動的システム sys を並列形式の pid コントローラー オブジェクトに変換します。

C = pid(Kp) は、Ki = 0、Kd = 0、Tf = 0 の連続時間の比例 (P) コントローラーを作成します。

C = pid(Kp,Ki) は、Kd = 0、Tf = 0 の比例および積分 (PI) コントローラーを作成します。

C = pid(Kp,Ki,Kd) は、Tf = 0 の比例、積分、微分 (PID) コントローラーを作成します。

C = pid(...,Name,Value) は、1 つ以上の Name,Value の引数ペアで指定した追加オプションを使ってコントローラーの作成、または動的システムを pid コントローラー オブジェクトへ変換します。

C = pid は、Kp = 1 として P コントローラーを作成します。

入力引数

Kp

比例ゲイン。

Kp は以下のいずれかになります。

  • 有限な実数値。

  • 有限な実数値の配列。

  • 調整可能なパラメーター (realp) または一般化行列 (genmat)。

  • tunableSurface を使用して作成される、ゲイン スケジュール調整用の調整可能な曲面。

Kp = 0 のとき、コントローラーは比例動作を行いません。

既定値: 1

Ki

積分ゲイン

Ki は以下のいずれかになります。

  • 有限な実数値。

  • 有限な実数値の配列。

  • 調整可能なパラメーター (realp) または一般化行列 (genmat)。

  • tunableSurface を使用して作成される、ゲイン スケジュール調整用の調整可能な曲面。

Ki = 0 のとき、コントローラーは積分動作を行いません。

既定値: 0

Kd

微分ゲイン

Kd は以下のいずれかになります。

  • 有限な実数値。

  • 有限な実数値の配列。

  • 調整可能なパラメーター (realp) または一般化行列 (genmat)。

  • tunableSurface を使用して作成される、ゲイン スケジュール調整用の調整可能な曲面。

Kd = 0 のとき、コントローラーは微分動作を行いません。

既定値: 0

Tf

1 次微分フィルターの時定数

Tf は以下のいずれかになります。

  • 有限な非負の実数値。

  • 有限な非負の実数値の配列。

  • 調整可能なパラメーター (realp) または一般化行列 (genmat)。

  • tunableSurface を使用して作成される、ゲイン スケジュール調整用の調整可能な曲面。

Tf = 0 のとき、コントローラーの微分動作でフィルターがなくなります。

既定値: 0

Ts

サンプル時間。

離散時間 pid コントローラーを作成するには、正の実数値 (Ts > 0) を指定します。pid は、未指定のサンプル時間 (Ts = -1) をもつ離散時間コントローラーをサポートしていません。

Ts はスカラー値でなければなりません。pid コントローラーの配列では、各コントローラーに同一の Ts がなければなりません。

既定値: 0 (連続時間)

sys

並列 pid 形式に変換する SISO 動的システム。

sys は、Tf ≥ 0 である並列形式で記述できる有効な PID コントローラーを表さなければなりません。

sys は、SISO 動的システムの配列の 1 つであることもあります。

名前と値のペアの引数

オプションの Name,Value の引数ペアをコンマ区切りで指定します。ここで、Name は引数名で、Value は対応する値です。Name は引用符で囲まなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペア引数を任意の順序で指定できます。

Name,Value 構文を使用すると、離散時間 pid コントローラーの数値積分式 IFormula および DFormula を設定し、また、InputNameOutputName などの他のオブジェクト プロパティを設定することができます。pid コントローラー オブジェクトの利用可能なプロパティの詳細については、プロパティを参照してください。

出力引数

C

pid コントローラー オブジェクトとして表される PID コントローラー、pid コントローラー オブジェクトの配列、genss オブジェクトまたは genss 配列。

  • ゲイン KpKiKd および Tf がすべて数値の場合、Cpid コントローラー オブジェクトです。ゲインが数値配列の場合、Cpid コントローラー オブジェクトの配列です。コントローラーのタイプ (P、I、PI、PD、PDF、PID、PIDF) はゲインの値に依存します。たとえば、Kd = 0 で、Kp および Ki が非ゼロの場合、C は PI コントローラーです。

  • 1 つ以上のゲインが、調整可能なパラメーター (realp)、一般化行列 (genmat) または調整可能なゲイン曲面 (tunableSurface) である場合、C は一般化状態空間モデル (genss) です。

プロパティ

Kp, Ki, Kd

PID コントローラーのゲイン。

KpKi および Kd の各プロパティは、それぞれ比例、積分、微分ゲインを格納します。KpKi および Kd は有限な実数です。

Tf

微分フィルター時定数。

Tf プロパティは pid コントローラー オブジェクトの微分フィルター時定数を格納します。Tf は有限で非負の実数です。

IFormula

次の離散時間 pid コントローラー C の積分器のための離散積分器の式 IF(z):

C=Kp+KiIF(z)+KdTf+DF(z).

IFormula は次の値をとることができます。

  • 'ForwardEuler' — IF(z) = Tsz1.

    この方程式は、コントローラーの帯域幅と比較してナイキスト制限が大きくなるような、小さいサンプル時間に最適です。大きいサンプル時間で ForwardEuler 式を使用すると、連続時間で安定しているシステムを離散化する場合でも不安定となることがあります。

  • 'BackwardEuler' — IF(z) = Tszz1.

    BackwardEuler 式の利点は、この式を使用して安定した連続時間システムを離散化すると、常に安定した離散時間結果が得られることです。

  • 'Trapezoidal' — IF(z) = Ts2z+1z1.

    Trapezoidal 式の利点は、この式を使用して安定した連続時間システムを離散化すると、常に安定した離散時間結果が得られることです。使用可能なすべての積分式の中で、離散システムと対応する連続時間システムの周波数領域プロパティが最も近くなるのは Trapezoidal 式です。

C が連続時間コントローラーの場合、IFormula'' です。

既定値: 'ForwardEuler'

DFormula

次の離散時間 pid コントローラー C の微分フィルターのための離散積分器の式 DF(z):

C=Kp+KiIF(z)+KdTf+DF(z).

DFormula は次の値をとることができます。

  • 'ForwardEuler' — DF(z) = Tsz1.

    この方程式は、コントローラーの帯域幅と比較してナイキスト制限が大きくなるような、小さいサンプル時間に最適です。大きいサンプル時間で ForwardEuler 式を使用すると、連続時間で安定しているシステムを離散化する場合でも不安定となることがあります。

  • 'BackwardEuler' — DF(z) = Tszz1.

    BackwardEuler 式の利点は、この式を使用して安定した連続時間システムを離散化すると、常に安定した離散時間結果が得られることです。

  • 'Trapezoidal' — DF(z) = Ts2z+1z1.

    Trapezoidal 式の利点は、この式を使用して安定した連続時間システムを離散化すると、常に安定した離散時間結果が得られることです。使用可能なすべての積分式の中で、離散システムと対応する連続時間システムの周波数領域プロパティが最も近くなるのは Trapezoidal 式です。

    DFormulaTrapezoidal 値は、微分フィルターのない pid コントローラー (Tf = 0) には利用できません。

C が連続時間コントローラーの場合、DFormula'' です。

既定値: 'ForwardEuler'

InputDelay

システム入力のむだ時間。InputDelaypid コントローラー オブジェクトに対しては常に 0 です。

OutputDelay

システム出力のむだ時間。OutputDelaypid コントローラー オブジェクトに対しては常に 0 です。

Ts

サンプル時間。連続時間モデルの場合、Ts = 0。離散時間モデルの場合、Ts はサンプリング周期を表す正のスカラーです。この値は、モデルの TimeUnit プロパティで指定される単位で表されます。PID コントローラー モデルは未指定のサンプル時間 (Ts = -1) をサポートしません。

このプロパティを変更してもモデルの離散化やリサンプリングは行われません。c2dd2c を使用して、連続時間表現と離散時間表現の間の変換を行います。d2d を使用して、離散時間システムのサンプル時間を変更します。

既定値: 0 (連続時間)

TimeUnit

モデル内の時間変数、サンプル時間 Ts および何らかのむだ時間の単位。以下のいずれかの値として指定します。

  • 'nanoseconds'

  • 'microseconds'

  • 'milliseconds'

  • 'seconds'

  • 'minutes'

  • 'hours'

  • 'days'

  • 'weeks'

  • 'months'

  • 'years'

このプロパティを変更しても他のプロパティには影響しないため、システム全体の動作が変更されます。chgTimeUnit を使用して、システム動作を変更せずに時間単位を変換します。

既定値: 'seconds'

InputName

入力チャネル名。文字ベクトルとして指定します。このプロパティを使用してコントローラー モデルの入力チャネルに名前を付けます。たとえば、次のようにして、名前 error をコントローラー モデル C の入力に割り当てます。

C.InputName = 'error';

省略形表記 u を使用して、InputName プロパティを参照できます。たとえば、C.uC.InputName と同じです。

以下を含めて、入力チャネル名はいくつかの用途をもちます。

  • モデル表示とプロット上のチャネルの識別

  • モデル相互接続時における接続点の指定

既定値: 空の文字ベクトル ('')

InputUnit

入力チャネル単位。文字ベクトルとして指定します。このプロパティを使用して入力信号単位を追跡します。たとえば、次のようにして、濃度単位 mol/m^3 をコントローラー モデル C の入力に割り当てます。

C.InputUnit = 'mol/m^3';

InputUnit はシステムの動作に影響しません。

既定値: 空の文字ベクトル ('')

InputGroup

入力チャネル グループ。このプロパティは PID コントローラー モデルには必要ありません。

既定値: フィールドのない struct

OutputName

出力チャネル名。文字ベクトルとして指定します。このプロパティを使用して、コントローラー モデルの出力チャネルに名前を付けます。たとえば、次のようにして、名前 control をコントローラー モデル C の出力に割り当てます。

C.OutputName = 'control';

省略形表記 y を使用して、OutputName プロパティを参照できます。たとえば、C.yC.OutputName と同じです。

以下を含めて、入力チャネル名はいくつかの用途をもちます。

  • モデル表示とプロット上のチャネルの識別

  • モデル相互接続時における接続点の指定

既定値: 空の文字ベクトル ('')

OutputUnit

出力チャネル単位。文字ベクトルとして指定します。このプロパティを使用して出力信号単位を追跡します。たとえば、次のようにして、単位 Volts をコントローラー モデル C の出力に割り当てます。

C.OutputUnit = 'Volts';

OutputUnit はシステムの動作に影響しません。

既定値: 空の文字ベクトル ('')

OutputGroup

出力チャネル グループ。このプロパティは PID コントローラー モデルには必要ありません。

既定値: フィールドのない struct

Name

システム名。文字ベクトルとして指定します。たとえば、'system_1' とします。

既定値: ''

Notes

システムに関連付ける任意のテキスト。string または文字ベクトルの cell 配列として格納されます。プロパティには指定したデータ型が格納されます。たとえば、sys1sys2 が動的システム モデルである場合、その Notes プロパティを次のように設定できます。

sys1.Notes = "sys1 has a string.";
sys2.Notes = 'sys2 has a character vector.';
sys1.Notes
sys2.Notes
ans = 

    "sys1 has a string."


ans =

    'sys2 has a character vector.'

既定値: [0×1 string]

UserData

システムに関連付ける任意のデータ型。任意の MATLAB® データ型として指定します。

既定値: []

SamplingGrid

モデル配列のサンプリング グリッド。データ構造として指定されます。

1 つまたは複数の独立変数をサンプリングすることによって得られるモデル配列の場合、このプロパティは配列内の各モデルに関連付けられた変数値を追跡します。この情報はモデル配列を表示またはプロットすると表示されます。この情報を使用して、結果を独立変数まで遡ります。

データ構造のフィールド名をサンプリング変数の名前に設定します。フィールドの値を、配列内の各モデルに関連付けられているサンプリングされた変数の値に設定します。すべてのサンプリング変数は数値でスカラー値でなければならず、サンプル値のすべての配列はモデル配列の次元に一致しなければなりません。

たとえば、t = 0:10 の各時点で線形時変システムのスナップショットを記録することにより、線形モデルの 11 行 1 列の配列 sysarr を作成するとします。次のコードは線形モデルでの時間サンプルを格納します。

 sysarr.SamplingGrid = struct('time',0:10)

同様に、2 つの変数 zetaw を個別にサンプリングすることにより、6 行 9 列のモデル配列 M を作成するとします。次のコードは (zeta,w) の値を M に付加します。

[zeta,w] = ndgrid(<6 values of zeta>,<9 values of w>)
M.SamplingGrid = struct('zeta',zeta,'w',w)

M を表示する際、配列の各エントリは対応する zetaw の値を取り込みます。

M
M(:,:,1,1) [zeta=0.3, w=5] =
 
        25
  --------------
  s^2 + 3 s + 25
 

M(:,:,2,1) [zeta=0.35, w=5] =
 
         25
  ----------------
  s^2 + 3.5 s + 25
 
...

複数のパラメーター値または操作点で Simulink® モデルを線形化することにより生成されたモデル配列の場合、SamplingGrid には配列の各エントリに対応する変数値が自動的に入力されます。たとえば、Simulink Control Design™ のコマンドである linearizeslLinearizer は、この方法で SamplingGrid に入力します。

既定値: []

すべて折りたたむ

比例ゲインと積分ゲイン、および微分項のフィルターをもつ連続時間コントローラーを作成します。これを行うには、積分ゲインを 0 に設定します。他のゲインとフィルター時定数を望ましい値に設定します。

Kp = 1;
Ki = 0;   % No integrator
Kd = 3;
Tf = 0.5;
C = pid(Kp,Ki,Kd,Tf)
C =
 
               s    
  Kp + Kd * --------
             Tf*s+1 

  with Kp = 1, Kd = 3, Tf = 0.5
 
Continuous-time PDF controller in parallel form.

表示では、コントローラー タイプ、式およびパラメーター値が示され、コントローラーに積分項のないことが確認されます。

台形則による離散化式を使用し、離散時間 PI コントローラーを作成します。

離散時間 PI コントローラーを作成するには、Name,Value 構文を使用して Ts の値と離散化式を設定します。

C1 = pid(5,2.4,'Ts',0.1,'IFormula','Trapezoidal')    % Ts = 0.1s
C1 =
 
            Ts*(z+1)
  Kp + Ki * --------
            2*(z-1) 

  with Kp = 5, Ki = 2.4, Ts = 0.1
 
Sample time: 0.1 seconds
Discrete-time PI controller in parallel form.

あるいは、4 つの PID パラメーター KpKiKdTf すべての後に 5 番目の入力引数として Ts を指定することで、同じ離散時間コントローラーを作成できます。必要なのは PI コントローラーのみであるため、KdTf を 0 に設定します。

C2 = pid(5,2.4,0,0,0.1,'IFormula','Trapezoidal')
C2 =
 
            Ts*(z+1)
  Kp + Ki * --------
            2*(z-1) 

  with Kp = 5, Ki = 2.4, Ts = 0.1
 
Sample time: 0.1 seconds
Discrete-time PI controller in parallel form.

表示には、C1C2 が同じであることが示されます。

PID コントローラーを作成する場合は、動的システムのプロパティ InputName および OutputName を設定します。これが有用なのは、たとえば、PID コントローラーを他の動的システム モデルと connect コマンドを使用して相互接続する場合などです。

C = pid(1,2,3,'InputName','e','OutputName','u')
C =
 
             1          
  Kp + Ki * --- + Kd * s
             s          

  with Kp = 1, Ki = 2, Kd = 3
 
Continuous-time PID controller in parallel form.

表示に PID コントローラーの入力名と出力名は示されませんが、プロパティ値を調べることはできます。たとえば、コントローラーの入力名を確認します。

C.InputName
ans = 1x1 cell array
    {'e'}

配列の行については 1 ~ 2 の範囲の比例ゲインをもち、列については 5 ~ 9 の範囲の積分ゲインをもつ PI コントローラーの 2 行 3 列のグリッドを作成します。

PID コントローラーの配列を作成するには、ゲインを表す配列から開始します。

Kp = [1 1 1;2 2 2];
Ki = [5:2:9;5:2:9];

これらの配列を pid コマンドに渡すと、コマンドはその配列を返します。

pi_array = pid(Kp,Ki,'Ts',0.1,'IFormula','BackwardEuler');
size(pi_array)
2x3 array of PID controller.
Each PID has 1 output and 1 input.

あるいは、stack コマンドを使用して PID コントローラーの配列を作成します。

C = pid(1,5,0.1)           % PID controller
C =
 
             1          
  Kp + Ki * --- + Kd * s
             s          

  with Kp = 1, Ki = 5, Kd = 0.1
 
Continuous-time PID controller in parallel form.
Cf = pid(1,5,0.1,0.5)      % PID controller with filter
Cf =
 
             1            s    
  Kp + Ki * --- + Kd * --------
             s          Tf*s+1 

  with Kp = 1, Ki = 5, Kd = 0.1, Tf = 0.5
 
Continuous-time PIDF controller in parallel form.
pid_array = stack(2,C,Cf); % stack along 2nd array dimension

これらのコマンドは、コントローラーの 1 行 2 列の配列を返します。

size(pid_array)
1x2 array of PID controller.
Each PID has 1 output and 1 input.

配列内の PID コントローラーはすべて、同じサンプル時間、離散積分器の式、および動的システムのプロパティ (InputNameOutputName など) をもっていなければなりません。

標準形式の pidstd コントローラーを並列形式に変換します。

標準 PID 形式では、コントローラーの動作は全体的な比例ゲイン Kp、積分時定数 Ti と微分時定数 Td、そしてフィルター除数 N によって表現されます。pid コマンドを使用して、任意の標準形式コントローラーを並列形式に変換できます。たとえば、次の標準形式コントローラーを考えます。

Kp = 2;
Ti = 3;
Td = 4;
N = 50;
C_std = pidstd(Kp,Ti,Td,N)
C_std =
 
             1      1              s      
  Kp * (1 + ---- * --- + Td * ------------)
             Ti     s          (Td/N)*s+1 

  with Kp = 2, Ti = 3, Td = 4, N = 50
 
Continuous-time PIDF controller in standard form

pid を使用してこのコントローラーを並列形式に変換します。

C_par = pid(C_std)
C_par =
 
             1            s    
  Kp + Ki * --- + Kd * --------
             s          Tf*s+1 

  with Kp = 2, Ki = 0.667, Kd = 8, Tf = 0.08
 
Continuous-time PIDF controller in parallel form.

PID コントローラーを表す連続時間動的システムを、並列 pid 形式に変換します。

次の動的システムには積分器と 2 つの 0 があり、PID コントローラーと等価です。

H(s)=3(s+1)(s+2)s.

Hzpk モデルを作成します。続いて pid コマンドを使用し、PID ゲイン KpKiKd によって H を取得します。

H = zpk([-1,-2],0,3);
C = pid(H)
C =
 
             1          
  Kp + Ki * --- + Kd * s
             s          

  with Kp = 9, Ki = 6, Kd = 3
 
Continuous-time PID controller in parallel form.

微分フィルターをもつ PID コントローラーを表す離散時間動的システムを、並列 pid 形式に変換します。

PIDF コントローラーを表す離散時間 zpk モデル (2 つの零点と、z = 1 の積分器極を含む 2 つの極) を作成します。

sys = zpk([-0.5,-0.6],[1 -0.2],3,'Ts',0.1);

sys を PID 形式に変換する際の結果は、変換でどの離散積分器の式を指定するかに依存します。たとえば、既定の ForwardEuler を積分器と微分の両方で使用したとします。

Cfe = pid(sys)
Cfe =
 
              Ts               1     
  Kp + Ki * ------ + Kd * -----------
              z-1         Tf+Ts/(z-1)

  with Kp = 2.75, Ki = 60, Kd = 0.0208, Tf = 0.0833, Ts = 0.1
 
Sample time: 0.1 seconds
Discrete-time PIDF controller in parallel form.

ここで、Trapezoidal 式を使用して変換を行います。

Ctrap = pid(sys,'IFormula','Trapezoidal','DFormula','Trapezoidal')
Ctrap =
 
            Ts*(z+1)                 1         
  Kp + Ki * -------- + Kd * -------------------
            2*(z-1)         Tf+Ts/2*(z+1)/(z-1)

  with Kp = -0.25, Ki = 60, Kd = 0.0208, Tf = 0.0333, Ts = 0.1
 
Sample time: 0.1 seconds
Discrete-time PIDF controller in parallel form.

表示には、結果として得られる係数値と関数形式に相違があることが示されます。

この特定の動的システムでは、微分フィルターに BackwardEuler 式を使用して sys を並列 PID 形式で書き込むことはできません。これを行うと Tf < 0 になりますが、これは許可されません。この場合、pid はエラーを返します。

連続時間 PID コントローラーを離散化し、積分フィルター式と微分フィルター式を設定します。

連続時間コントローラーを作成し、c2d コマンドのゼロ次ホールド メソッドを使用してこれを離散化します。

Ccon = pid(1,2,3,4);  % continuous-time PIDF controller
Cdis1 = c2d(Ccon,0.1,'zoh')
Cdis1 =
 
              Ts               1     
  Kp + Ki * ------ + Kd * -----------
              z-1         Tf+Ts/(z-1)

  with Kp = 1, Ki = 2, Kd = 3.04, Tf = 4.05, Ts = 0.1
 
Sample time: 0.1 seconds
Discrete-time PIDF controller in parallel form.

表示には、c2d が離散時間コントローラーの新しい PID ゲインを計算することが示されます。

離散化されたコントローラーの離散化積分器の式は、ヒントで説明されているように、c2d の離散化手法に依存します。zoh メソッドでは、IFormulaDFormula のどちらも ForwardEuler です。

Cdis1.IFormula
ans = 
'ForwardEuler'
Cdis1.DFormula
ans = 
'ForwardEuler'

c2d によって返された式の中から異なるものを複数使用する場合、コントローラーの TsIFormula、および DFormula プロパティを望ましい値に直接設定できます。

Cdis2 = Ccon;
Cdis2.Ts = 0.1; 
Cdis2.IFormula = 'BackwardEuler';
Cdis2.DFormula = 'BackwardEuler';

ただし、これらのコマンドは、離散化されたコントローラーの新しい PID ゲインは計算しません。これを確認するには、Cdis2 を調べ、その係数を Ccon および Cdis1 と比較します。

Cdis2
Cdis2 =
 
             Ts*z               1      
  Kp + Ki * ------ + Kd * -------------
              z-1         Tf+Ts*z/(z-1)

  with Kp = 1, Ki = 2, Kd = 3, Tf = 4, Ts = 0.1
 
Sample time: 0.1 seconds
Discrete-time PIDF controller in parallel form.

ヒント

  • pid の使用目的は次のとおりです。

    • pid コントローラー オブジェクトを既知の PID ゲインとフィルター時定数から作成する。

    • pidstd コントローラー オブジェクトを標準形式 pid コントローラー オブジェクトに変換する。

    • その他のタイプの動的システム モデルを pid コントローラー オブジェクトに変換する。

  • PID コントローラーを特定のプラントに合わせて設計するには、pidtune または pidTuner を使用します。調整可能な PID コントローラーを制御設計ブロックとして作成するには、tunablePID を使用します。

  • 以下のようにして、pid コントローラー オブジェクトの配列を作成します。

    • KpKiKdTf に対する配列の値を指定する

    • 動的システム sys の配列を指定し、pid コントローラー オブジェクトに変換する

    • stack を使用して、個別のコントローラーまたはより小さい配列から配列を作成する

    pid コントローラーの配列では、各コントローラーに同じサンプル時間 Ts と、離散積分器の式 IFormula および DFormula がなければなりません。

  • 標準形式コントローラーを作成するか、または標準形式コントローラーに変換するには、 pidstd を使用します。標準形式では、コントローラーの動作は以下のように、全体的な比例ゲイン Kp、積分時間と微分時間 Ti と Td、およびフィルター除数 N として表示されます。

    C=Kp(1+1Ti1s+TdsTdNs+1).

  • 連続時間 pid コントローラーを離散化するには、以下の 2 つの方法があります。

    • c2d を使用します。c2d は離散化されたコントローラーのための新しいパラメーター値を計算します。離散化されたコントローラーの離散積分器の式は、次の表に示すように、使用する c2d 離散化手法に依存します。

      c2d 離散化手法IFormulaDFormula
      'zoh'ForwardEulerForwardEuler
      'foh'TrapezoidalTrapezoidal
      'tustin'TrapezoidalTrapezoidal
      'impulse'ForwardEulerForwardEuler
      'matched'ForwardEulerForwardEuler

      c2d 離散化手法の詳細については、c2d のリファレンス ページを参照してください。IFormulaDFormula の詳細は、プロパティを参照してください。

    • 他の離散積分器の式が必要な場合は、TsIFormula、および DFormula を目標値に直接設定してコントローラーを離散化することができます (連続時間 PID コントローラーの離散化を参照)。ただし、この方法では離散化されたコントローラーの新しいゲインとフィルター定数値は計算されません。したがって、この方法で得られる連続時間と離散時間の pid コントローラーの一致は、c2d を使用した場合に比べて劣る可能性があります。

R2010b で導入