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

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

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

getIOTransfer

slLinearizer インターフェイスを使用して指定された I/O セットの伝達関数

構文

  • sys = getIOTransfer(sllin,in,out)
  • sys = getIOTransfer(sllin,in,out,temp_opening)
  • sys = getIOTransfer(sllin,ios)
  • sys = getIOTransfer(___,mdl_index)

説明

sys = getIOTransfer(sllin,in,out) は、slLinearizer インターフェイス sllin に関連付けられたモデルの指定された入力および出力の伝達関数を返します。

ソフトウェアは、sys を計算する際に、sllin に対して指定されたすべての永続的な開始点を適用します。getIOTransferin および out を処理する方法の詳細は、「伝達関数」を参照してください。sllin.Parameterssllin.OperatingPoints、またはその両方を設定している場合、getIOTransfer は複数の線形化を実行し、伝達関数の配列を返します。

sys = getIOTransfer(sllin,in,out,temp_opening) は、temp_opening で指定された点において、追加の一時的な開始点を考慮します。開始点を使用して、たとえば、フィードバック ループが開いた状態でプラントのある直列のコントローラーの伝達関数を取得します。

sys = getIOTransfer(sllin,ios) は、slLinearizer インターフェイス sllin に関連付けられたモデルの ios で指定された入力および出力の伝達関数を返します。ios を作成するには、linio コマンドを使用します。ソフトウェアは、sys を計算する際に、ios で指定された各信号の線形化 I/O タイプを適用します。また、sllin に対して指定されたすべての永続ループ開始点も適用します。

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

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

すべて展開する

基準からプラント出力への閉ループ伝達関数

ex_scd_simple_fdbk モデルで基準信号 r からプラント出力y への閉ループ伝達関数を取得します。

ex_scd_simple_fdbk モデルを開きます。

mdl = 'ex_scd_simple_fdbk';
open_system(mdl);

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

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

sllin = slLinearizer(mdl);

基準信号 r からプラント出力 y への閉ループ伝達関数を取得するには、両方の点を sllin に追加します。

addPoint(sllin,{'r','y'});

r から y への閉ループ伝達関数を取得します。

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

ソフトウェアは、r で線形化入力 dr を追加し、y で線形化出力を追加します。

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

一時的ループ開始点の指定によるプラント モデルの取得

ex_scd_simple_fdbk モデルで、プラント モデル伝達関数 G を取得します。

ex_scd_simple_fdbk モデルを開きます。

mdl = 'ex_scd_simple_fdbk';
open_system(mdl);

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

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

sllin = slLinearizer(mdl);

プラント モデル伝達関数を取得するには、入力ポイントとして u、出力ポイントとして y を使用します。フィードバックの影響を取り除くには、ループを中断しなければなりません。ループは、ue または y で中断できます。たとえば、u でループを中断するとします。これらの点を sllin に追加します。

addPoint(sllin,{'u','y'});

プラント モデル伝達関数を取得します。

sys = getIOTransfer(sllin,'u','y','u');
tf(sys)
ans =
 
  From input "u" to output "y":
    1
  -----
  s + 5
 
Continuous-time transfer function.

2 番目の入力引数で入力として u を指定し、4 番目の入力引数で一時的ループ開始点として u を指定します。

sysdu から y への伝達関数です。これは G と同じです。

特定のパラメーターの組み合わせでの開ループ応答伝達関数

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

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;

内側のループの開ループ伝達関数を計算するには、e2 およびy2 を解析ポイントとして使用します。外側のループの影響を取り除くには、e2 でループを中断します。解析ポイントとして e2y2sllin に追加します。

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

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

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

e2 から y2 への開ループ伝達関数を取得します。

sys = getIOTransfer(sllin,'e2','y2','e2',mdl_index);

入力引数

すべて展開する

sllin - Simulink® モデルを線形化するためのインターフェイスslLinearizer インターフェイス

Simulink モデルを線形化するためのインターフェイス。slLinearizer インターフェイスとして指定します。

in - 入力解析ポイント信号名文字列 | 文字列のセル配列

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

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

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

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

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

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

out - 出力解析ポイント信号名文字列 | 文字列のセル配列

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

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

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

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

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

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

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

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

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

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

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

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

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

ios - 線形化 I/O線形化 I/O オブジェクト

linio を使用して作成された線形化 I/O。線形化 I/O オブジェクトとして指定します。

ios は、sllin の解析ポイントのリストにある信号を指定しなければなりません。解析ポイントのリストを表示するには、「sllin」と入力します。sllin の解析ポイントのリストにない点を使用するには、最初に addPoint を使用して点をリストに追加しなければなりません。

たとえば、以下のようにします。

ios(1) = linio('scdcascade/setpoint',1,'input');
ios(2) = linio('scdcascade/Sum',1,'output');

ここでは、ios(1) で入力を指定し、ios(2) で出力を指定します。

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

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

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

    params = sllin.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 = sllin.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 - 指定された I/O の伝達関数ss モデル

指定された I/O の伝達関数。以下の説明のように返されます。

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

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

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

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

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

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

詳細

すべて展開する

伝達関数

"伝達関数" とは、線形化出力ポイントにおける線形化入力に対する LTI システムの応答です。伝達関数で線形解析を実行し、システムの安定性、時間領域または周波数領域の特性を理解します。

与えられたブロック線図で複数の伝達関数を計算できます。ex_scd_simple_fdbk モデルを考えます。

基準入力信号からプラント出力信号への伝達関数を計算できます。"基準入力" ("設定点" とも呼ばれる) r は Reference ブロックで発生し、"プラント出力" y は G ブロックで発生します。この伝達関数は、"閉ループ全体の" 伝達関数とも呼ばれます。この伝達関数を計算するために、ソフトウェアは、r で線形化入力 dr を追加し、y で線形化出力を追加します。

ソフトウェアは、dr から y への伝達関数として閉ループ全体の伝達関数を計算します。これは、(I+GK)-1GK と同じです。

r から y への伝達関数が dr から y への伝達関数と同じになることを確認します。

プラント入力 u からプラント出力 y への "プラント伝達関数" を計算できます。プラントのダイナミクスをフィードバック ループの影響から切り離すには、ye、または図のように u にループの中断 (つまり "開始点") を導入します。

ソフトウェアはループを中断し、u で線形化入力 du を追加し、y で線形化出力を追加します。このプラント伝達関数は、du から y への伝達関数 (G) と同じです。

同様に、"コントローラー伝達関数" を取得するには、コントローラー入力 e からコントローラー出力 u への伝達関数を計算します。ye または u でフィードバック ループを中断します。

getIOTransfer を使用して、さまざまな開ループまたは閉ループの伝達関数を取得できます。伝達関数を設定するには、任意の組み合わせで入力、出力および開始点 (一時的または永続的) として解析ポイントを指定します。ソフトウェアはそれぞれの組み合わせを一意的に処理します。次のコードについて考えます。これは、解析ポイント u を使用して伝達関数を取得するいくつかの方法を示します。

sllin = slLinearizer('ex_scd_simple_fdbk')

addPoint(sllin,{'u','e','y'})

T0 = getIOTransfer(sllin,'e','y','u');
T1 = getIOTransfer(sllin,'u','y');
T2 = getIOTransfer(sllin,'u','y','u');
T3 = getIOTransfer(sllin,'y','u');
T4 = getIOTransfer(sllin,'y','u','u');
T5 = getIOTransfer(sllin,'u','u'); 
T6 = getIOTransfer(sllin,'u','u','u');

T0 では、u でループの中断を指定します。T1 では、u で入力のみを指定します。T2 では、u で入力および開始点 ("開ループの入力" とも呼ばれる) を指定します。T3 では、u で出力のみを指定します。T4 では、u で出力および開始点 ("開ループの出力" とも呼ばれる) を指定します。T5 では、u で入力および出力 ("相補感度ポイント" とも呼ばれる) を指定します。T6 では、u で入力、出力および開始点 ("ループ伝達ポイント" とも呼ばれる) を指定します。次の表は、getIOTransfer が解析ポイントを処理する方法を示します。ここでは、u のさまざまな使用方法に注目します。

u の指定内容getIOTransfer が解析ポイントを処理する方法伝達関数

ループの中断

コード例:

T0 = getIOTransfer(sllin,'e','y','u')

ソフトウェアは u で信号フローを切断し、線形化入力 dee に、線形化出力を y に追加します。

入力

コード例:

T1 = getIOTransfer(sllin,'u','y')

ソフトウェアは、u に線形化入力 du を、y に線形化出力を追加します。

開ループの入力

コード例:

T2 = getIOTransfer(sllin,'u','y','u')

ソフトウェアは u で信号フローを切断して線形化入力 du を追加し、y に線形化出力を追加します。

出力

コード例:

T3 = getIOTransfer(sllin,'y','u')

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

開ループの出力

コード例:

T4 = getIOTransfer(sllin,'y','u','u')

ソフトウェアは y で線形化入力 dy を追加し、u で線形化出力を追加して信号フローを切断します。

相補感度ポイント

コード例:

T5 = getIOTransfer(sllin,'u','u')

    ヒント:   getCompSensitivity を使用して相補感度関数を取得することもできます。

ソフトウェアは、u で線形化出力および線形化入力 du を追加します。

ループ伝達関数の点

コード例:

T6 = getIOTransfer(sllin,'u','u','u')

    ヒント:   getLoopTransfer を使用してループ伝達関数を取得することもできます。

ソフトウェアは u で線形化出力を追加して、ループを中断し、線形化入力 du を追加します。

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

解析ポイント

"解析ポイント" は、slLinearizer インターフェイスで使用され、線形解析に関連するモデル内の位置を識別します。解析ポイントは、次の slLinearizer インターフェイスの線形化コマンドの入力として使用します。getIOTransfergetLoopTransfergetSensitivity および getCompSensitivity。線形化コマンドの入力として、解析ポイントによりモデル内の開ループまたは閉ループの伝達関数を指定できます。

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

slLinearizer インターフェイス sllin を作成する際に、解析ポイントをこのインターフェイスに追加できます。

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

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

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

永続的な開始点

"永続的な開始点" とは、slLinearizer インターフェイスで使用され、モデル内でソフトウェアが線形化の信号フローを中断する場所のことです。ソフトウェアは、それぞれの線形化でこれらの開始点を適用します。永続的な開始点を使用して、線形化用に特定のモデルのコンポーネントを分離します。航空機のダイナミクスをキャプチャする大規模なモデルがあり、機体にのみ線形解析を実行するとします。永続的な開始点を使用すると、線形化からモデルのその他のすべてのコンポーネントを除外できます。モデル内にカスケード式ループがあり、特定のループを解析する場合などにも使用できます。

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

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

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

参考

| | | | |

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