ドキュメンテーション センター

  • 評価版
  • 製品アップデート

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

ltiblock.pid2

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

構文

blk = ltiblock.pid2(name,type)
blk = ltiblock.pid2(name,type,Ts)
blk = ltiblock.pid2(name,sys)

説明

調整可能な 2 自由度の PID コントローラーを作成するためのモデル オブジェクト。ltiblock.pid2 では、調整可能な 2 自由度の SISO PID コントローラーをパラメーター化できます。このパラメーター化されたコントローラーは、パラメーターの調査や、systunelooptunehinfstruct などの Robust Control Toolbox™ 調整コマンドによる自動調整に使用できます。

ltiblock.pid2 はパラメトリックな「Control Design ブロック」ファミリの一部です。他のパラメトリックな Control Design ブロックには、ltiblock.gainltiblock.ss および ltiblock.tf があります。

構築

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

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

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

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

  • フィルター時定数 Tf

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

文字列 type はこれらの値のいくつかを 0 に固定することによってコントローラー タイプを設定します (「入力引数」を参照)。

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

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

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

入力引数

name

文字列として指定された PID コントローラー Name (「プロパティ」を参照)。

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

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

プロパティ

Kp,Ki,Kd,Tf,b,c

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 オブジェクトのリファレンス ページを参照してください。

IFormula, DFormula

積分項と微分項に対してそれぞれ離散積分器の方程式 IF(z) と DF(z) を設定する文字列。IFormulaDFormula は次の値になることができます。

文字列IF(z) または DF(z) 式
'ForwardEuler'

'BackwardEuler'

'Trapezoidal'

既定値: 'ForwardEuler'

Ts

サンプリング時間。連続時間モデルの場合、Ts = 0。離散時間モデルの場合、Ts はサンプリング周期を表す正のスカラーです。この値は、モデルの TimeUnit プロパティで指定される単位で表されます。指定のないサンプリング時間を伴う離散時間モデルを示すには、Ts = -1 と設定します。

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

既定値: 0 (連続時間)

TimeUnit

時間変数の単位を表す文字列。連続時間モデルの場合、このプロパティはモデルにおける任意のむだ時間を表します。離散時間モデルの場合はサンプリング時間 Ts を表します。以下のいずれかの値を使用します。

  • 'nanoseconds'

  • 'microseconds'

  • 'milliseconds'

  • 'seconds'

  • 'minutes'

  • 'hours'

  • 'days'

  • 'weeks'

  • 'months'

  • 'years'

このプロパティを変更すると、システム全体の動作が変更されます。chgTimeUnit を使用して、システム動作を変更せずに時間単位を変換します。

既定値: 'seconds'

InputName

入力チャンネル名。単入力モデルでは、InputName を文字列に設定します。多入力モデルの場合は、InputName を文字列のセル配列に設定します。

または、自動的なベクトル拡張を使用して多入力モデルの入力名を割り当てます。たとえば、sys が 2 入力モデルである場合は、以下のようになります。

sys.InputName = 'controls';

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

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

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

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

  • MIMO システムのサブシステムの抽出

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

既定値: すべての入力チャンネルに対して空の文字列 ''

InputUnit

入力チャンネル単位。InputUnit を使用して入力信号単位を記録します。単入力モデルの場合、InputUnit を文字列に設定します。多入力モデルの場合は、InputUnit を文字列のセル配列に設定します。InputUnit はシステム動作には影響しません。

既定値: すべての入力チャンネルに対して空の文字列 ''

InputGroup

入力チャンネル グループ。InputGroup プロパティによって、MIMO システムの入力チャンネルをグループに割り当て、各グループを名前で参照することができます。入力グループを構造体として指定します。この構造体においてフィールド名はグループ名であり、フィールド値は各グループに属する入力チャンネルです。以下に例を示します。

sys.InputGroup.controls = [1 2];
sys.InputGroup.noise = [3 5];

これは、入力チャンネル 1、2 および 3、5 をそれぞれ含む controls および noise という名前の入力グループを作成します。その後、以下を使用して controls 入力からすべての出力にサブシステムを抽出できます。

sys(:,'controls')

既定値: フィールドのない構造体

OutputName

出力チャンネル名。単出力モデルでは、OutputName を文字列に設定します。多出力モデルの場合は、OutputName を文字列のセル配列に設定します。

または、自動的なベクトル拡張を使用して多出力モデルの出力名を割り当てます。たとえば、sys が 2 出力力モデルである場合は、以下のようになります。

sys.OutputName = 'measurements';

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

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

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

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

  • MIMO システムのサブシステムの抽出

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

既定値: すべての入力チャンネルに対して空の文字列 ''

OutputUnit

出力チャンネル単位。OutputUnit を使用して出力信号単位を記録します。単出力モデルの場合、OutputUnit を文字列に設定します。多出力モデルの場合は、OutputUnit を文字列のセル配列に設定します。OutputUnit はシステム動作には影響しません。

既定値: すべての入力チャンネルに対して空の文字列 ''

OutputGroup

出力チャンネル グループ。OutputGroup プロパティによって、MIMO システムの出力チャンネルをグループに割り当て、各グループを名前で参照できます。出力グループを構造体として指定します。この構造体内においてフィールド名はグループ名であり、フィールド値は各グループに属する出力チャンネルです。以下に例を示します。

sys.OutputGroup.temperature = [1];
sys.InputGroup.measurement = [3 5];

これは、出力チャンネル 1 および 3、5 をそれぞれ含む temperature および measurement という名前の出力グループを作成します。その後、以下を使用してすべての入力から measurement 出力にサブシステムを抽出できます。

sys('measurement',:)

既定値: フィールドのない構造体

Name

システム名。システムをラベル付けする文字列に Name を設定します。

既定値: ''

Notes

システムに関連付ける任意のテキスト。文字列または文字列のセル配列のいずれかに Notes を設定します。

既定値: {}

UserData

システムに関連付ける任意のデータ型。UserData を任意の MATLAB® データ型に設定します。

既定値: []

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

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

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

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

調整可能な 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 = ltiblock.pid2('2dofPI',sys);

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

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

 

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

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

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

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

詳細

すべて展開する

ヒント

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

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

参考

| | | | | |

この情報は役に立ちましたか?