Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

pidstd

標準形式の PID コントローラー

    説明

    標準形式 PID コントローラー オブジェクトを作成したり、動的システム モデルを標準 PID コントローラー形式に変換するには、pidstd を使用します。

    pidstd コントローラー モデル オブジェクトは、標準形式 PID コントローラーを連続時間または離散時間で表現できます。

    • 連続時間 — C=Kp(1+1Ti1s+TdsTdNs+1)

    • 離散時間 — C=Kp(1+1TiIF(z)+TdTdN+DF(z))

    ここで

    • Kp は比例ゲインです。

    • Ti は積分時間です。

    • Td は微分時間です。

    • N は 1 次微分フィルターの除数です。

    • IF(z) は離散時間コントローラーで積分を計算するための積分手法です。

    • DF(z) は離散時間コントローラーで微分フィルターを計算するための積分手法です。

    このオブジェクトを、制御アーキテクチャのプラント、アクチュエータ、センサーなど、他のコンポーネントと組み合わせて、制御システムを表すことができます。詳細については、モデル オブジェクトでの制御システム モデリングを参照してください。

    コントローラーのパラメーターを直接指定するか、別のタイプのモデル (伝達関数モデル tf など) を PID コントローラー形式に変換して、PID コントローラー モデル オブジェクトを作成できます。

    pidstd を使用して、一般化状態空間 (genss) モデルや不確かさをもつ状態空間 (uss (Robust Control Toolbox)) モデルを作成することもできます。

    作成

    pidstd コントローラー モデルは次のいずれかの方法で取得できます。

    • 関数 pidstd を使用してモデルを作成する。

    • 関数 pidtune を使用して、プラント モデル用に PID コントローラーを調整する。関数 pidtune の引数 C0 を使用して、ベースラインの標準形式 PID コントローラー タイプを指定する。以下に例を示します。

      sys = zpk([],[-1 -1 -1],1);
      C0 = pidstd(1,1,1);
      C = pidtune(sys,C0)
    • 以下を使用して、プラント モデル用に PID コントローラーを対話的に調整する:

    説明

    C = pidstd(Kp,Ti,Td,N) は、連続時間標準形式 PID コントローラー モデルを作成し、KpTiTdN の各プロパティを設定します。残りのプロパティは既定値をもちます。

    C = pidstd(Kp,Ti,Td,N,Ts) は、サンプル時間 Ts をもつ離散時間 PID コントローラー モデルを作成します。

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

    C = pidstd(Kp,Ti) は、比例および積分 (PI) コントローラーを作成します。

    C = pidstd(Kp,Ti,Td) は、比例、積分、および微分 (PID) コントローラーを作成します。

    C = pidstd(___,Name,Value) は、前述の入力引数の任意の組み合わせについて引数 Name,Value を 1 つ以上使用して指定される、pidstd コントローラー オブジェクトのプロパティを設定します。

    C = pidstd は、既定のプロパティ値をもつコントローラー オブジェクトを作成します。コントローラー モデルのプロパティを変更するには、ドット表記を使用します。

    C = pidstd(sys) は、動的システム モデル sys を標準形式 pidstd コントローラー オブジェクトに変換します。

    入力引数

    すべて展開する

    動的システム。SISO 動的システム モデル、または SISO 動的システム モデルの配列として指定します。使用できる動的システムには次のようなものがあります。

    • tf モデル、zpk モデル、ss モデル、または pid モデルなどの連続時間または離散時間の数値 LTI モデル。

    • genssuss (Robust Control Toolbox) モデルなどの一般化された、あるいは不確かさをもつ LTI モデル。(不確かさをもつモデルを使用するには Robust Control Toolbox™ ソフトウェアが必要です。)

      結果の PID コントローラーでは以下が想定されます。

      • 調整可能な制御設計ブロックについては調整可能なコンポーネントの現在値。

      • 不確かさをもつ制御設計ブロックについてはモデルのノミナル値。

    • idtf (System Identification Toolbox)idss (System Identification Toolbox)idproc (System Identification Toolbox)idpoly (System Identification Toolbox)idgrey (System Identification Toolbox) モデルなどの、同定された LTI モデル。(同定されたモデルを使用するには System Identification Toolbox™ ソフトウェアが必要です。)

    出力引数

    すべて展開する

    PID コントローラー モデル。以下として返されます。

    • すべてのゲインが数値をもつ場合は、標準形式 PID コントローラー (pidstd) モデル オブジェクト。ゲインが数値配列の場合、Cpidstd コントローラー オブジェクトの配列です。

    • 入力引数 numerator または denominatorrealp パラメーターまたは一般化行列 (genmat) などの調整可能なパラメーターが含まれる場合は、一般化状態空間モデル (genss) オブジェクト。

    • 入力引数 numerator または denominator に不確かさをもつパラメーターが含まれる場合は、不確かさをもつ状態空間モデル (uss) オブジェクト。不確かさをもつモデルを使用するには Robust Control Toolbox ソフトウェアが必要です。

    プロパティ

    すべて展開する

    比例ゲイン。有限の実数値または調整可能なオブジェクトとして指定します。

    • pidstd コントローラー オブジェクトを作成するには、有限の実数スカラー値を使用します。

    • pidstd コントローラー オブジェクトの配列を作成するには、有限の実数値の配列を使用します。

    • 調整可能なコントローラー モデルを作成するには、調整可能なパラメーター (realp) または一般化行列 (genmat) を使用します。

    • 調整可能なゲインスケジュール コントローラー モデルを作成するには、tunableSurface を使用して作成された調整可能な曲面を使用します。

    積分時間。正の実数値または調整可能なオブジェクトとして指定します。

    • pidstd コントローラー オブジェクトを作成するには、正の実数スカラー値を使用します。

    • pidstd コントローラー オブジェクトの配列を作成するには、正の実数値の配列を使用します。

    • 調整可能なコントローラー モデルを作成するには、調整可能なパラメーター (realp) または一般化行列 (genmat) を使用します。

    • 調整可能なゲインスケジュール コントローラー モデルを作成するには、tunableSurface を使用して作成された調整可能な曲面を使用します。

    微分時間。有限の非負の実数値または調整可能なオブジェクトとして指定します。

    • pidstd コントローラー オブジェクトを作成するには、有限の非負の実数スカラー値を使用します。

    • pidstd コントローラー オブジェクトの配列を作成するには、有限の非負の実数値の配列を使用します。

    • 調整可能なコントローラー モデルを作成するには、調整可能なパラメーター (realp) または一般化行列 (genmat) を使用します。

    • 調整可能なゲインスケジュール コントローラー モデルを作成するには、tunableSurface を使用して作成された調整可能な曲面を使用します。

    1 次微分フィルター除数。正の実数値または調整可能なオブジェクトとして指定します。

    • pidstd コントローラー オブジェクトを作成するには、正の実数スカラー値を使用します。

    • pidstd コントローラー オブジェクトの配列を作成するには、正の実数値の配列を使用します。

    • 調整可能なコントローラー モデルを作成するには、調整可能なパラメーター (realp) または一般化行列 (genmat) を使用します。

    • 調整可能なゲインスケジュール コントローラー モデルを作成するには、tunableSurface を使用して作成された調整可能な曲面を使用します。

    N = Inf の場合、コントローラーには微分動作に対するフィルターがありません。

    離散時間 pidstd コントローラーの積分器に使用する次の離散積分器の式 IF(z):

    C=Kp(1+1TiIF(z)+TdTdN+DF(z)).

    IFormula を以下のいずれかとして指定します。

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

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

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

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

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

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

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

    離散時間 pidstd コントローラーの微分フィルターに使用する次の離散積分器の式 DF(z):

    C=Kp(1+1TiIF(z)+TdTdN+DF(z)).

    DFormula を以下のいずれかとして指定します。

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

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

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

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

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

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

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

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

    この プロパティ は読み取り専用です。

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

    この プロパティ は読み取り専用です。

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

    サンプル時間。以下として指定します。

    • 0 (連続時間システムの場合)。

    • 離散時間システムのサンプリング周期を表す正のスカラー。TsTimeUnit プロパティによって指定される時間単位で指定します。

    PID コントローラー モデルは未指定のサンプル時間 (Ts = -1) をサポートしません。

    メモ

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

    離散化されたコントローラーの離散積分器の式は、次の表に示すように、使用する c2d 離散化手法に依存します。

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

    c2d 離散化手法の詳細については、c2d を参照してください。

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

    時間変数の単位。次のいずれかとして指定します。

    • 'nanoseconds'

    • 'microseconds'

    • 'milliseconds'

    • 'seconds'

    • 'minutes'

    • 'hours'

    • 'days'

    • 'weeks'

    • 'months'

    • 'years'

    TimeUnit の変更は他のプロパティには影響しませんが、システム全体の動作が変わります。chgTimeUnit を使用して、システム動作を変更せずに時間単位を変換します。

    入力チャネル名。次のいずれかとして指定します。

    • 文字ベクトル。

    • '' (名前を指定しない)。

    あるいは、次のようにして、コントローラー モデル C の入力に名前 error を割り当てます。

    C.InputName = 'error';

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

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

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

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

    入力チャネル単位。以下のいずれかとして指定します。

    • 文字ベクトル。

    • '' (単位を指定しない)。

    InputUnit を使用して入力信号の単位を指定します。InputUnit はシステムの動作に影響しません。

    たとえば、次のようにして、コントローラー モデル C の入力に濃度単位 'mol/m^3' を割り当てます。

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

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

    既定では、InputGroup はフィールドのない構造体です。

    出力チャネル名。次のいずれかとして指定します。

    • 文字ベクトル。

    • '' (名前を指定しない)。

    たとえば、次のようにして、コントローラー モデル C の出力に名前 'control' を割り当てます。

    C.OutputName = 'control';

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

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

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

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

    出力チャネル単位。次のいずれかとして指定されます。

    • 文字ベクトル。

    • '' (単位を指定しない)。

    OutputUnit を使用して出力信号の単位を指定します。OutputUnit はシステムの動作に影響しません。

    たとえば、次のようにして、コントローラー モデル C の出力に単位 'volts' を割り当てます。

    C.OutputUnit = 'volts';

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

    既定では、OutputGroup はフィールドのない構造体です。

    システムに関連付けるユーザー指定のテキスト。文字ベクトルまたは文字ベクトルの cell 配列として指定します。たとえば、'System is MIMO' とします。

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

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

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

    SamplingGrid を使用して、モデル配列の各モデルに関連付けられている変数値を追跡します。これには同定された線形時不変 (IDLTI) モデル配列も含まれます。

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

    たとえば、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™ のコマンド linearize (Simulink Control Design) および slLinearizer (Simulink Control Design) により、SamplingGrid が自動的に入力されます。

    既定では、SamplingGrid はフィールドのない構造体です。

    オブジェクト関数

    以下のリストには、pidstd モデルで使用できる関数の代表的なサブセットが含まれています。一般に、動的システム モデルに適用できる関数はすべて、pidstd オブジェクトに適用できます。

    すべて展開する

    step動的システムのステップ応答
    impulse動的システムのインパルス応答プロット、インパルス応答データ
    lsim動的システムの任意の入力へのシミュレーションされた時間応答をプロットする。シミュレーションされた応答データ
    bode周波数応答、または振幅と位相データのボード線図
    nyquist周波数応答のナイキスト線図
    nichols周波数応答のニコルス線図
    bandwidth周波数応答帯域幅
    pole動的システムの極
    zeroSISO 動的システムの零点とゲイン
    pzplot追加のプロットのカスタマイズ オプションを使用した動的システム モデルの極-零点プロット
    marginゲイン余裕、位相余裕、および交差周波数
    zpk零点-極-ゲイン モデル
    ss状態空間モデル
    c2d連続時間から離散時間へモデルを変換
    d2c離散時間から連続時間へモデルを変換
    d2d離散時間モデルのリサンプリング
    feedback複数のモデルのフィードバック接続
    connect動的システムのブロック線図相互接続
    series2 つのモデルの直列接続
    parallel2 つのモデルの並列接続
    pidtune線形プラント モデルのための PID 調整アルゴリズム
    rlocus動的システムの根軌跡プロット
    pidstddata標準形式 PID コントローラーのアクセス係数
    make2DOF1-DOF PID コントローラーの 2-DOF コントローラーへの変換
    pidTunerPID 調整のための PID 調整器を開く
    tunablePID調整可能な PID コントローラー

    すべて折りたたむ

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

    Kp = 1;
    Ti = Inf;
    Td = 3;
    N = 6;
    C = pidstd(Kp,Ti,Td,N)
    C =
     
                          s      
      Kp * (1 + Td * ------------)
                      (Td/N)*s+1 
    
      with Kp = 1, Td = 3, N = 6
     
    Continuous-time PDF controller in standard form
    

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

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

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

    C2 = pidstd(1,0.5,'Ts',0.1,'IFormula','Trapezoidal') % Ts = 0.1s
    C2 =
     
                 1     Ts*(z+1)
      Kp * (1 + ---- * --------)
                 Ti    2*(z-1) 
    
      with Kp = 1, Ti = 0.5, Ts = 0.1
     
    Sample time: 0.1 seconds
    Discrete-time PI controller in standard form
    

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

    C2 = pidstd(5,2.4,0,Inf,0.1,'IFormula','Trapezoidal')
    C2 =
     
                 1     Ts*(z+1)
      Kp * (1 + ---- * --------)
                 Ti    2*(z-1) 
    
      with Kp = 5, Ti = 2.4, Ts = 0.1
     
    Sample time: 0.1 seconds
    Discrete-time PI controller in standard form
    

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

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

    C = pidstd(1,2,3,'InputName','e','OutputName','u')
    C =
     
                 1      1          
      Kp * (1 + ---- * --- + Td * s)
                 Ti     s          
    
      with Kp = 1, Ti = 2, Td = 3
     
    Continuous-time PID controller in standard form
    

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

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

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

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

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

    これらの配列を pidstd コマンドに渡すと、コマンドはコントローラーの配列を返します。

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

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

    PID コントローラーを作成します。

    C = pidstd(1,5,0.1)
    C =
     
                 1      1          
      Kp * (1 + ---- * --- + Td * s)
                 Ti     s          
    
      with Kp = 1, Ti = 5, Td = 0.1
     
    Continuous-time PID controller in standard form
    

    PIDF コントローラーを作成します。

    Cf = pidstd(1,5,0.1,0.5)
    Cf =
     
                 1      1              s      
      Kp * (1 + ---- * --- + Td * ------------)
                 Ti     s          (Td/N)*s+1 
    
      with Kp = 1, Ti = 5, Td = 0.1, N = 0.5
     
    Continuous-time PIDF controller in standard form
    

    コントローラーを 2 番目の配列次元に沿ってスタックします。

    pid_array = stack(2,C,Cf);

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

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

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

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

    並列 PID 形式では、コントローラーの動作が全体的な比例ゲイン、積分ゲイン、微分ゲイン (KpKiKd) と、フィルター時定数 Tf によって表されます。以下が該当する場合、pidstd コマンドを使用して、任意の並列形式コントローラーを標準形式に変換することができます。

    • 並列形式コントローラーが純積分器ではない。

    • ゲイン KpKi、および Kd がすべて同じ符号をもつ。

    たとえば、次の並列形式コントローラーを考えます。

    Kp = 2;
    Ki = 3;
    Kd = 4;
    Tf = 5;
    C_par = pid(Kp,Ki,Kd,Tf)
    C_par =
     
                 1            s    
      Kp + Ki * --- + Kd * --------
                 s          Tf*s+1 
    
      with Kp = 2, Ki = 3, Kd = 4, Tf = 5
     
    Continuous-time PIDF controller in parallel form.
    

    pidstd を使用して、このコントローラーを標準形式に変換します。

    C_std = pidstd(C_par)
    C_std =
     
                 1      1              s      
      Kp * (1 + ---- * --- + Td * ------------)
                 Ti     s          (Td/N)*s+1 
    
      with Kp = 2, Ti = 0.667, Td = 2, N = 0.4
     
    Continuous-time PIDF controller in standard form
    

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

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

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

    "H"zpk モデルを作成します。次に pidstd コマンドを使用して、PID ゲイン KpTiTd によって "H" を取得します。

    H = zpk([-1,-2],0,3);
    C = pidstd(H)
    C =
     
                 1      1          
      Kp * (1 + ---- * --- + Td * s)
                 Ti     s          
    
      with Kp = 9, Ti = 1.5, Td = 0.333
     
    Continuous-time PID controller in standard form
    

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

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

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

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

    C = pidstd(sys)
    C =
     
                 1       Ts                 1       
      Kp * (1 + ---- * ------ + Td * ---------------)
                 Ti      z-1         (Td/N)+Ts/(z-1)
    
      with Kp = 2.75, Ti = 0.0458, Td = 0.00758, N = 0.0909, Ts = 0.1
     
    Sample time: 0.1 seconds
    Discrete-time PIDF controller in standard form
    

    この特定の動的システムでは、微分フィルターに BackwardEuler 式を使用して sys を標準 PID 形式で記述することはできません。これを行うと、N < 0 となりますが、これは許可されません。この場合、pidstd はエラーを返します。

    同様に、Trapezoidal 式を使用して sys を標準 PID 形式で記述することはできません。これを行うと、TiTd が負となりますが、これも許可されません。

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

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

    Ccon = pidstd(1,2,3,4);
    Cdis1 = c2d(Ccon,0.1,'zoh')
    Cdis1 =
     
                 1       Ts                 1       
      Kp * (1 + ---- * ------ + Td * ---------------)
                 Ti      z-1         (Td/N)+Ts/(z-1)
    
      with Kp = 1, Ti = 2, Td = 3.2, N = 4, Ts = 0.1
     
    Sample time: 0.1 seconds
    Discrete-time PIDF controller in standard 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 =
     
                 1      Ts*z                 1        
      Kp * (1 + ---- * ------ + Td * -----------------)
                 Ti      z-1         (Td/N)+Ts*z/(z-1)
    
      with Kp = 1, Ti = 2, Td = 3, N = 4, Ts = 0.1
     
    Sample time: 0.1 seconds
    Discrete-time PIDF controller in standard form
    

    バージョン履歴

    R2010b で導入