このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
getLoopTransfer
slLinearizer
または slTuner
インターフェイスを使用した指定点での開ループ伝達関数
構文
説明
は、linsys
= getLoopTransfer(s
,pt
)slLinearizer
または slTuner
インターフェイス s
に関連付けられたモデルの指定された解析ポイントにおける点と点を結ぶ開ループ伝達関数を返します。
ソフトウェアでは、linsys
を計算する際、s
に対して指定した永続的なループ開始点はすべて強制適用されます。s.Parameters
、s.OperatingPoints
、またはその両方を設定している場合、getLoopTransfer
は複数の線形化を実行し、ループ伝達関数の配列を返します。
は、linsys
= getLoopTransfer(s
,pt
,temp_opening
)temp_opening
で指定された点にある追加の一時的な開始点を考慮に入れます。開始点を使用して、たとえば、外側のループが開いた状態で、プラント入力で測定される内側のループのループ伝達関数を計算します。
は、一時的開始点およびフィードバック符号を指定します。linsys
= getLoopTransfer(s
,pt
,temp_opening
,sign
)
例
ex_scd_simple_fdbk
モデルの e
で計算されたループ伝達関数を取得します。
ex_scd_simple_fdbk
モデルを開きます。
mdl = 'ex_scd_simple_fdbk';
open_system(mdl);
このモデルには次の項目が含まれています。
モデルの slLinearizer
インターフェイスを作成します。
sllin = slLinearizer(mdl);
e
でのループ伝達関数を取得するには、この点を解析ポイントとして sllin
に追加します。
addPoint(sllin,'e');
e
でのループ伝達関数を取得します。
sys = getLoopTransfer(sllin,'e');
tf(sys)
ans = From input "e" to output "e": -3 ----- s + 5 Continuous-time transfer function.
ソフトウェアは e
で線形化出力を追加して、ループを中断し、線形化入力 de
を追加します。
sys
は、de
から e
への伝達関数です。ソフトウェアは正のフィードバックを仮定しているため、sys
を として返します。
ex_scd_simple_fdbk
モデルの e
で計算された負のフィードバック ループ伝達関数を取得します。
ex_scd_simple_fdbk
モデルを開きます。
mdl = 'ex_scd_simple_fdbk';
open_system(mdl);
このモデルには次の項目が含まれています。
モデルの slLinearizer
インターフェイスを作成します。
sllin = slLinearizer(mdl);
e
でのループ伝達関数を取得するには、この点を解析ポイントとして sllin
に追加します。
addPoint(sllin,'e');
e
でのループ伝達関数を取得します。
sys = getLoopTransfer(sllin,'e',-1);
tf(sys)
ans = From input "e" to output "e": 3 ----- s + 5 Continuous-time transfer function.
ソフトウェアは e
で線形化出力を追加して、ループを中断し、線形化入力 de
を追加します。
sys
は、de
から e
への伝達関数です。3 番目の入力引数は負のフィードバックを示すため、ソフトウェアは sys
を として返します。
scdcascade
モデルの e2
で計算された内側のループのループ伝達関数を取得します。
scdcascade
モデルを開きます。
mdl = 'scdcascade';
open_system(mdl)
モデルの slLinearizer
インターフェイスを作成します。
sllin = slLinearizer(mdl);
内側のループのループ伝達関数を計算するには、e2
信号を解析ポイントとして使用します。外側のループの影響を取り除くには、y1m
で外側のループを中断します。これらの点を sllin
に追加します。
addPoint(sllin,{'e2','y1m'});
e2
での内側のループのループ伝達関数を取得します。
sys = getLoopTransfer(sllin,'e2','y1m');
ここで、3 番目の入力引数 'y1m'
は、一時的なループの開始点を指定します。ソフトウェアは sys
を計算する際に、正のフィードバックを仮定します。
複数の伝達関数に対して scdcascade
モデルをバッチ線形化するとします。ほとんどの線形化では、C2
コントローラーの比例ゲイン (Kp2
) と積分ゲイン (Ki2
) を 10% の範囲で変化させます。この例では、Kp2
および Ki2
の最大値で e2
における内側のループのループ伝達関数を計算します。
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
信号を解析ポイントとして使用します。外側のループの影響を取り除くには、y1m
で外側のループを中断します。これらの点を sllin
に追加します。
addPoint(sllin,{'e2','y1m'});
Ki2
および Kp2
の最大値のインデックスを決定します。
mdl_index = params(1).Value == max(Kp2_range) & params(2).Value == max(Ki2_range);
外側のループが開いた状態で、e2
での内側のループのループ伝達関数を取得します。
sys = getLoopTransfer(sllin,'e2','y1m',-1,mdl_index);
4 番目の入力引数では、ループ伝達の計算用の負のフィードバックを指定します。
Simulink モデルを開きます。
mdl = 'watertank';
open_system(mdl)
線形化オプション セットを作成し、StoreOffsets
オプションを設定します。
opt = linearizeOptions('StoreOffsets',true);
slLinearizer
インターフェイスを作成します。
sllin = slLinearizer(mdl,opt);
タンクの出力端子で解析ポイントを追加します。
addPoint(sllin,'watertank/Water-Tank System');
解析ポイントでループ伝達関数を計算し、対応する線形化オフセットを取得します。
[sys,info] = getLoopTransfer(sllin,'watertank/Water-Tank System');
オフセットを表示します。
info.Offsets
ans = struct with fields: dx: [2×1 double] x: [2×1 double] u: 1 y: 1 OutputName: {'watertank/Water-Tank System'} InputName: {'watertank/Water-Tank System'} StateName: {2×1 cell} Ts: 0
入力引数
Simulink モデルへのインターフェイス。slLinearizer
インターフェイスまたは slTuner
インターフェイスとして指定します。
解析ポイント信号名。以下で指定します。
文字ベクトルまたは string — 解析ポイント信号名。
解析ポイントに関連付けられた信号名を確認するには、
s
と入力します。MATLAB® コマンド ウィンドウにs
の内容が表示されます。これには、解析ポイント信号名、ブロック名および端子番号が含まれます。解析ポイントに信号名がなく、ブロック名と端子番号のみがあるとします。ブロック名としてpt
を指定できます。s
の解析ポイントのリストにないポイントを使用するには、最初にaddPoint
を使用してポイントを追加します。完全な信号名またはブロック名の一意的に一致する部分として
pt
を指定できます。解析ポイントの完全な信号名が'LoadTorque'
であるとします。'Torque'
がs
の他の解析ポイントの信号名の一部でない限り、pt
を'Torque'
と指定できます。たとえば、
pt = 'y1m'
とします。文字ベクトルの cell 配列または string 配列 — 複数の解析ポイント名を指定します。たとえば、
pt = {'y1m','y2m'}
とします。
linsys
を計算するために、ソフトウェアは pt
で線形化出力を追加し、その後にループの中断と線形化入力を追加します。以下のモデルを考えます。
'u'
として pt
を指定します。
ソフトウェアは、du
から u
への伝達関数として linsys
を計算します。
pt
を複数の信号として指定する場合 (たとえば、pt = {'u','y'}
)、ソフトウェアは各点で線形化出力、ループの中断および線形化入力を追加します。
du
と dy
は線形化入力で、u
と y
は線形化出力です。ソフトウェアは、各線形化入力から各線形化出力への伝達関数をもつ MIMO 伝達関数として linsys
を計算します。
フィードバック符号。以下のいずれかの値として指定します。
+1
(既定) —getLoopTransfer
は正のフィードバック開ループ伝達関数を返します。-1
—getLoopTransfer
は、負のフィードバックの開ループ伝達関数を返します。負のフィードバックの伝達関数は、正のフィードバックの伝達関数に-1
を掛け合わせたものです。
一時的開始点信号名。以下で指定します。
文字ベクトルまたは string — 解析ポイント信号名。
temp_opening
では、s
の解析ポイントのリストに存在する解析ポイントを指定しなければなりません。解析ポイントに関連付けられた信号名を確認するには、s
と入力します。MATLAB コマンド ウィンドウにs
の内容が表示されます。これには、解析ポイント信号名、ブロック名および端子番号が含まれます。解析ポイントに信号名がなく、ブロック名と端子番号のみがあるとします。ブロック名としてtemp_opening
を指定できます。s
の解析ポイントのリストにないポイントを使用するには、最初にaddPoint
を使用してポイントを追加します。完全な信号名またはブロック名の一意的に一致する部分として
temp_opening
を指定できます。解析ポイントの完全な信号名が'LoadTorque'
であるとします。'Torque'
がs
の他の解析ポイントの信号名の一部でない限り、temp_opening
を'Torque'
と指定できます。たとえば、
temp_opening = 'y1m'
とします。文字ベクトルの cell 配列または string 配列 — 複数の解析ポイント名を指定します。たとえば、
temp_opening = {'y1m','y2m'}
とします。
対象の線形化のインデックス。以下で指定します。
論理値の配列 — 対象の線形化の論理配列のインデックス。2 つのパラメーター
par1
とpar2
を変化させ、par1 > 0.5
とpar2 <= 5
の組み合わせで線形化を抽出するとします。使用:params = s.Parameters; mdl_index = params(1).Value>0.5 & params(2).Value <= 5;
式
params(1).Value>0.5 & params(2).Value<5
は論理インデックス付けを使用して、logical 配列を返します。この logical 配列は、params(1).Value
およびparams(2).Value
と同じサイズです。各エントリには、params(1).Value
およびparams(2).Value
内の対応するエントリの式の論理評価が含まれます。正の整数のベクトル — 対象の線形化の線形インデックス。2 つのパラメーター
par1
とpar2
を変化させ、par1 > 0.5
とpar2 <= 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
は logical 配列を返します。find
はその logical 配列の true の各エントリの線形インデックスを返します。
出力引数
点と点を結ぶ開ループ伝達関数。以下の説明のように返されます。
s.Parameters
およびs.OperatingPoints
を設定していない場合、ソフトウェアは既定のモデル パラメーター値を使用してlinsys
を計算します。ソフトウェアはモデルの初期条件を線形化の操作点として使用します。linsys
は状態空間モデルとして返されます。s.Parameters
のみを設定している場合、ソフトウェアはそれぞれのパラメーター グリッド点の線形化を計算します。linsys
は、パラメーター グリッドと同じサイズの状態空間モデル配列として返されます。s.OperatingPoints
のみを設定している場合、ソフトウェアは指定されたそれぞれの操作点の線形化を計算します。linsys
は、s.OperatingPoints
と同じサイズの状態空間モデル配列として返されます。s.Parameters
を設定しており、s.OperatingPoints
を単一の操作点として指定している場合、ソフトウェアはそれぞれのパラメーター グリッド点の線形化を計算します。ソフトウェアは、指定された操作点を線形化の操作点として使用します。linsys
は、パラメーター グリッドと同じサイズの状態空間モデル配列として返されます。s.Parameters
を設定しており、s.OperatingPoints
を複数の操作点オブジェクトとして指定している場合、ソフトウェアはそれぞれのパラメーター グリッド点の線形化を計算します。s.OperatingPoints
はs.Parameters
で指定されたパラメーター グリッドと同じサイズでなければなりません。ソフトウェアは、対応する操作点およびパラメーター グリッド点を使用してそれぞれの線形化を計算します。linsys
はパラメーター グリッドと同じサイズの状態空間モデル配列として返されます。s.Parameters
を設定しており、s.OperatingPoints
を複数のシミュレーション スナップショット時間として指定している場合、ソフトウェアはスナップショット時間とパラメーター グリッド点のそれぞれの組み合わせに対してモデルをシミュレートして線形化します。サイズp
のパラメーター グリッドとN
個のスナップショット時間を指定するとします。linsys
は、サイズがN
行p
列の状態空間モデル配列として返されます。
ほとんどのモデルでは、linsys
は ss
オブジェクトまたは ss
オブジェクトの配列として返されます。ただし、モデルの pt
で定義された線形化パスに次のいずれかのブロックが含まれている場合、linsys
は指定されたタイプの状態空間モデルを返します。
ブロック | linsys のタイプ |
---|---|
genss オブジェクトまたは調整可能なモデル オブジェクトとして指定された置換をもつブロック | genss |
uss などの不確かさをもつモデルとして指定された置換をもつブロック | uss (Robust Control Toolbox) |
Sparse Second Order ブロック | mechss |
スパース モデルに線形化するように構成された Descriptor State-Space ブロック | sparss |
線形化の情報。次のフィールドを含む構造体として返されます。
線形化のオフセット。s.Options.StoreOffsets
が false
の場合は []
として返されます。それ以外の場合、Offsets
は次のいずれかとして返されます。
linsys
が単一の状態空間モデルの場合、Offsets
は構造体になります。linsys
が状態空間モデルの配列の場合、Offsets
はlinsys
と同じ次元をもつ構造体配列になります。
オフセットの各構造体には次のフィールドがあります。
フィールド | 説明 |
---|---|
x | 線形化に使用された状態のオフセット。長さ nx の列ベクトルとして返されます。nx は linsys にある状態の数です。 |
y | 線形化に使用された出力のオフセット。長さ ny の列ベクトルとして返されます。ny は linsys にある出力の数です。 |
u | 線形化に使用された入力のオフセット。長さ nu の列ベクトルとして返されます。nu は linsys にある入力の数です。 |
dx | 連続時間システムの微分オフセット、または離散時間システムの更新された状態値。長さ nx の列ベクトルとして返されます。 |
StateName | 状態名。linsys.StateName の名前に一致する nx 個の要素をもつ cell 配列として返されます。 |
InputName | 入力名。linsys.InputName の名前に一致する nu 個の要素をもつ cell 配列として返されます。 |
OutputName | 出力名。linsys.OutputName の名前に一致する ny 個の要素をもつ cell 配列として返されます。 |
Ts | 線形化されたシステムのサンプル時間。linsys.Ts のサンプル時間に一致するスカラーとして返されます。連続時間システムの場合、Ts は 0 です。 |
Offsets
が構造体配列の場合、オフセットを使用して LPV System ブロックを構成できます。これを行うには、まず getOffsetsForLPV
を使用してオフセットを必要な形式に変換します。例については、LTI システムの配列を使用した非線形動作の近似を参照してください。
線形化の診断情報。s.Options.StoreAdvisor
が false
の場合は []
として返されます。それ以外の場合、Advisor
は次のいずれかとして返されます。
linsys
が単一の状態空間モデルの場合、Advisor
はLinearizationAdvisor
オブジェクトになります。linsys
が状態空間モデルの配列の場合、Advisor
はlinsys
と同じ次元をもつLinearizationAdvisor
オブジェクトの配列になります。
LinearizationAdvisor
オブジェクトは個々の線形化ブロックについての線形化の診断情報を格納します。LinearizationAdvisor
オブジェクトを使用して線形化の結果をトラブルシューティングする例は、コマンド ラインを使用した線形化の結果のトラブルシューティングを参照してください。
詳細
ある点での "ループ伝達関数" とは、ある点での加法的な外乱から同じ点での測定値への点と点を結ぶ開ループ伝達関数のことです。
解析ポイント x
でのループ伝達関数を計算するために、ソフトウェアは線形化出力を追加し、ループの中断を挿入して、線形化入力 dx
を追加します。ソフトウェアは、dx
から x
への伝達関数を計算します。これは、x
でのループ伝達関数と同じです。
Simulink モデルでの解析ポイント | getLoopTransfer による解析ポイントの解釈 | ループ伝達関数 |
---|---|---|
|
|
|
たとえば、e
でのループ伝達関数を計算する次のモデルについて考えます。
ここで、ソフトウェアは e
において線形化出力を追加し、ループの中断を挿入して、線形化入力 de
を追加します。e
でのループ伝達関数 L は、de
から e
への伝達関数です。L は、以下のように計算されます。
-KG を計算するには、getLoopTransfer
の解析ポイントとして u
を使用します。
ソフトウェアは、ループ伝達関数を計算する際に Simulink モデルを変更しません。
"解析ポイント" は、slLinearizer
と slTuner
インターフェイスで使用され、モデル内で線形解析と制御システムの調整に関連する箇所を示します。解析ポイントは、getIOTransfer
、getLoopTransfer
、getSensitivity
、getCompSensitivity
などの線形化コマンドの入力として使用します。線形化コマンドの入力として、解析ポイントによりモデル内の開ループまたは閉ループの伝達関数を指定できます。また、systune
などのコマンドを使って制御システムを調整する際に、解析ポイントを使用して設計要件を指定することもできます。
"場所" とは、モデル内の特定のブロック出力端子か、そのような出力端子にあるバス要素を指します。便宜上、この端子から発信する信号の名前を使って解析ポイントを示すことができます。
解析ポイントは、slLinearizer
または slTuner
インターフェイス s
に対して、インターフェイスの作成時に追加できます。以下に例を示します。
s = slLinearizer('scdcascade',{'u1','y1'});
また、addPoint
コマンドを使用することもできます。
s
のすべての解析ポイントを表示するには、コマンド プロンプトで s
と入力してインターフェイスの内容を表示します。s
の各解析ポイントの表示には、ブロック名、端子番号、およびこの解析ポイントから発信される信号の名前が含まれます。getPoints
を使用して、すべての解析ポイントのリストをプログラムで取得することもできます。
解析ポイントの使用方法の詳細については、制御システムの解析と設計における対象信号のマークおよびバッチ線形化用に対象の信号をマークするを参照してください。
"永続的な開始点" とは、slLinearizer
および slTuner
インターフェイスで使用され、ソフトウェアがモデル内で信号の流れを中断する箇所を示します。線形化および調整時に、これらの開始点が強制的に適用されます。永続的な開始点は、ある特定のモデル コンポーネントを分離するために使用します。航空機のダイナミクスを取得する大規模なモデルがあり、機体にのみ線形解析を実行するとします。永続的な開始点を使用すれば、このモデルの他のコンポーネントをすべて除外できます。モデル内にカスケード式ループがあり、特定のループを解析する場合などにも使用できます。
"場所" とは、モデル内の特定のブロック出力端子を指します。便宜上、この端子から発信する信号の名前を使って開始点を示すことができます。
永続的な開始点は、slLinearizer
または slTuner
インターフェイス s
に対して、インターフェイスの作成時に追加するか、addOpening
コマンドを使用して追加できます。永続的な開始点のリストから場所を削除するには、removeOpening
コマンドを使用します。
s
のすべての開始点を表示するには、コマンド プロンプトで s
と入力してインターフェイスの内容を表示します。s
のそれぞれの永続的な開始点の表示には、ブロック名、端子番号、およびこの場所から発信される信号の名前が含まれます。getOpenings
を使用して、すべての永続的なループ開始点のリストをプログラムで取得することもできます。
バージョン履歴
R2013b で導入Sparse Second Order ブロックまたは Descriptor State-Space ブロックを含む Simulink モデルからスパース モデルを線形化および取得できます。
Simulink モデルで Sparse Second Order を使用する場合の
mechss
モデル。Descriptor State-Space ブロックを使用し、[スパース モデルに線形化する] ブロック パラメーターを選択する場合の
sparss
モデル。
詳細については、スパース モデルの基礎を参照してください。例については、スパース 2 次モデル オブジェクトへの Simulink モデルの線形化を参照してください。
Simulink モデルを線形化する際にモデルの入力、出力、状態、および状態微分の操作点のオフセットを計算できます。3 つのオフセットにより、線形パラメーター変動 (LPV) システムの作成が合理化します。
操作点のオフセットを取得するには、まず linearizeOptions
または slTunerOptions
オブジェクトを作成して、StoreOffsets
オプションを true
に設定します。次に、モデルの slLinearizer
または slTuner
インターフェイスを作成します。
getLoopTransfer
の info
出力引数からオフセットを抽出し、関数 getOffsetsForLPV
を使用して LPV System ブロックの必要な形式に変換できます。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)