このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
connect
動的システムのブロック線図相互接続
構文
説明
は、インデックスベースの相互接続を使用して、統合された、未接続のモデル sysc
= connect(blksys
,connections
,inputs
,outputs
)blksys
から sysc
を作成します。行列 connections
は、blksys
の出力と入力がどのように相互接続されるかを指定します。インデックスベースの相互接続では、inputs
と outputs
は blksys
のどの入力と出力が sysc
の外部入力と外部出力になるかを指定するインデックス ベクトルです。この構文は、接続するすべてのモデルのあらゆる入力と出力に名前を割り当てるとは限らない場合に便利です。ただし、通常は、名前を付けた信号を追跡する方が簡単です。
は、sysc
= connect(___,opts
)sysc
のダイナミクスに寄与しない未接続の状態を保持するなど、追加オプションを使用して、相互接続されているモデルを作成します。opts
を作成するには、connectOptions
を使用します。opts
は、上記のどの構文でも入力引数とともに使用できます。
例
以下のような "r" から "y" へのブロック線図の統合モデルを作成します。
このモデルにはプラント G
、フィードバック コントローラー C
、およびフィードフォワード コントローラー F
が含まれています。これらの各要素を表す動的システム モデルを作成します。
C = pid(2,1); G = zpk([],[-1,-1,-5],1); F = tf(3,[1 3]);
信号名を使用してブロック線図を作成する準備として、ブロック線図に示される入力名と出力名を各要素に割り当てます。これを行うには、要素の InputName
プロパティと OutputName
プロパティを設定します。
C.InputName = "e"; C.OutputName = "uc"; G.InputName = "u"; G.OutputName = "y"; F.InputName = "r"; F.OutputName = "uf";
ブロック線図には 2 つの加算結合も含まれます。1 つの加算結合は基準信号 "r" とプラント出力 "y" の差を受け取って誤差信号 "e" を計算します。もう 1 つの加算結合はフィードフォワード コントローラー出力 "uf" をフィードバック コントローラー出力 uc
に加算してプラント入力 "u" を計算します。sumblk
コマンドを使用してこれらの加算結合を作成します。sumblk
を使用するには、加算結合の式を string として記述します。
S1 = sumblk("e = r - y"); S2 = sumblk("u = uc + uf");
sumblk
は、式で指定した入力名と出力名を使用して、和を表す tf
モデル オブジェクトを返します。たとえば、S1
の信号名を確認します。
S1
S1 = From input "r" to output "e": 1 From input "y" to output "e": -1 Static gain. Model Properties
ここで、すべての要素を結合して、"r" から "y" へのブロック線図内のシステムの応答を表す統合モデルを作成できます。connect
に、結合する要素のリスト、統合モデルの目的の入力信号 r
、および目的の出力信号 y
を指定します。connect
コマンドは、名前の一致する入力と出力を接続して、要素を自動的に連結します。
T = connect(G,C,F,S1,S2,"r","y"); size(T)
State-space model with 1 outputs, 1 inputs, and 5 states.
T.InputName
ans = 1×1 cell array
{'r'}
T.OutputName
ans = 1×1 cell array
{'y'}
上記の例の制御システムを作成します。ここで、G
、C
、および F
はすべて 2 入力 2 出力のモデルです。
この例では、信号 "r"、"y"、"e" などはすべて、それぞれ 2 要素のベクトル信号です。まず、モデルを作成してその入力と出力に名前を付けます。
C = [pid(2,1), 0; 0,pid(5,6)]; F = [tf(3,[1 3]), 0; 0, tf(3,[1 3])]; G = ss(-1,[1,2],[1;-1],0);
入力名と出力名を割り当てます。
C.InputName = "e"; C.OutputName = "uc"; G.InputName = "u"; G.OutputName = "y"; F.InputName = "r"; F.OutputName = "uf";
ベクトル値の信号に単一の名前を割り当てると、自動的にベクトル拡張が適用され、それぞれの入力チャネルと出力チャネルに一意の名前が付与されます。たとえば、プラント入力の名前を確認します。
G.InputName
ans = 2×1 cell
{'u(1)'}
{'u(2)'}
この例では、ブロック線図のすべての MIMO コンポーネントの信号名でベクトル拡張を使用しています。代わりに、信号に個別に名前を付けることもできます。ただし、連結する信号の名前が一致している必要があります。一部のブロック線図の要素で個別に名前を付けた信号を使用する例については、固定コンポーネントと調整可能なコンポーネントを含む MIMO 制御システムを参照してください。
次に、ベクトル値の加算結合を作成します。sumblk
も、ベクトル信号に対して sum 式で指定された信号名を自動的に拡張します。これは、S2
の入力名を調べることで確認できます。
S1 = sumblk("e = r - y",2); S2 = sumblk("u = uc + uf",2); S2.InputName
ans = 4×1 cell
{'uc(1)'}
{'uc(2)'}
{'uf(1)'}
{'uf(2)'}
すべての要素を結合して、"y" に対する応答 "r" を表す統合モデル (つまり、[r(1),r(2)] から [y(1),y(2)]) を作成します。
T = connect(G,C,F,S1,S2,"r","y"); size(T)
State-space model with 2 outputs, 2 inputs, and 5 states.
T.InputName
ans = 2×1 cell
{'r(1)'}
{'r(2)'}
T.OutputName
ans = 2×1 cell
{'y(1)'}
{'y(2)'}
以下のブロック線図について考えます。
feedback
を使用してこの閉ループ システムのモデルを作成し、そのモデルを使用して r
から y
へのシステム応答を調べることができます。プラント入力で挿入された外乱に対する閉ループ システムの応答も調べるとします。そのために、connect
を使用してシステムを構築し、位置 u
に解析ポイントを挿入できます。
まず、ブロック線図で示されているように入力と出力に名前を付け、プラントとコントローラーのモデルを作成します。
C = pid(2,1); C.InputName = "e"; C.OutputName = "u"; G = zpk([],[-1,-1],1); G.InputName = "u"; G.OutputName = "y";
基準信号 r
とプラント出力 y
の差を受け取って誤差信号 e
を計算する加算結合を作成します。
Sum = sumblk("e = r - y");
C
、G
、および加算結合を結合し、統合モデルを作成します。connect
への APs
入力引数を使用して "u" に解析ポイントを挿入します。
input = "r"; output = "y"; APs = "u"; CL = connect(G,C,Sum,input,output,APs)
Generalized continuous-time state-space model with 1 outputs, 1 inputs, 3 states, and the following blocks: CONNECT_AP1: Analysis point, 1 channels, 1 occurrences. Model Properties Type "ss(CL)" to see the current value and "CL.Blocks" to interact with the blocks.
この閉ループ モデルは、AnalysisPoint
制御設計ブロックを含む一般化状態空間 (genss
) モデルです。CL
にある解析ポイント チャネルの名前を確認するには、getPoints
を使用します。
getPoints(CL)
ans = 1×1 cell array
{'u'}
解析ポイントを挿入すると、次のブロック線図と等価のモデルが作成されます。ここで、AP_u
は、チャネル名 u
をもつ AnalysisPoint
ブロックを指しています。
この解析ポイントを使用してシステム応答を抽出します。たとえば、次のコマンドでは、u
に挿入された外乱に対する u
での開ループ伝達と y
での閉ループ応答が抽出されます。
L = getLoopTransfer(CL,"u",-1); CLdist = getIOTransfer(CL,"u","y");
インデックスベースの相互接続を使用して、すべての入力と出力に名前を付けずに、モデル要素を接続できます。方法を理解するために、インデックスベースの相互接続を使用して、"r" から "y" までの以下のフィードバック ループのモデルを作成します。
まず、閉ループ システムの要素であるプラントとコントローラーを作成します。
C = pid(2,1); G = zpk([],[-1,-1,-5],1);
append
を使用して、要素を単一の未接続の統合モデルにグループ化します。
blksys = append(C,G);
append
は、以下のブロック線図に示されているように、指定したモデルを MIMO スタック モデルに配置します。
このスタック モデルをフィードバック ループに等価にするには、connect
で以下の接続を行う必要があります。
G
の入力がC
の出力を受け取るか、w1
がu2
に入力される。C
の入力がG
の出力の負を受け取るか、-w2
が-u1
に入力される。
このような接続を行うように connect
に指示するには、blksys
の入力ベクトル u
と出力ベクトル y
で表される 1 つの接続または加算結合を各行が指定する行列を作成します。
connections = [2 1; % w1 feeds into u2 1 -2]; % -w2 feeds into u1
最後に、閉ループ モデルの外部入力と外部出力で使用する blksys
の入力と出力をインデックスで指定します。
inputs = 1; % r drives u1 outputs = 2; % y is y2
これで、閉ループ モデルを完成させることができます。
sysc = connect(blksys,connections,inputs,outputs); step(sysc)
この例では、それぞれが解析ポイントをもつ、connect
で作成した 2 つのモデルを結合する場合の想定される動作を示します。
次のコマンドを使用して、カスケード フィードバック ループのモデルを作成します。
G1 = tf([1],[1 0]); G1.u = 'OuterError'; G1.y = 'InnerCmd'; G2 = tf([1], [1 1]); G2.u = 'InnerError'; G2.y = 'ActuatorCmd'; SumOuter = sumblk('OuterError = OuterCmd - Outer'); SumInner = sumblk('InnerError = InnerCmd - Inner'); Sys1 = connect(G1,G2,SumOuter,SumInner,{'OuterCmd','Outer','Inner'},'ActuatorCmd', {'InnerError','OuterError'})
Generalized continuous-time state-space model with 1 outputs, 3 inputs, 2 states, and the following blocks: CONNECT_AP1: Analysis point, 2 channels, 1 occurrences. Model Properties Type "ss(Sys1)" to see the current value and "Sys1.Blocks" to interact with the blocks.
一般化モデル Sys1
には、InnerError
と OuterError
のチャネルをもつ単一の解析ポイント ブロックが含まれています。
あるいは、内側のループと外側のループを個別に定義することもできます。
P1 = connect(G1,SumOuter,{'OuterCmd','Outer'},'InnerCmd','OuterError')
Generalized continuous-time state-space model with 1 outputs, 2 inputs, 1 states, and the following blocks: CONNECT_AP1: Analysis point, 1 channels, 1 occurrences. Model Properties Type "ss(P1)" to see the current value and "P1.Blocks" to interact with the blocks.
P2 = connect(G2,SumInner,{'InnerCmd','Inner'},'ActuatorCmd','InnerError')
Generalized continuous-time state-space model with 1 outputs, 2 inputs, 1 states, and the following blocks: CONNECT_AP1: Analysis point, 1 channels, 1 occurrences. Model Properties Type "ss(P2)" to see the current value and "P2.Blocks" to interact with the blocks.
P1
と P2
の両方に CONNECT_AP1
という名前の解析ブロックがあります。次に、これらの 2 つのモデルを結合してカスケード式ループのモデル Sys2
を作成します。
Sys2 = connect(P1,P2,{'OuterCmd','Outer','Inner'},'ActuatorCmd')
Generalized continuous-time state-space model with 1 outputs, 3 inputs, 2 states, and the following blocks: CONNECT_AP1: Analysis point, 1 channels, 1 occurrences. CONNECT_AP2: Analysis point, 1 channels, 1 occurrences. Model Properties Type "ss(Sys2)" to see the current value and "Sys2.Blocks" to interact with the blocks.
このモデルには、CONNECT_AP1
および CONNECT_AP2
という名前の 2 つの別々の解析ポイント ブロックが含まれています。P1
と P2
の AnalysisPoint
ブロックの名前は、競合を避けるために自動的に変更されます。
入力引数
相互接続する動的システム モデルまたは他のブロック線図の要素。以下として指定します。
genss
、genfrd
、uss
(Robust Control Toolbox)、ufrd
(Robust Control Toolbox) モデルなど、一般化された、あるいは不確かさをもつ LTI モデル。tunablePID
、tunableSS
、tunableGain
、tunableTF
、tunableSurface
、ultidyn
(Robust Control Toolbox)、umargin
(Robust Control Toolbox) ブロックなど、調整可能な、あるいは不確かさをもつブロック線図の要素を表す制御設計ブロック。ブロック線図内でシステム応答を抽出する位置を表す
AnalysisPoint
ブロック。sumblk
を使用して作成した加算結合。idtf
(System Identification Toolbox)、idss
(System Identification Toolbox)、idproc
(System Identification Toolbox) モデルなどの同定された LTI モデル。
結合モデルの入力。文字ベクトル、文字ベクトルの cell 配列、string、string ベクトル、正の整数、または正の整数のベクトルとして指定します。
結合モデルの出力。文字ベクトル、文字ベクトルの cell 配列、string、string ベクトル、正の整数、または正の整数のベクトルとして指定します。
統合モデル内の対象箇所 (内部信号)。'X'
や {'AP1','AP2'}
などの文字ベクトルまたは文字ベクトルの cell 配列、あるいは string または string ベクトルとして指定します。結果として得られるモデルには、各対象箇所に解析ポイントが含まれます (AnalysisPoint
を参照)。APs
内の各位置は、1 つ以上のブロック線図要素 sys
1,...
sys
N
の InputName
または OutputName
プロパティにある項目に対応しなければなりません。
未接続の統合モデル。append
で作成した動的システム モデルとして指定します。インデックスベースの相互接続では、blksys
を使用します。append
コマンドは、ブロック線図の要素の入力と出力間を相互接続することなく、それらの入力と出力を縦に並べます。たとえば、ブロック線図に動的システム モデル C
、G
、S
が含まれている場合は、次のコマンドを使って blksys
を作成します。
blksys = append(C,G,S)
次に、connections
引数を使用して blksys
の入力と出力間の相互接続を指定します。例については、インデックスベースの相互接続を参照してください。
ブロック線図の接続と加算結合。行列として指定します。インデックスベースの相互接続では、connection
を使用します。connections
の各行は、未接続の統合モデル blksys
の入力ベクトル u
と出力ベクトル w
で表される 1 つの接続または加算結合を指定します。たとえば、次の行があるとします。
[3 2 0 0]
これは、blksys
の 2 番目の出力である w(2)
が blksys
の 3 番目の入力である u(3)
に接続されることを指定します。また、次の行が指定されているとします。
[7 2 -15 6]
これは、w(2) - w(15) + w(6)
の和が blksys
の 7 番目の入力である u(7)
に入力されることを示しています。
特定の入力または出力に対する接続を指定しない場合、connect
は統合モデルからその入力または出力を省略します。
相互接続の追加オプション。connectOptions
で作成するオプション セットとして指定されます。
既定では、connect
コマンドは、相互接続されているシステムの入力と出力間のパスでダイナミクスに寄与しない状態を破棄します。相互接続モデルでこのような状態を保持するには、connectOptions
を使用します。このオプションは、たとえば、コンポーネントの既知の初期状態値から、相互接続されたシステムの応答を計算する場合などに便利です。
出力引数
状態空間モデルまたは周波数応答モデルとして返される、相互接続されたシステム。返されるモデルのタイプは入力モデルによって異なります。以下に例を示します。
数値 LTI モデル (
frd
モデル以外) の相互接続はss
モデルを返します。数値 LTI モデルを制御設計ブロックと相互接続すると、一般化状態空間モデルが返されます。たとえば、
tf
モデルをtunablePID
制御設計ブロックと相互接続するとgenss
モデルが返されます。数値 LTI モデルをスパース モデルと相互接続すると、スパース モデルが返されます。
任意のモデルを周波数応答データ モデルと相互接続すると、周波数応答データ モデルが返されます。
既定では、connect
は、相互接続されているモデルの指定された入力から指定された出力への I/O 伝達関数に影響しない状態を自動的に破棄します。未接続の状態を保持するには、connectOptions
の Simplify
オプションを false
に設定します。以下に例を示します。
opt = connectOptions('Simplify',false); sysc = connect(sys1,sys2,sys3,'r','y',opt);
バージョン履歴
R2006a より前に導入ブロック線図を connect
でモデル化するときに解析ポイントを指定できます。結果のモデルを任意の相互接続関数で結合すると、それらの解析ポイント ブロックの名前が競合を避けるために自動的に変更されます。R2024a より前は、このような結合はできませんでした。
例については、解析ポイントをもつ 2 つの相互接続モデルの結合を参照してください。
以下の構文により、APs
入力引数を使用して解析ポイントの位置を指定できるようになりました。
sysc = connect(sys1,sys2,...,sysN,inputs,outputs,APs)
例については、解析ポイントをもつフィードバック ループを参照してください。
既定では、connect
コマンドは、相互接続されているシステムの入力と出力間のパスでダイナミクスに寄与しない状態を破棄します。opts
入力引数を使用してそのような未接続の状態を保持できるようになりました。このオプションは、たとえば、コンポーネントの既知の初期状態値から、相互接続されたシステムの応答を計算する場合などに便利です。connectOptions
を指定して opts
を作成します。
入力モデルの 1 つ以上が周波数応答データ モデルでない限り、connect
は常に ss
、genss
、uss
モデルなどの状態空間モデルを返します。そのケースに該当する場合は、connect
は frd
や genfrd
モデルなどの周波数応答データ モデルを返します。以前のリリースでは、すべての入力モデルが tf
または zpk
モデルであった場合、connect
は tf
または zpk
モデルを返していました。
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)