ドキュメンテーション

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

getCompSensitivity

slLinearizer または slTuner インターフェイスを使用する、指定された点での相補感度関数

構文

  • sys = getCompSensitivity(s,pt)
  • sys = getCompSensitivity(s,pt,temp_opening)
  • sys = getCompSensitivity(___,mdl_index)

説明

sys = getCompSensitivity(s,pt) は、slLinearizer または slTuner インターフェイス s に関連付けられたモデルに対して指定されている解析ポイントでの相補感度関数を返します。

ソフトウェアでは、sys を計算する際、s に対して指定した永続的な開始点はすべて強制適用されます。s.Parameterss.OperatingPoints、またはその両方を設定している場合、getCompSensitivity は複数の線形化を実行し、相補感度関数の配列を返します。

sys = getCompSensitivity(s,pt,temp_opening) は、temp_opening で指定された点にある追加の一時的な開始点を考慮に入れます。開始点を使用して、たとえば、外側のループが開いた状態で内側のループの相補感度関数を計算します。

sys = getCompSensitivity(___,mdl_index) は、バッチ線形化の結果のサブセットを返します。上記の構文の任意の入力引数に加えて、mdl_index は対象の線形化のインデックスを指定します。

バッチ線形化の結果のサブセットのみの相補感度関数を取得する場合、この構文を使用して効率的な線形化を行います。

すべて折りたたむ

解析ポイントでの相補感度関数

ex_scd_simple_fdbk モデルのプラント出力で計算された相補感度関数を取得します。

ex_scd_simple_fdbk モデルを開きます。

mdl = 'ex_scd_simple_fdbk';
open_system(mdl);

このモデルには次の項目が含まれています。

K(s)=Kp=3G(s)=1s+5.

モデルの slLinearizer インターフェイスを作成します。

sllin = slLinearizer(mdl);

プラント出力での相補感度関数を計算するには、y 信号を解析ポイントとして使用します。この点を sllin に追加します。

addPoint(sllin,'y');

y での相補感度関数を取得します。

sys = getCompSensitivity(sllin,'y');
tf(sys)
ans =
 
  From input "y" to output "y":
   -3
  -----
  s + 8
 
Continuous-time transfer function.

ソフトウェアは y で線形化出力を追加し、その後に線形化入力 dy を追加します。

sysdy から y への伝達関数です。これは、–(I+GK)-1GK と同じです。

相補感度関数の計算用の一時的なループ開始点の指定

scdcascade モデルでは、y2 での内側のループの相補感度関数を取得します。

scdcascade モデルを開きます。

mdl = 'scdcascade';
open_system(mdl);

モデルの slLinearizer インターフェイスを作成します。

sllin = slLinearizer(mdl);

y2 での内側のループの相補感度伝達関数を計算するには、y2 信号を解析ポイントとして使用します。外側のループの影響を取り除くには、y1m で外側のループを中断します。これらの両方の点を sllin に追加します。

addPoint(sllin,{'y2','y1m'});

y2 での内側のループの相補感度関数を取得します。

sys = getCompSensitivity(sllin,'y2','y1m');

ここで、3 番目の入力引数 'y1m' は、外側のループの一時的な開始点を指定します。

特定のパラメーターの組み合わせでの相補感度関数

複数の伝達関数に対して scdcascade モデルをバッチ線形化するとします。ほとんどの線形化では、C2 コントローラーの比例ゲイン (Kp2) および積分ゲイン (Ki2) を 10% の範囲で変化させます。この例では、Kp2 および Ki2 の最大値で内側のループの相補感度関数を計算します。

scdcascade モデルを開きます。

mdl = 'scdcascade';
open_system(mdl);

モデルの slLinearizer インターフェイスを作成します。

sllin = slLinearizer(mdl);

C2 コントローラーの比例ゲイン (Kp2) および積分ゲイン (Ki2) を 10% の範囲で変化させます。

Kp2_range = linspace(0.9*Kp2,1.1*Kp2,3);
Ki2_range = linspace(0.9*Ki2,1.1*Ki2,5);

[Kp2_grid,Ki2_grid]=ndgrid(Kp2_range,Ki2_range);

params(1).Name = 'Kp2';
params(1).Value = Kp2_grid;

params(2).Name = 'Ki2';
params(2).Value = Ki2_grid;

sllin.Parameters = params;

内側のループの相補感度を計算するには、y2 信号を解析ポイントとして使用します。外側のループの影響を取り除くには、y1m で外側のループを中断します。これらの両方の点を sllin に追加します。

addPoint(sllin,{'y2','y1m'})

Ki2 および Kp2 の最大値のインデックスを特定します。

mdl_index = params(1).Value==max(Kp2_range) & params(2).Value==max(Ki2_range);

y2 で相補感度伝達関数を取得します。

sys = getCompSensitivity(sllin,'y2','y1m',mdl_index);

関連する例

入力引数

すべて折りたたむ

s — Simulink® モデルへのインターフェイスslLinearizer インターフェイス | slTuner インターフェイス

Simulink モデルへのインターフェイス。slLinearizer インターフェイスまたは slTuner インターフェイスとして指定します。

pt — 解析ポイント信号名文字列 | 文字列のセル配列

解析ポイント信号名。以下で指定します。

  • 文字列 — 解析ポイント信号名。

    解析ポイントに関連付けられた信号名を確認するには、「s」と入力します。MATLAB® コマンド ウィンドウに s の内容が表示されます。これには、解析ポイント信号名、ブロック名および端子番号が含まれます。解析ポイントに信号名がなく、ブロック名と端子番号のみがあるとします。ブロック名として pt を指定できます。s の解析ポイントのリストにないポイントを使用するには、最初に addPoint を使用してポイントを追加します。

    完全な信号名またはブロック名の一意的に一致する部分文字列として pt を指定できます。解析ポイントの完全な信号名が 'LoadTorque' であるとします。'Torque's の他の解析ポイントの信号名の部分文字列でなければ、pt'Torque' と指定できます。

    たとえば、pt = 'y1m' とします。

  • 文字列のセル配列 — 複数の解析ポイント名を指定します。たとえば、pt = {'y1m','y2m'} とします。

sys を計算するために、ソフトウェアは pt で線形化出力を追加し、その後に線形化入力を追加します。

以下のモデルを考えます。

'y' として pt を指定します。

ソフトウェアは、dy から y への伝達関数として sys を計算します。

pt を複数の信号として指定する場合 (たとえば、pt = {'u','y'})、ソフトウェアは各点で、線形化出力を追加し、その後に線形化入力を追加します。

dudy は線形化入力で、uy は線形化出力です。ソフトウェアは、各線形化入力から各線形化出力への伝達関数をもつ MIMO 伝達関数として sys を計算します。

temp_opening — 一時的開始点信号名文字列 | 文字列のセル配列

一時的開始点信号名。以下で指定します。

  • 文字列 — 解析ポイント信号名。

    temp_opening では、s の解析ポイントのリストに存在する解析ポイントを指定しなければなりません。解析ポイントに関連付けられた信号名を確認するには、「s」と入力します。MATLAB コマンド ウィンドウに s の内容が表示されます。これには、解析ポイント信号名、ブロック名および端子番号が含まれます。解析ポイントに信号名がなく、ブロック名と端子番号のみがあるとします。ブロック名として temp_opening を指定できます。s の解析ポイントのリストにないポイントを使用するには、最初に addPoint を使用してポイントを追加します。

    完全な信号名またはブロック名の一意的に一致する部分文字列として temp_opening を指定できます。解析ポイントの完全な信号名が 'LoadTorque' であるとします。'Torque's の他の解析ポイントの信号名の部分文字列でなければ、temp_opening'Torque' と指定できます。

    たとえば、temp_opening = 'y1m' とします。

  • 文字列のセル配列 — 複数の解析ポイント名を指定します。たとえば、temp_opening = {'y1m','y2m'} とします。

mdl_index — 対象の線形化のインデックス論理値の配列 | 正の整数のベクトル

対象の線形化のインデックス。以下で指定します。

  • 論理値の配列 — 対象の線形化の論理配列のインデックス。2 つのパラメーター par1par2 を変化させ、par1 > 0.5par2 <= 5 の組み合わせで線形化を抽出するとします。使用:

    params = s.Parameters;
    mdl_index = params(1).Value>0.5 & params(2).Value<=5;

    params(1).Value>0.5 & params(2).Value<5 は論理インデックスを使用して、論理配列を返します。この論理配列は、params(1).Value および params(2).Value と同じサイズです。各エントリには、params(1).Value および params(2).Value 内の対応するエントリの式の論理評価が含まれます。

  • 正の整数のベクトル — 対象の線形化の線形インデックス。2 つのパラメーター par1par2 を変化させ、par1 > 0.5par2 <= 5 の組み合わせで線形化を抽出するとします。使用:

    params = s.Parameters;
    mdl_index = find(params(1).Value>0.5 & params(2).Value<=5);

    params(1).Value>0.5 & params(2).Value<5 は論理配列を返します。find はその論理配列の true の各エントリの線形インデックスを返します。

出力引数

すべて折りたたむ

sys — 相補感度関数状態空間モデル

相補感度関数。以下の説明のように返されます。

  • s.Parameters および s.OperatingPoints を設定していない場合、ソフトウェアは既定のモデル パラメーター値を使用して sys を計算します。ソフトウェアはモデルの初期条件を線形化の操作点として使用します。sys は状態空間モデルとして返されます。

  • s.Parameters のみを設定している場合、ソフトウェアはそれぞれのパラメーター グリッド点の線形化を計算します。sys は、パラメーター グリッドと同じサイズの状態空間モデル配列として返されます。

  • s.OperatingPoints のみを設定している場合、ソフトウェアは指定されたそれぞれの操作点の線形化を計算します。sys は、s.OperatingPoints と同じサイズの状態空間モデル配列として返されます。

  • s.Parameters を設定しており、s.OperatingPoints を単一の操作点として指定している場合、ソフトウェアはそれぞれのパラメーター グリッド点の線形化を計算します。ソフトウェアは、指定された操作点を線形化の操作点として使用します。sys は、パラメーター グリッドと同じサイズの状態空間モデル配列として返されます。

  • s.Parameters を設定しており、s.OperatingPoints を複数の操作点オブジェクトとして指定している場合、ソフトウェアはそれぞれのパラメーター グリッド点の線形化を計算します。s.OperatingPointss.Parameters で指定されたパラメーター グリッドと同じサイズでなければなりません。ソフトウェアは、対応する操作点およびパラメーター グリッド点を使用してそれぞれの線形化を計算します。sys はパラメーター グリッドと同じサイズの状態空間モデル配列として返されます。

  • s.Parameters を設定しており、s.OperatingPoints を複数のシミュレーション スナップショット時間として指定している場合、ソフトウェアはスナップショット時間とパラメーター グリッド点のそれぞれの組み合わせに対してモデルをシミュレーションして線形化します。サイズ p のパラメーター グリッドとスナップショット時間 N を指定するとします。sys は、サイズが Np 列の状態空間モデル配列として返されます。

詳細

すべて折りたたむ

相補感度関数

ある点での "相補感度関数" とは、その点での加法的な外乱から同じ点での測定への伝達関数のことです。感度関数とは対照的に、測定の "後に" 外乱が追加されます。

解析ポイント x での相補感度関数を計算するために、ソフトウェアは x で線形化出力を追加し、その後に線形化入力 dx を追加します。相補感度関数は、dx から x への伝達関数です。

Simulink モデルでの解析ポイントgetCompSensitivity による解析ポイントの解釈相補感度関数

dx から x への伝達関数

たとえば、y での相補感度関数を計算する次のモデルについて考えます。

ここで、ソフトウェアは y で線形化出力を追加し、その後に線形化入力 dy を追加します。y での相補感度関数 T は、dy から y への伝達関数です。T は、以下のように計算されます。

y=GK(y+dy)y=GKyGKdy(I+GK)y=GKdyy=(I+GK)1GKTdy.

ここで、I は GK と同じサイズの単位行列です。y での相補感度達関数は、r から y への閉ループ伝達関数に -1 を掛け合わせたものと同じです。

一般的には、基準信号からプラント出力まで計算される相補感度関数 T は、I–S と同じです。ここで、S はこの点での感度関数で、I は同じサイズの単位行列です。ただし、getCompSensitivity は、線形化の出力と入力を "同じ点" で追加するため、getCompSensitivity が返す T は、S–I と等しくなります。

ソフトウェアは、相補感度関数を計算する際に Simulink モデルを変更しません。

解析ポイント

"解析ポイント" は、slLinearizerslTuner インターフェイスで使用され、モデル内で線形解析と制御システムの調整に関連する箇所を示します。解析ポイントは、getIOTransfergetLoopTransfergetSensitivitygetCompSensitivity などの線形化コマンドの入力として使用します。線形化コマンドの入力として、解析ポイントによりモデル内の開ループまたは閉ループの伝達関数を指定できます。また、コマンド systune などを使用して制御システムを調整する際に (Robust Control Toolbox™ ライセンスが必要です)、解析ポイントを使用して設計要件を指定することもできます。

"場所" とは、モデル内の特定のブロック出力端子を指します。便宜上、この端子から発信する信号の名前を使って解析ポイントを示すことができます。

解析ポイントは、slLinearizer または slTuner インターフェイス s に対して、インターフェイスの作成時に追加できます。以下に例を示します。

s = slLinearizer('scdcascade',{'u1','y1'});

また、addPoint コマンドを使用することもできます。

s のすべての解析ポイントを表示するには、コマンド プロンプトで「s」と入力してインターフェイスの内容を表示します。s の各解析ポイントの表示には、ブロック名、端子番号、およびこの解析ポイントから発信される信号の名前が含まれます。getPoints を使用し、プログラムですべての解析ポイントのリストを取得することもできます。

解析ポイントの使用方法の詳細は、「制御システムの解析と設計における信号の管理」を参照してください。

永続的なループ開始点

"永続的な開始点" とは、slLinearizer および slTuner インターフェイスで使用され、ソフトウェアがモデル内で信号の流れを中断する箇所を示します。線形化および調整時に、これらの開始点が強制的に適用されます。永続的な開始点は、ある特定のモデル コンポーネントを分離するために使用します。航空機のダイナミクスを取得する大規模なモデルがあり、機体にのみ線形解析を実行するとします。永続的な開始点を使用すれば、このモデルの他のコンポーネントをすべて除外できます。モデル内にカスケード式ループがあり、特定のループを解析する場合などにも使用できます。

"場所" とは、モデル内の特定のブロック出力端子を指します。便宜上、この端子から発信する信号の名前を使って開始点を示すことができます。

永続的な開始点は、slLinearizer または slTuner インターフェイス s に対して、インターフェイスの作成時に追加するか、addOpening コマンドを使用して追加できます。永続的な開始点のリストから場所を削除するには、removeOpening コマンドを使用します。

s のすべての開始点を表示するには、コマンド プロンプトで「s」と入力してインターフェイスの内容を表示します。s のそれぞれの永続的な開始点の表示には、ブロック名、端子番号、およびこの場所から発信される信号の名前が含まれます。getOpenings を使用し、プログラムですべての永続的な開始点のリストを取得することもできます。

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