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

tunablePID

調整可能な PID コントローラー

構文

blk = tunablePID(name,type)
blk = tunablePID(name,type,Ts)
blk = tunablePID(name,sys)

説明

調整可能な 1 自由度の PID コントローラーを作成するためのモデル オブジェクト。tunablePID では、パラメーターの調査や、systunelooptune などの調整コマンド、Robust Control Toolbox™ コマンド hinfstruct を使用した自動調整用に、調整可能な SISO PID コントローラーをパラメーター化できます。

tunablePID はパラメトリックな制御設計ブロック ファミリの一部です。他のパラメトリックな制御設計ブロックには、tunableGaintunableSS および tunableTF があります。

構築

blk = tunablePID(name,type) は、次のように 1 自由度の連続時間 PID コントローラーを作成します。

blk=Kp+Kis+Kds1+Tfs,

このとき、調整可能なパラメーターは KpKiKd、および Tf です。type 引数はこれらの値のいくつかを 0 に固定することによってコントローラーのタイプを設定します (入力引数を参照)。

blk = tunablePID(name,type,Ts) は、サンプル時間 Ts をもつ離散時間 PID コントローラーを作成します。

blk=Kp+KiIF(z)+KdTf+DF(z),

ここで、IF(z) と DF(z) は、それぞれ、積分項と微分項のための離散積分器の式です。IFormulaDFormula のプロパティの値が離散積分器の式を設定します (プロパティを参照)。

blk = tunablePID(name,sys) は動的システム モデル sys を使用して、サンプル時間 Ts と、パラメーター KpKiKdTf の初期値を設定します。

入力引数

name

PID コントローラー Name'C' または 'PI1' などの文字ベクトルとして指定します (プロパティを参照)。

type

コントローラーのタイプ。次の表のいずれかの値として指定します。コントローラーのタイプを指定することで、最大 3 つの PID コントローラー パラメーターを固定します。

type の値コントローラーのタイプPID パラメーターへの影響
'P'比例のみKi および Kd は 0 に固定され、Tf は 1 に固定されます。Kp は自由です。
'PI'比例-積分Kd は 0 に固定され、Tf は 1 に固定されます。Kp および Ki は自由です。
'PD'微分動作の 1 次フィルターをもつ比例-微分Ki は 0 に固定されます。KpKd および Tf は自由です。
'PID'微分動作の 1 次フィルターをもつ比例-積分-微分KpKiKd および Tf は自由です。

Ts

スカラーとして指定されたサンプル時間。

sys

PID コントローラーを表す動的システム モデル。

プロパティ

Kp, Ki, Kd, Tf

PID ゲイン KpKiKd のパラメーター化と、調整可能な PID コントローラー blk のフィルター時間定数 Tf

blk.Kpblk.Kiblk.Kd および blk.Tf の以下のフィールドは、systune などの調整コマンドを使用して blk を調整するときに使用されます。

フィールド説明
Valueパラメーターの現在の値です。
Free

パラメーターが固定か調整可能かを決定する論理値。たとえば、以下のようになります。

  • blk.Kp.Free = 1 である場合、blk.Kp.Value は調整可能です。

  • blk.Kp.Free = 0 の場合、blk.Kp.Value は固定されます。

Minimum

パラメーターの最小値。このプロパティは、パラメーターの調整された値に下限を設定します。たとえば、blk.Kp.Minimum = 0 と設定すると、Kp は必ず正になります。

blk.Tf.Minimum は常に正でなければなりません。

Maximumパラメーターの最大値。このプロパティは、パラメーターの調整された値に上限を設定します。たとえば、blk.Tf.Maximum = 100 と設定すると、フィルターの時定数が 100 を超えないようになります。

blk.Kpblk.Kiblk.Kd、および blk.Tfparam.Continuous オブジェクトです。これらの param.Continuous オブジェクトに関する一般的な情報は、param.Continuous オブジェクトのリファレンス ページを参照してください。

IFormula, DFormula

積分項と微分項それぞれに対する離散積分器の式 IF(z) と DF(z)。次の表のいずれかの値として指定します。

IF(z) または DF(z) 式
'ForwardEuler'

Tsz1

'BackwardEuler'

Tszz1

'Trapezoidal'

Ts2z+1z1

既定値: 'ForwardEuler'

Ts

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

このプロパティを変更してもモデルの離散化やリサンプリングは行われません。

既定値: 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® データ型として指定します。

既定値: []

固定パラメーターをもつ調整可能なコントローラー

調整可能な PD コントローラーを作成します。次に、パラメーター値を初期化してフィルターの時定数を固定します。

blk = tunablePID('pdblock','PD');
blk.Kp.Value = 4;        % initialize Kp to 4
blk.Kd.Value = 0.7;      % initialize Kd to 0.7
blk.Tf.Value = 0.01;     % set parameter Tf to 0.01
blk.Tf.Free = false;     % fix parameter Tf to this value
blk
blk =

  Parametric continuous-time PID controller "pdblock" with formula:

               s    
  Kp + Kd * --------
             Tf*s+1 

  and tunable parameters Kp, Kd.

Type "pid(blk)" to see the current value and "get(blk)" to see all properties.

動的システム モデルで初期化したコントローラー

調整可能な離散時間 PI コントローラーを作成します。pid オブジェクトを使用してパラメーターと他のプロパティを初期化します。

C = pid(5,2.2,'Ts',0.1,'IFormula','BackwardEuler');
blk = tunablePID('piblock',C)
blk =

  Parametric discrete-time PID controller "piblock" with formula:

             Ts*z 
  Kp + Ki * ------
              z-1 

  and tunable parameters Kp, Ki.

Type "pid(blk)" to see the current value and "get(blk)" to see all properties.

blk は、TsIFormula などのプロパティの値を C から取得します。

名前の付いた入力と出力をもつコントローラー

調整可能な PID コントローラーを作成して、名前を入力と出力に割り当てます。

blk = tunablePID('pidblock','pid')   
blk.InputName = {'error'}       % assign input name
blk.OutputName = {'control'}    % assign output name

ヒント

  • パラメーター KpKiKd、および Tf のいずれかを固定または自由にすることで、PID 構造を変更できます。たとえば、blk.Tf.Free = falseTf をその現在の値に固定します。

  • tunablePID パラメトリック モデルを数値 (調整不可) モデル オブジェクトに変換するには、pidpidstdtfss などのモデル コマンドを使用します。また、getValue を使用して調整可能なモデルの現在値を取得することもできます。

互換性についての考慮事項

すべて展開する

R2016a での動作変更

R2016a で導入