Main Content

tunablePID2

調整可能な 2 自由度の PID コントローラー

説明

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

tunablePID2 では、調整可能な 2 自由度の SISO PID コントローラーをパラメーター化できます。このパラメーター化されたコントローラーは、パラメーターの調査や、systunelooptune などの調整コマンド、Robust Control Toolbox™ コマンド hinfstruct による自動調整に使用できます。

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

作成

説明

blk = tunablePID2(name,type) は、次の方程式で記述される 2 自由度の連続時間 PID コントローラーを作成します。

u=Kp(bry)+Kis(ry)+Kds1+Tfs(cry).

次の図で示すように、r は設定点コマンド、y はその設定点に対する測定された応答、u は制御信号です。

ブロックの調整可能なパラメーターは次のとおりです。

  • スカラー ゲイン KpKi および Kd

  • フィルター時定数 Tf

  • スカラーの重み b および c

type 引数はこれらの値のいくつかを 0 に固定することによってコントローラーのタイプを設定します。

blk = tunablePID2(name,type,Ts) は、サンプル時間 Ts をもつ離散時間 PID コントローラーを作成します。このコントローラーは次の方程式で記述されます。

u=Kp(bry)+KiIF(z)(ry)+KdTf+DF(z)(cry).

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

blk = tunablePID2(name,sys) は、動的システム モデル sys を使用して、サンプル時間 Ts およびすべての調整可能なパラメーターの初期値を設定します。モデル sys は、2 自由度の PID コントローラーの方程式に対応していなければなりません。

入力引数

すべて展開する

PID コントローラー Name'C' または '2DOFPID1' などの文字ベクトルとして指定します

データ型: char

コントローラーのタイプ。次の表のいずれかの値として指定します。コントローラーのタイプを指定することで、最大 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 は自由です。

データ型: char

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

データ型: double

2 自由度の PID コントローラーを表す動的システム モデル

データ型: double

プロパティ

すべて展開する

PID ゲイン KpKiKd のパラメーター化、フィルター時定数 Tf、スカラー ゲイン bc

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

フィールド説明
Valueパラメーターの現在の値です。blk.b.Value および blk.c.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.c.Maximum = 1 と設定すると c が 1 を超えないようになります。

blk.Kpblk.Kiblk.Kdblk.Tfblk.b および blk.cparam.Continuous オブジェクトです。これらの param.Continuous オブジェクトのプロパティの詳細については、param.Continuous (Simulink Design Optimization) オブジェクトのリファレンス ページを参照してください。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string | struct | table | cell | function_handle | categorical | datetime | duration | calendarDuration | fi
複素数のサポート: あり

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

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

Tsz1

'BackwardEuler'

Tszz1

'Trapezoidal'

Ts2z+1z1

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string | struct | table | cell | function_handle | categorical | datetime | duration | calendarDuration | fi

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

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

データ型: double

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

  • 'nanoseconds'

  • 'microseconds'

  • 'milliseconds'

  • 'seconds'

  • 'minutes'

  • 'hours'

  • 'days'

  • 'weeks'

  • 'months'

  • 'years'

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

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

C.InputName = {'setpoint';'measurement'};

または、自動的なベクトル拡張を使用して両方の入力名を割り当てます。以下に例を示します。

C.InputName = 'C-input';

入力名は自動的に {'C-input(1)';'C-input(2)'} へと拡張されます。

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

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

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

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

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

C.InputUnit = {'Volts';'mol/m^3'};

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

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

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

C.OutputName = 'control';

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

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

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

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

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

C.OutputUnit = 'Volts';

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

出力チャネル グループ。このプロパティは 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 データ型として指定します。

オブジェクト関数

固定パラメーターをもつ調整可能な 2 自由度のコントローラー

固定パラメーターをもつ調整可能な 2 自由度のコントローラー

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

blk = tunablePID2('pdblock','PD');
blk.b.Value = 1;
blk.c.Value = 0.5;
blk.Tf.Value = 0.01;
blk.Tf.Free = false;
blk
blk =

  Parametric continuous-time 2-DOF PID controller "pdblock" with equation:

                         s    
  u = Kp (b*r-y) + Kd -------- (c*r-y)
                       Tf*s+1 

  where r,y are the controller inputs and Kp, Kd, b, c are tunable gains.

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

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

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

調整可能な 2 自由度の PI コントローラーを作成します。2 入力 1 出力の tf モデルを使用して、パラメーターと他のプロパティを初期化します。

s = tf('s');
Kp = 10;
Ki = 0.1;
b = 0.7;
sys = [(b*Kp + Ki/s), (-Kp - Ki/s)];
blk = tunablePID2('PI2dof',sys)
blk =

  Parametric continuous-time 2-DOF PID controller "PI2dof" with equation:

                       1 
  u = Kp (b*r-y) + Ki --- (r-y)
                       s 

  where r,y are the controller inputs and Kp, Ki, b are tunable gains.

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

blksys から初期パラメーター値を取得します。

sys が離散時間システムの場合、blkTsIFormula などのプロパティの値を sys から取得します。

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

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

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

blk = tunablePID2('pidblock','pid');   
blk.InputName = {'reference','measurement'};     
blk.OutputName = {'control'};

2 自由度の PID コントローラーには 2 つの入力があるため、blk.InputName は 2 つの名前を含む cell 配列です。

ヒント

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

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

バージョン履歴

R2016a で導入

すべて展開する