Main Content

tunablePID

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

説明

調整可能な 1 自由度の PID コントローラーを作成するためのモデル オブジェクト。

tunablePID では、パラメーターの調査や、systunelooptune などの調整コマンド、Robust Control Toolbox™ コマンド hinfstruct (Robust Control Toolbox) を使用した自動調整用に、調整可能な 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 の初期値を設定します。

入力引数

すべて展開する

PID コントローラーの名前。'C' または 'PI1' などの文字ベクトルとして指定します。プロパティを参照してください。

PID コントローラーの名前。'P''PI''PD'、または 'PID' として指定します。コントローラーのタイプを指定することで、最大 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 は自由です。

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

PID コントローラーを表すシステム。動的システム モデル オブジェクトとして指定します。動的システム モデルを参照してください。

プロパティ

すべて展開する

調整可能な PID コントローラー blk の PID ゲイン KpKiKd とフィルター時定数 Tf のパラメーター表現。param.Continuous オブジェクトとして格納されます。これらの param.Continuous オブジェクトのプロパティに関する一般的な情報は、param.Continuous (Simulink Design Optimization) オブジェクトのリファレンス ページを参照してください。

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 を超えないようになります。

それぞれ積分項と微分項に対する離散積分器の式 IF(z) と DF(z)。'ForwardEuler''BackwardEuler'、または 'Trapezoidal' として格納されます。

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

Tsz1

'BackwardEuler'

Tszz1

'Trapezoidal'

Ts2z+1z1

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

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

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

  • 'nanoseconds'

  • 'microseconds'

  • 'milliseconds'

  • 'seconds'

  • 'minutes'

  • 'hours'

  • 'days'

  • 'weeks'

  • 'months'

  • 'years'

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

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

C.InputName = 'error';

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

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

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

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

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

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

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

入力チャネル グループ。フィールドのない struct として格納されます。このプロパティは PID コントローラー モデルには必要ありません。

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

C.OutputName = 'control';

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

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

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

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

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

C.OutputUnit = 'Volts';

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

出力チャネル グループ。フィールドのない struct として格納されます。このプロパティは PID コントローラー モデルには必要ありません。

システム名。文字ベクトルとして格納されます。たとえば、'system_1' とします。

システムに関連付けるテキスト。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.'

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

オブジェクト関数

systuneMATLAB でモデル化された固定構造制御システムの調整
looptune固定構造フィードバック ループの調整
genss一般化状態空間モデル
hinfstruct (Robust Control Toolbox)H tuning of fixed-structure controllers

すべて折りたたむ

調整可能な 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
Tunable 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.

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

C = pid(5,2.2,'Ts',0.1,'IFormula','BackwardEuler');
blk = tunablePID('piblock',C)
Tunable 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.

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

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

blk = tunablePID('pidblock','pid')   
Tunable continuous-time PID controller "pidblock" with formula:

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

and tunable parameters Kp, Ki, Kd, Tf.

Type "pid(blk)" to see the current value.
blk.InputName = {'error'}       % assign input name
Tunable continuous-time PID controller "pidblock" with formula:

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

and tunable parameters Kp, Ki, Kd, Tf.

Type "pid(blk)" to see the current value.
blk.OutputName = {'control'}    % assign output name
Tunable continuous-time PID controller "pidblock" with formula:

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

and tunable parameters Kp, Ki, Kd, Tf.

Type "pid(blk)" to see the current value.

ヒント

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

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

バージョン履歴

R2016a で導入

すべて展開する