pidstd
標準形式の PID コントローラー
説明
標準形式 PID コントローラー オブジェクトを作成したり、動的システム モデルを標準 PID コントローラー形式に変換するには、pidstd
を使用します。
pidstd
コントローラー モデル オブジェクトは、標準形式 PID コントローラーを連続時間または離散時間で表現できます。
連続時間 —
離散時間 —
ここで
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 コントローラーを対話的に調整する:
[PID コントローラーの調整] ライブ エディター タスク。
PID 調整器アプリ。
構文
説明
入力引数
Kp
— 比例ゲイン
1
(既定値) | スカラー | ベクトル | 行列 | realp
オブジェクト | genmat
オブジェクト | tunableSurface
オブジェクト
比例ゲイン。有限の実数値または調整可能なオブジェクトとして指定します。
pidstd
コントローラー オブジェクトを作成するには、有限の実数スカラー値を使用します。pidstd
コントローラー オブジェクトの配列を作成するには、有限の実数値の配列を使用します。調整可能なコントローラー モデルを作成するには、調整可能なパラメーター (
realp
) または一般化行列 (genmat
) を使用します。調整可能なゲインスケジュール コントローラー モデルを作成するには、
tunableSurface
を使用して作成された調整可能な曲面を使用します。
Ti
— 積分時間
Inf
(既定値) | スカラー | ベクトル | 行列 | realp
オブジェクト | genmat
オブジェクト | tunableSurface
オブジェクト
積分時間。正の実数値または調整可能なオブジェクトとして指定します。
pidstd
コントローラー オブジェクトを作成するには、正の実数スカラー値を使用します。pidstd
コントローラー オブジェクトの配列を作成するには、正の実数値の配列を使用します。調整可能なコントローラー モデルを作成するには、調整可能なパラメーター (
realp
) または一般化行列 (genmat
) を使用します。調整可能なゲインスケジュール コントローラー モデルを作成するには、
tunableSurface
を使用して作成された調整可能な曲面を使用します。
Td
— 微分時間
0
(既定値) | スカラー | ベクトル | 行列 | realp
オブジェクト | genmat
オブジェクト | tunableSurface
オブジェクト
微分時間。有限の非負の実数値または調整可能なオブジェクトとして指定します。
pidstd
コントローラー オブジェクトを作成するには、有限の非負の実数スカラー値を使用します。pidstd
コントローラー オブジェクトの配列を作成するには、有限の非負の実数値の配列を使用します。調整可能なコントローラー モデルを作成するには、調整可能なパラメーター (
realp
) または一般化行列 (genmat
) を使用します。調整可能なゲインスケジュール コントローラー モデルを作成するには、
tunableSurface
を使用して作成された調整可能な曲面を使用します。
N
— 微分フィルター除数
Inf
(既定値) | スカラー | ベクトル | 行列 | realp
オブジェクト | genmat
オブジェクト | tunableSurface
オブジェクト
1 次微分フィルター除数。正の実数値または調整可能なオブジェクトとして指定します。
pidstd
コントローラー オブジェクトを作成するには、正の実数スカラー値を使用します。pidstd
コントローラー オブジェクトの配列を作成するには、正の実数値の配列を使用します。調整可能なコントローラー モデルを作成するには、調整可能なパラメーター (
realp
) または一般化行列 (genmat
) を使用します。調整可能なゲインスケジュール コントローラー モデルを作成するには、
tunableSurface
を使用して作成された調整可能な曲面を使用します。
N
= Inf
の場合、コントローラーには微分動作に対するフィルターがありません。
Ts
— サンプル時間
0
(既定値) | 正のスカラー
サンプル時間。以下として指定します。
0
(連続時間システムの場合)。離散時間システムのサンプリング周期を表す正のスカラー。
Ts
はTimeUnit
プロパティによって指定される時間単位で指定します。
pidstd
コントローラーの配列では、すべてのコントローラーに同じ Ts
が適用されます。
PID コントローラー モデルは未指定のサンプル時間 (Ts = -1
) をサポートしません。
メモ
Ts
を変更してもモデルの離散化やリサンプリングは行われません。連続時間表現と離散時間表現の間の変換を行うには、c2d
と d2c
を使用します。離散時間システムのサンプル時間を変更するには、d2d
を使用します。
離散化されたコントローラーの離散積分器の式は、次の表に示すように、使用する c2d
離散化手法に依存します。
c2d 離散化手法 | IFormula | DFormula |
---|---|---|
'zoh' | ForwardEuler | ForwardEuler |
'foh' | Trapezoidal | Trapezoidal |
'tustin' | Trapezoidal | Trapezoidal |
'impulse' | ForwardEuler | ForwardEuler |
'matched' | ForwardEuler | ForwardEuler |
c2d
離散化手法の詳細については、c2d
を参照してください。
他の離散積分器の式が必要な場合は、Ts
、IFormula
、および DFormula
を目標値に直接設定してコントローラーを離散化することができます。ただし、この方法では離散化されたコントローラーの新しいゲインとフィルター定数値は計算されません。したがって、この方法で得られる連続時間 PID コントローラーと離散時間 PID コントローラー間の一致は、c2d
を使用する場合より劣っている可能性があります。
sys
— 動的システム
動的システム モデル | モデル配列
動的システム。SISO 動的システム モデル、または SISO 動的システム モデルの配列として指定します。使用できる動的システムには次のようなものがあります。
genss
やuss
(Robust Control Toolbox) モデルなどの一般化された、あるいは不確かさをもつ LTI モデル。結果の PID コントローラーでは以下が想定されます。
調整可能な制御設計ブロックについては調整可能なコンポーネントの現在値。
不確かさをもつ制御設計ブロックについてはモデルのノミナル値。
idtf
(System Identification Toolbox)、idss
(System Identification Toolbox)、idproc
(System Identification Toolbox)、idpoly
(System Identification Toolbox)、idgrey
(System Identification Toolbox) モデルなどの、同定された LTI モデル。
出力引数
C
— 標準形式 PID コントローラー モデル
pidstd
モデル オブジェクト | genss
モデル オブジェクト | uss
モデル オブジェクト
PID コントローラー モデル。以下として返されます。
すべてのゲインが数値をもつ場合は、標準形式 PID コントローラー (
pidstd
) モデル オブジェクト。ゲインが数値配列の場合、C
はpidstd
コントローラー オブジェクトの配列です。入力引数
numerator
またはdenominator
にrealp
パラメーターまたは一般化行列 (genmat
) などの調整可能なパラメーターが含まれる場合は、一般化状態空間モデル (genss
) オブジェクト。入力引数
numerator
またはdenominator
に不確かさをもつパラメーターが含まれる場合は、不確かさをもつ状態空間モデル (uss
) オブジェクト。不確かさをもつモデルを使用するには Robust Control Toolbox™ ソフトウェアが必要です。
プロパティ
Kp, Ti, Td, N
— PID コントローラーの係数
スカラー
PID コントローラーの係数。スカラーとして指定します。pidstd
コントローラー オブジェクトまたはオブジェクトの配列を作成するときは、これらの係数を入力引数 Kp
、Ti
、Td
、および N
で指定します。
IFormula
— 離散時間コントローラーで積分を計算する手法
'ForwardEuler'
(既定値) | 'BackwardEuler'
| 'Trapezoidal'
離散時間 pidstd
コントローラーの積分器に使用する離散積分器の式 IF(z):
IFormula
を以下のいずれかとして指定します。
'ForwardEuler'
— IF(z) =この方程式は、コントローラーの帯域幅と比較してナイキスト制限が大きくなるような、小さいサンプル時間に最適です。大きいサンプル時間で
ForwardEuler
式を使用すると、連続時間で安定しているシステムを離散化する場合でも不安定となることがあります。'BackwardEuler'
— IF(z) =BackwardEuler
式の利点は、この式を使用して安定した連続時間システムを離散化すると、常に安定した離散時間結果が得られることです。'Trapezoidal'
— IF(z) =Trapezoidal
式の利点は、この式を使用して安定した連続時間システムを離散化すると、常に安定した離散時間結果が得られることです。使用可能なすべての積分式の中で、離散システムと対応する連続時間システムの周波数領域プロパティが最も近くなるのはTrapezoidal
式です。
C
が連続時間コントローラーの場合、IFormula
は ''
です。
DFormula
— 離散時間コントローラーで微分を計算する手法
'ForwardEuler'
(既定値) | 'BackwardEuler'
| 'Trapezoidal'
離散時間 pidstd
コントローラーの微分フィルターに使用する離散積分器の式 DF(z):
DFormula
を以下のいずれかとして指定します。
'ForwardEuler'
— DF(z) =この方程式は、コントローラーの帯域幅と比較してナイキスト制限が大きくなるような、小さいサンプル時間に最適です。大きいサンプル時間で
ForwardEuler
式を使用すると、連続時間で安定しているシステムを離散化する場合でも不安定となることがあります。'BackwardEuler'
— DF(z) =BackwardEuler
式の利点は、この式を使用して安定した連続時間システムを離散化すると、常に安定した離散時間結果が得られることです。'Trapezoidal'
— DF(z) =Trapezoidal
式の利点は、この式を使用して安定した連続時間システムを離散化すると、常に安定した離散時間結果が得られることです。使用可能なすべての積分式の中で、離散システムと対応する連続時間システムの周波数領域プロパティが最も近くなるのはTrapezoidal
式です。
DFormula
の Trapezoidal
値は、微分フィルターのない pidstd
コントローラー (N = Inf
) には利用できません。
C
が連続時間コントローラーの場合、DFormula
は ''
です。
InputDelay
— 入力遅延
0 (既定値)
この プロパティ は読み取り専用です。
システム入力のむだ時間。InputDelay
は pidstd
コントローラー オブジェクトに対しては常に 0 です。
OutputDelay
— 出力遅延
0 (既定値)
この プロパティ は読み取り専用です。
システム出力のむだ時間。OutputDelay
は pidstd
コントローラー オブジェクトに対しては常に 0 です。
Ts
— サンプル時間
0
(既定値) | 正のスカラー
サンプル時間。以下として指定します。
0
(連続時間システムの場合)。離散時間システムのサンプリング周期を表す正のスカラー。
Ts
はTimeUnit
プロパティで指定された時間単位で指定します。
pidstd
が PID コントローラーの配列である場合、すべてのコントローラーに同じ Ts
が適用されます。
TimeUnit
— 時間変数の単位
'seconds'
(既定値) | 'nanoseconds'
| 'microseconds'
| 'milliseconds'
| 'minutes'
| 'hours'
| 'days'
| 'weeks'
| 'months'
| 'years'
| ...
時間変数の単位。次のいずれかとして指定します。
'nanoseconds'
'microseconds'
'milliseconds'
'seconds'
'minutes'
'hours'
'days'
'weeks'
'months'
'years'
TimeUnit
の変更は他のプロパティには影響しませんが、システム全体の動作が変わります。chgTimeUnit
を使用して、システム動作を変更せずに時間単位を変換します。
InputName
— 入力チャネル名
''
(既定値) | 文字ベクトル
入力チャネル名。次のいずれかとして指定します。
文字ベクトル
''
(名前を指定しない)
あるいは、次のようにして、コントローラー モデル C
の入力に名前 error
を割り当てます。
C.InputName = 'error';
省略形表記 u
を使用して、InputName
プロパティを参照できます。たとえば、C.u
は C.InputName
と同じです。
InputName
の使用目的は次のとおりです。
モデル表示とプロット上のチャネルの識別
モデル相互接続時における接続点の指定
InputUnit
— 入力チャネル単位
''
(既定値) | 文字ベクトル
入力チャネル単位。以下のいずれかとして指定します。
文字ベクトル。
''
(単位を指定しない)。
InputUnit
を使用して入力信号の単位を指定します。InputUnit
はシステムの動作に影響しません。
たとえば、次のようにして、コントローラー モデル C
の入力に濃度単位 'mol/m^3'
を割り当てます。
C.InputUnit = 'mol/m^3';
InputGroup
— 入力チャネル グループ
構造体
入力チャネル グループ。このプロパティは PID コントローラー モデルには必要ありません。
既定では、InputGroup
はフィールドのない構造体です。
OutputName
— 出力チャネル名
''
(既定値) | 文字ベクトル
出力チャネル名。次のいずれかとして指定します。
文字ベクトル。
''
(名前を指定しない)。
たとえば、次のようにして、コントローラー モデル C
の出力に名前 'control'
を割り当てます。
C.OutputName = 'control';
省略形表記 y
を使用して OutputName
プロパティを参照することもできます。たとえば、C.y
は C.OutputName
と同じです。
OutputName
の使用目的は次のとおりです。
モデル表示とプロット上のチャネルの識別
モデル相互接続時における接続点の指定
OutputUnit
— 出力チャネル単位
''
(既定値) | 文字ベクトル
出力チャネル単位。次のいずれかとして指定されます。
文字ベクトル。
''
(単位を指定しない)。
OutputUnit
を使用して出力信号の単位を指定します。OutputUnit
はシステムの動作に影響しません。
たとえば、次のようにして、コントローラー モデル C
の出力に単位 'volts'
を割り当てます。
C.OutputUnit = 'volts';
OutputGroup
— 出力チャネル グループ
構造体
出力チャネル グループ。このプロパティは PID コントローラー モデルには必要ありません。
既定では、OutputGroup
はフィールドのない構造体です。
Notes
— ユーザー指定のテキスト
{}
(既定値) | 文字ベクトル | 文字ベクトルの cell 配列
システムに関連付けるユーザー指定のテキスト。文字ベクトルまたは文字ベクトルの cell 配列として指定します。たとえば、'System is MIMO'
とします。
UserData
— ユーザー指定のデータ
[]
(既定値) | 任意の MATLAB® データ型
システムに関連付けるユーザー指定のデータ。任意の MATLAB データ型として指定します。
Name
— システム名
''
(既定値) | 文字ベクトル
システム名。文字ベクトルとして指定します。たとえば、'system_1'
とします。
SamplingGrid
— モデル配列のサンプリング グリッド
構造体配列
モデル配列のサンプリング グリッド。構造体配列として指定します。
SamplingGrid
を使用して、モデル配列の各モデルに関連付けられている変数値を追跡します。これには同定された線形時不変 (IDLTI) モデル配列も含まれます。
構造体のフィールド名をサンプリング変数の名前に設定します。フィールドの値を、配列内の各モデルに関連付けられているサンプリングされた変数の値に設定します。すべてのサンプリング変数は数値スカラーでなければならず、サンプル値のすべての配列はモデル配列の次元と一致しなければなりません。
たとえば、t = 0:10
の各時点で線形時変システムのスナップショットを記録することにより、線形モデルの 11 行 1 列の配列 sysarr
を作成することができます。次のコードは線形モデルでの時間サンプルを格納します。
sysarr.SamplingGrid = struct('time',0:10)
同様に、2 つの変数 zeta
と w
を個別にサンプリングすることにより、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
を表示する際、配列の各エントリは対応する zeta
と w
の値を取り込みます。
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
オブジェクトに適用できます。
線形解析
安定性解析
例
連続時間標準形式 PDF コントローラーの作成
比例項、微分項、およびフィルター除数をもつ、連続時間標準形式 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 コントローラーを作成します。
離散時間 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 パラメーター Kp
、Ti
、Td
、N
のすべての後に 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
表示には、C1
と C2
が同じであることが示されます。
名前の付いた入力と出力をもつ標準形式 PID コントローラー
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'}
標準形式 PID コントローラーの配列
配列の行については 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 コントローラーはすべて、同じサンプル時間、離散積分器の式、および動的システムのプロパティ (InputName
、OutputName
など) をもっていなければなりません。
PID コントローラーの並列形式から標準形式への変換
並列形式 pid
コントローラーを標準形式に変換します。
並列 PID 形式では、コントローラーの動作が全体的な比例ゲイン、積分ゲイン、微分ゲイン (Kp
、Ki
、Kd
) と、フィルター時定数 Tf
によって表されます。以下が該当する場合、pidstd
コマンドを使用して、任意の並列形式コントローラーを標準形式に変換することができます。
並列形式コントローラーが純積分器ではない。
ゲイン
Kp
、Ki
、および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 コントローラーへの変換
PID コントローラーを表す連続時間動的システムを、標準 pidstd
形式に変換します。
次の動的システムには積分器と 2 つの 0 があり、PID コントローラーと等価です。
"H" の zpk
モデルを作成します。次に pidstd
コマンドを使用して、PID ゲイン Kp
、Ti
、Td
によって "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 コントローラーへの変換
微分フィルターをもつ 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 形式で記述することはできません。これを行うと、Ti
と Td
が負となりますが、これも許可されません。
連続時間標準形式 PID コントローラーの離散化
連続時間 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
メソッドでは、IFormula
と DFormula
のどちらも ForwardEuler
です。
Cdis1.IFormula
ans = 'ForwardEuler'
Cdis1.DFormula
ans = 'ForwardEuler'
c2d
によって返された式の中から異なるものを複数使用する場合、コントローラーの Ts
、IFormula
、および 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 で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)