Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

getLoopTransfer

genss モデルで表される制御システムの開ループ伝達関数

説明

L = getLoopTransfer(T,Locations) は、指定された解析ポイントで制御システムのポイント間を結ぶ開ループ伝達関数を返します。制御システムは、一般化状態空間モデル T で表され、Locations で指定された解析ポイントを含みます。ポイント間を結ぶ開ループ伝達関数は、指定された位置でループを開き、それらの位置に信号を与え、同じ位置で帰還信号を測定することよって取得された開ループ応答です。

L = getLoopTransfer(T,Locations,sign) は、開ループ応答を計算するためのフィードバック符号を指定します。閉ループ応答 T と開ループ応答 L の関係は T = feedback(L,1,sign) となります。

L = getLoopTransfer(T,Locations,sign,openings) は、Locations での開ループ応答を計算するために開く、追加のループ開始位置を指定します。

すべて折りたたむ

次の制御システム モデルの、AnalysisPoint ブロック X で指定された解析ポイントでの開ループ応答を計算します。

数値 LTI プラント モデル G、調整可能なコントローラー C、および AnalysisPointX を指定し、接続することで、システムのモデルを作成します。

G = tf([1 2],[1 0.2 10]);
C = tunablePID('C','pi');
X = AnalysisPoint('X');  
T = feedback(G*X*C,1);

T は、r から y への制御システムの閉ループ応答を表す genss モデルです。モデルには、ループ開始の可能な位置を特定する AnalysisPoint ブロック X が含まれます。

位置 X で、ポイント間を結ぶ開ループ伝達を計算します。

L = getLoopTransfer(T,'X');

このコマンドは、X でループを開き、信号を G に与え、結果として生じる応答を C の出力で測定することによって取得される、伝達関数を計算します。既定では、getLoopTransfer は正のフィードバック伝達関数を計算します。これは、符号の変更なしにループが X で閉じると仮定するループ伝達です。この例では、正のフィードバックの伝達関数は L(s)=-C(s)G(s) となります。

出力 L は調整可能なブロック C を含む genss モデルです。getValue を使用して L の現在の値を取得でき、そこではすべての調整可能な L のブロックが、それぞれの現在の数値に対し評価されます。

次の閉ループ システムの、AnalysisPoint ブロック X で指定された解析ポイントでの安定余裕を計算します。

数値 LTI プラント モデル G、調整可能なコントローラー C、および AnalysisPoint ブロック X を指定し、接続することで、システムのモデルを作成します。

G = tf([1 2],[1 0.2 10]);
C = pid(0.1,1.5);
X = AnalysisPoint('X');  
T = feedback(G*X*C,1);

T は、r から y への制御システムの閉ループ応答を表す genss モデルです。このモデルには、ループ開始の可能な位置を特定する AnalysisPoint ブロック X が含まれます。

既定では、getLoopTransfer は、T = feedback(L,1,+1) を満たすように指定された解析ポイントで伝達関数 L を返します。ただし、margin は負のフィードバックを前提にしているため、margin(L) は負のフィードバックの閉ループ システム feedback(L,1) の安定余裕を計算します。したがって、安定余裕を解析するには、入力引数 sign-1 に設定し、T = feedback(L,1) を満たす伝達関数 L を抽出します。この例では、この伝達関数は L(s)=C(s)G(s) です。

L = getLoopTransfer(T,'X',-1);

このコマンドは、ループが負のフィードバックで閉じていることを前提にして、G の入力から C の出力への開ループ伝達関数を計算します。これは、margin のような解析コマンドで使用できます。

[Gm,Pm] = margin(L)
Gm = 1.4100
Pm = 4.9486

外側のループが開いた状態で、次のカスケード制御システムの内側のループの開ループ応答を計算します。

数値プラント モデル G1G2、調整可能なコントローラー C1、ループ開始の可能な位置を示す AnalysisPoint ブロック X1 および X2 の指定と接続を行って、システムのモデルを作成します。

G1 = tf(10,[1 10]);
G2 = tf([1 2],[1 0.2 10]);
C1 = tunablePID('C','pi');
C2 = tunableGain('G',1);
X1 = AnalysisPoint('X1');
X2 = AnalysisPoint('X2');
T = feedback(G1*feedback(G2*C2,X2)*C1,X1);

X1 で外側のループが開いた状態で、内側のループの位置 X2 における、負のフィードバックの開ループ応答を計算します。

L = getLoopTransfer(T,'X2',-1,'X1');

既定では、AnalysisPoint ブロック X1 でマークされた解析ポイントの位置でループは閉じられます。openings 引数に 'X1' を指定すると、要求された X2 でのループ伝達を計算するために、getLoopTransfer によって X1 でループが開かれます。この例では、負のフィードバックの開ループ応答は L(s)=G2(s)C2(s) となります。

入力引数

すべて折りたたむ

一般化状態空間 (genss) モデルとして指定された、制御システムのモデル。ループの開始と開ループ解析の実行が可能な位置は、TAnalysisPoint ブロックでマークされます。

開ループのポイント間の応答を計算するための、制御システム モデルにおける解析ポイントの位置。T 内の解析ポイントの位置を特定する文字ベクトルまたは文字ベクトルの cell 配列として指定されます。

解析ポイントの位置は TAnalysisPoint ブロックによってマークされます。AnalysisPoint ブロックは単一または複数のチャネルをもつことができます。AnalysisPoint ブロックの Location プロパティは、これらのフィードバック チャネルに名前を設定します。

TAnalysisPoint ブロックにおける任意のチャネルの名前は、getLoopTransferLocations 引数に対する有効なエントリです。T 内の利用可能な解析ポイントの完全なリストを取得するには、getPoints(T) を使用します。

getLoopTransfer は、AnalysisPoint チャネルと関連付けられた暗黙的な入力で信号を与え、同チャネルと関連付けられた暗黙的な出力での応答を測定することによって取得される、開ループ応答を計算します。これらの暗黙的な入力と出力は、次のように配置されます。

L は、in から out までの開ループ伝達関数です。

解析する開ループ伝達関数の符号。+1 または -1 として指定します。

既定では、入力閉ループシステム T の場合、この関数は T = feedback(L,1,+1) を満たすように指定された解析ポイントで伝達関数 L を返します。ただし、開ループ応答を取得する特定の解析コマンドは、負のフィードバックでループが閉じると仮定します。たとえば、margin(L) は、負のフィードバックの閉ループ システム feedback(L,1) の安定余裕を計算します。同様に、bode プロットを右クリックして取得できる安定余裕では、同じ仮定が成り立ちます。したがって、getLoopTransfer を使用して、閉ループの安定性を解析する目的で開ループ伝達関数を抽出する場合は、sign = -1 を設定して、T = feedback(L,1) のように伝達関数 L を抽出できます。

たとえば、T が r から y までの閉ループ伝達関数である次のシステムについて考えます。

既定では、L = getLoopTransfer(T,'X') は、T = feedback(L,1,+1) を満たすように、伝達関数 L = –C(s)G(s) を計算します。負のフィードバックを前提とする margin コマンドを使用して X における安定余裕を計算するには、T = feedback(L,1) を満たす伝達関数 L = C(s)G(s) を計算します。これを行うには、L = getLoopTransfer(T,'X',-1) を使用します。

開ループ応答を計算するための、追加のフィードバック ループ開始位置。T 内の解析ポイントを特定する文字ベクトルまたは文字ベクトルの cell 配列として指定されます。解析ポイントの位置は TAnalysisPoint ブロックによってマークされます。TAnalysisPoint ブロックの Location プロパティに含まれるチャネル名は、すべて openings に対する有効なエントリです。

ある解析ポイントの位置での開ループ応答を計算する際に、他の位置で開いている他のループがある場合は、openings を使用します。たとえば、カスケード式のループ構成では、外側のループが開いている状態で内側のループの開ループ応答を計算できます。T 内で利用可能な解析ポイントの完全なリストを取得するには、getPoints(T) を使用します。

出力引数

すべて折りたたむ

Locations で指定された解析ポイントで測定した、制御システム T のポイント間を結ぶ開ループ応答。一般化状態空間 (genss) モデルとして返されます。

  • Locations で単一の解析ポイントを指定する場合、L は SISO genss モデルになります。この場合 L は、Locations でループを開き、信号を与え、同じ位置で帰還信号を測定することによって取得した応答を表します。

  • Locations がベクトル信号であるか、または複数の解析ポイントを指定する場合、L は MIMO genss モデルになります。この場合 L は、Locations でリストされているすべての位置でループを開き、信号を与え、これらの位置で帰還信号を測定することによって取得した開ループ MIMO 応答を表します。

ヒント

  • 制御システム全体の一般化モデルが与えられた場合は、getLoopTransfer を使用して開ループ応答を抽出できます。これは、たとえば、systune などの調整コマンドを使用して調整した制御システムの開ループ応答を検証する場合に便利です。

  • getLoopTransfer は、genss において Simulink® Control Design™ のコマンド getLoopTransfer (Simulink Control Design) に相当するもので、slTuner および slLinearizer インターフェイスで機能します。制御システムが Simulink でモデル化されている場合は、Simulink Control Design のコマンドを使用します。

バージョン履歴

R2012b で導入

参考

| | | | | (Simulink Control Design)