Main Content

tunableGain

調整可能な静的ゲイン ブロック

説明

調整可能な静的ゲインを作成するためのモデル オブジェクト。tunableGain では、パラメーターの調査や、systunelooptune などの調整コマンドを使用した自動調整用に、調整可能な静的ゲインをパラメーター化できます。

tunableGain はパラメトリック モデルの制御設計ブロック ファミリの一部です。その他の制御設計ブロックには、tunablePIDtunableSS および tunableTF があります。

作成

説明

blk = tunableGain(name,Ny,Nu) は、name という名前のパラメトリック静的ゲイン ブロックを作成します。このブロックには Ny 出力と Nu 入力があります。調整可能なパラメーターは、それぞれの Ny-by-Nu I/O チャネルにわたるゲインです。

blk = tunableGain(name,G) は、ブロックを次元化して調整可能なパラメーターを初期化するために double 配列 G を使用します。

入力引数

すべて展開する

ブロック Name'K' または 'gain1' などの文字ベクトルとして指定します (プロパティを参照)。

データ型: char

パラメトリック静的ゲイン ブロック blk の出力の数。非負の整数として指定します。

データ型: double

パラメトリック静的ゲイン ブロック blk の入力の数。非負の整数として指定します。

データ型: double

ゲイン ブロック パラメーターの初期値。double 配列として指定します。G の行と列の数は、blk の入力と出力の数を決定します。

データ型: double

プロパティ

すべて展開する

blk.Gainparam.Continuous オブジェクトです。param.Continuous (Simulink Design Optimization) オブジェクト blk.Gain のプロパティに関する一般情報は、param.Continuous オブジェクトのリファレンス ページを参照してください。

blk.Gain の次のフィールドは、hinfstruct を使用して blk を調整するときに使用されます。

フィールド説明
Value

ゲイン行列の現在の値。Ny 出力と Nu 入力のあるブロックの場合、blk.Gain.ValueNyNu 列の行列です。

G 入力引数を使って blk を作成する場合、blk.Gain.ValueG の値を初期化します。それ以外の場合、blk.Gain.Value のすべてのエントリが 0 に初期化されます。

hinfstruct (Robust Control Toolbox) は、blk.Gain.Free によって固定化された値を除いて、blk.Gain.Value のすべてのエントリを調整します。

既定: ゼロ値の配列

Free

blk.Gain.Value のゲイン エントリが固定されるか、自由パラメーターであるかを判断する論理値の配列。

  • blk.Gain.Free(i,j) = 1 である場合、blk.Gain.Value(i,j) は調整可能なパラメーターです。

  • blk.Gain.Free(i,j) = 0 の場合、blk.Gain.Value(i,j) は固定されます。

既定: 1 (true) 値の配列

Minimum

パラメーターの最小値。このプロパティは、パラメーターの調整された値に下限を設定します。たとえば、blk.Gain.Minimum = 1 と設定すると、ゲイン行列のすべてのエントリが必ず 1 より大きいゲインをもつようになります。

既定: -Inf

Maximum

パラメーターの最大値。このプロパティは、パラメーターの調整された値に上限を設定します。たとえば、blk.Gain.Maximum = 100 と設定すると、ゲイン行列のすべてのエントリが必ず 100 より小さいゲインをもつようになります。

既定: Inf

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

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

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

  • 'nanoseconds'

  • 'microseconds'

  • 'milliseconds'

  • 'seconds'

  • 'minutes'

  • 'hours'

  • 'days'

  • 'weeks'

  • 'months'

  • 'years'

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

入力チャネル名。以下のいずれかとして指定します。

  • 文字ベクトル — 単入力モデルの場合 (たとえば 'controls' など)。

  • 文字ベクトルの cell 配列 — 多入力モデルの場合。

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

sys.InputName = 'controls';

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

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

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

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

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

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

入力チャネル単位。以下のいずれかとして指定します。

  • 文字ベクトル — 単入力モデルの場合 (たとえば 'seconds' など)。

  • 文字ベクトルの cell 配列 — 多入力モデルの場合。

InputUnit を使用して入力信号単位を追跡します。InputUnit はシステムの動作に影響しません。

MIMO システムの入力チャネルを割り当てるための入力チャネル グループ。構造体として指定します。この構造体においてフィールド名はグループ名であり、フィールド値は各グループに属する入力チャネルです。以下に例を示します。

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

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

sys(:,'controls')

出力チャネル名。次のいずれかとして指定されます。

  • 文字ベクトル — 単出力モデルの場合。たとえば、'measurements' とします。

  • 文字ベクトルの cell 配列 — 多出力モデルの場合。

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

sys.OutputName = 'measurements';

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

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

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

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

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

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

出力チャネル単位。次のいずれかとして指定されます。

  • 文字ベクトル — 単出力モデルの場合。たとえば、'seconds' とします。

  • 文字ベクトルの cell 配列 — 多出力モデルの場合。

OutputUnit を使用して出力信号単位を追跡します。OutputUnit はシステムの動作に影響しません。

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

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

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

sys('measurement',:)

システム名。文字ベクトルとして指定します。たとえば、'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 列のパラメトリック ゲイン ブロックを作成します。

[g100g2]

ここで、g1g2 は調整可能なパラメーターであり、非対角要素は 0 に固定されます。

blk = tunableGain('gainblock',2,2);  % 2 outputs, 2 inputs
blk.Gain.Free = [1 0; 0 1];    % fix off-diagonal entries to zero

blk.Gain.Value のすべてのエントリは 0 に初期化されます。次のように対角値を 1 に初期化します。

blk.Gain.Value = eye(2);    % set diagonals to 1

2 入力 3 出力パラメトリック ゲイン ブロックを作成して、すべてのパラメーター値を 1 に初期化します。

これを行うには、パラメトリック ゲイン ブロックを次元化するために行列を作成し、パラメーター値を初期化します。

G = ones(3,2);
blk = tunableGain('gainblock',G);

2 行 2 列のパラメトリック ゲイン ブロックを作成して、名前を入力に割り当てます。

blk = tunableGain('gainblock',2,2)   % 2 outputs, 2 inputs 
blk.InputName = {'Xerror','Yerror'}    % assign input names

ヒント

  • blkblk.Gain.Free フィールドを使用すると、追加の構造体を指定するか、ブロックの特定のエントリの値を固定できます。入力 i から出力 j へのゲイン値を固定するには、blk.Gain.Free(i,j) = 0 を設定します。hinfstruct でこのゲイン値の調整を許可するには、blk.Gain.Free(i,j) = 1 を設定します。

  • tunableGain パラメトリック モデルを数値 (調整不可) モデル オブジェクトに変換するには、tfzpkss などのモデル コマンドを使用します。

バージョン履歴

R2016a で導入

すべて展開する