Main Content

connect

動的システムのブロック線図相互接続

構文

sysc = connect(sys1,...,sysN,inputs,outputs)
sysc = connect(sys1,...,sysN,inputs,outputs,APs)
sysc = connect(blksys,connections,inputs,outputs)
sysc = connect(___,opts)

説明

sysc = connect(sys1,...,sysN,inputs,outputs) は、信号名に基づいて、ブロック線図要素 sys1,...,sysN を接続します。ブロック線図要素 sys1,...,sysN は、動的システム モデルです。これらのモデルには、sumblk を使用して作成される加算結合を含めることができます。connect コマンドは、sys1,...,sysNInputNameOutputName プロパティで指定される入力信号と出力信号を照合することにより、ブロック線図の要素を相互に接続します。統合モデル sysc は動的システム モデルであり、inputsoutputs によりそれぞれ指定される入力と出力をもちます。

sysc = connect(sys1,...,sysN,inputs,outputs,APs) は、APs で指定された各信号箇所に AnalysisPoint を挿入します。解析ポイントは、統合モデル内の内部信号である対象箇所をマークするために使用します。たとえば、ループ伝達関数を抽出する位置や安定余裕を測定する位置が対象箇所となります。

sysc = connect(blksys,connections,inputs,outputs) は、インデックスベースの相互接続を使用して、統合された、未接続のモデル blksys から sysc を作成します。行列 connections は、blksys の出力と入力がどのように相互接続されるかを指定します。インデックスベースの相互接続では、inputsoutputsblksys のどの入力と出力が sysc の外部入力と外部出力になるかを指定するインデックス ベクトルです。この構文は、接続するすべてのモデルのあらゆる入力と出力に名前を割り当てるとは限らない場合に便利です。ただし、通常は、名前を付けた信号を追跡する方が簡単です。

sysc = connect(___,opts) は追加オプションを使用して、相互接続されているモデルを作成します。opts は、上記のどの構文でも入力引数とともに使用できます。

入力引数

sys1,...,sysN

ブロック線図の要素に対応する動的システム モデル。たとえば、ブロック線図の要素には、プラント ダイナミクスを表す 1 つ以上の tf モデルまたは ss モデルを含めることができます。また、ブロック線図要素はコントローラーを表す pid または tunablePID モデルを含めることができます。さらに、sumblk を使用して作成する 1 つ以上の加算結合を含めることもできます。複数の引数 sys1,...,sysN を供給してすべてのブロック線図要素と加算結合を表します。

inputs

名前ベースの相互接続において、統合モデル sysc の入力を指定する文字ベクトルまたは文字ベクトルの cell 配列。inputs 内の入力は、1 つ以上のブロック線図要素 sys1,...,sysNInputName または OutputName プロパティ内の項目に対応しなければなりません。

outputs

名前ベースの相互接続において、統合モデル sysc の出力を指定する文字ベクトルまたは文字ベクトルの cell 配列。outputs 内の出力は、1 つ以上のブロック線図要素 sys1,...,sysNOutputName プロパティ内の項目に対応しなければなりません。

APs

統合モデル内の対象箇所 (内部信号)。'X' または {'AP1','AP2'} など、文字ベクトルまたは文字ベクトルの cell 配列として指定します。結果として得られるモデルには、各対象箇所に解析ポイントが含まれます (AnalysisPoint を参照)。APs 内の各位置は、1 つ以上のブロック線図要素 sys1,...,sysNInputName または OutputName プロパティにある項目に対応しなければなりません。

blksys

未接続の統合モデル。blksys を取得するには、append を使用してブロック線図の要素の動的システム モデルを結合します。たとえば、ブロック線図に動的システム モデル CGS が含まれている場合は、次のコマンドを使って blksys を作成します。

blksys = append(C,G,S)

connections

ブロック線図の接続と加算結合を指定する行列。connections の各行は、未接続の統合モデル blksys の入力ベクトル u と出力ベクトル y で表される 1 つの接続または加算結合を指定します。たとえば、次の行があるとします。

[3 2 0 0]

これは、y(2)u(3) に接続されるよう指定します。また、次の行が指定されているとします。

[7 2 -15 6]

これは、y(2)-y(15)+y(6)u(7) に接続されることを示します。

特定の入力または出力に対する接続を指定しない場合、connect は統合モデルからその入力または出力を省略します。

opts

相互接続の追加オプション。connectOptions で作成するオプション セットとして指定されます。

出力引数

sysc

状態空間モデルまたは周波数応答モデルとして返される、相互接続されたシステム。返されるモデルのタイプは入力モデルによって異なります。以下に例を示します。

  • 数値 LTI モデル (frd モデル以外) の相互接続は ss モデルを返します。

  • 数値 LTI モデルと制御設計ブロックの相互接続は、一般化 LTI モデルを返します。たとえば、tf モデルを tunablePID 制御設計ブロックと相互接続すると genss が返されます。

  • 任意のモデルと周波数応答データ モデルの相互接続は、周波数応答データ モデルを返します。

既定では、connect は、相互接続されているモデルの指定された入力から指定された出力への I/O 伝達関数に影響しない状態を自動的に破棄します。未接続の状態を保持するには、connectOptionsSimplify オプションを false に設定します。以下に例を示します。

opt = connectOptions('Simplify',false);
sysc = connect(sys1,sys2,sys3,'r','y',opt);

SISO フィードバック ループ

以下のような r から y へのブロック線図の統合モデルを作成します。

CG を作成し、入力と出力の名前を指定します。

C = pid(2,1); 
C.u = 'e';  
C.y = 'u';
G = zpk([],[-1,-1],1);
G.u = 'u';  
G.y = 'y';

表記法 C.u および C.y は、それぞれ C.InputName および C.OutputName と同等の省略表現です。たとえば、C.u = 'e' と入力するのは C.InputName = 'e' を入力するのと同じです。このコマンドは、CInputName プロパティを値 'e' に設定します。

加算結合を作成します。

Sum = sumblk('e = r - y');

CG、および加算結合を結合し、r から y への統合モデルを作成します。

T = connect(G,C,Sum,'r','y');

connect は、名前の一致する入力と出力を自動的に連結します。

MIMO フィードバック ループ

上記の例の制御システムを作成します。ここで、GC は両方とも 2 入力 2 出力のモデルです。

C = [pid(2,1),0;0,pid(5,6)];
C.InputName = 'e';  
C.OutputName = 'u';
G = ss(-1,[1,2],[1;-1],0);
G.InputName = 'u';  
G.OutputName = 'y';

ベクトル値の信号に単一の名前を指定すると、自動的に信号名のベクトル拡張が実行されます。たとえば、C への入力名を検討してみましょう。

C.InputName
ans = 

    'e(1)'
    'e(2)'

2 入力 2 出力の加算結合を作成します。

Sum = sumblk('e = r-y',2);

また、sumblk は信号名のベクトル拡張も実行します。

モデルを相互接続して閉ループ システムを取得します。

T = connect(G,C,Sum,'r','y');

ブロック線図要素 GC、および Sum はすべて 2 入力 2 出力のモデルです。そのため、connect は同じベクトル拡張を実行します。connect は、2 入力の信号 'r''y' のすべての項目をそれぞれ T への入力と出力として選択します。たとえば、T への入力名を検討してみましょう。

T.InputName
ans = 

    'r(1)'
    'r(2)'

connect によって挿入された解析ポイントをもつフィードバック ループ

次のブロック線図の r から y までのモデルを作成します。内部の位置 u に解析ポイントを挿入します。

CG を作成し、入力と出力の名前を指定します。

C = pid(2,1); 
C.InputName = 'e';  
C.OutputName = 'u';
G = zpk([],[-1,-1],1);
G.InputName = 'u';  
G.OutputName = 'y';

加算結合を作成します。

Sum = sumblk('e = r - y');

CG、および加算結合を組み合わせて、解析ポイントを u にもつ統合モデルを作成します。

T = connect(G,C,Sum,'r','y','u')
Generalized continuous-time state-space model with 1 outputs, 1 inputs, 3 states, and the following blocks:
  AnalysisPoints_: Analysis point, 1 channels, 1 occurrences.
Model Properties

Type "ss(T)" to see the current value and "T.Blocks" to interact with the blocks.

その結果である Tgenss モデルです。connect コマンドは AnalysisPoint ブロック AnalysisPoints_ を作成し、それを T に挿入します。AnalysisPoints_ にある解析ポイント チャネルの名前を確認するには、getPoints を使用します。

getPoints(T)
ans = 1x1 cell array
    {'u'}

解析ポイント チャネルの名前は 'u' です。この解析ポイントは、システム応答の抽出に使用できます。たとえば、次のコマンドでは、u に加えられた外乱に対する u での開ループ伝達と y での閉ループ応答が抽出されます。

L = getLoopTransfer(T,'u',-1);
Tuy = getIOTransfer(T,'u','y');

T は次のブロック線図と同等です。ここで、AP_u は、チャネル名 u をもつ AnalysisPoint ブロック AnalysisPoints_ を指しています。

インデックスベースの相互接続

インデックスベースの相互接続を使用して、次のブロック線図のような r から y への統合モデルを作成します。

CG および未接続の統合モデル blksys を作成します。

C = pid(2,1); 
G = zpk([],[-1,-1],1);
blksys = append(C,G);

blksys の入力 u(1),u(2) は、それぞれ CG の入力に対応します。blksys の出力 w(1),w(2) は、それぞれ CG の出力に対応します。

blksys のどの出力が blksys のどの入力に接続されるかを指定する行列 connections を作成します。

connections = [2 1; 1 -2];

最初の行は w(1)u(2) に接続されることを示します。つまり、C の出力が G の入力に接続されるということです。2 行目は -w(2)u(1) に接続されることを示します。つまり、G の負の出力が C の入力に接続されます。

r から y までの、接続された統合モデルを作成します。

T = connect(blksys,connections,1,2)

最後の 2 つの引数は、blksys のインデックスによって外部入力と外部出力を指定しています。引数 1 は、外部入力が u(1) に接続することを指定します。最後の引数 2 は、外部出力が w(2) から接続されるように指定します。

バージョン履歴

R2006a より前に導入