Main Content

add_line

ラインを Simulink モデルに追加する

説明

h = add_line(sys,out,in) は 1 つのブロックの出力端子 out を別のブロックの入力端子 in に接続するラインをモデルまたはサブシステム sys 内に追加します。この構文は、対角線やその他のブロックを通過するラインなど、端子から端子に最も直接的な経路を描画します。

次の場合に端子を接続できます。

  • 入力端子にまだ接続がない。

  • 端子は接続互換性がある。

h = add_line(sys,out,in,'autorouting',autoOption) はブロックを接続し、ラインに他のブロックを迂回させるかどうかを指定します。

h = add_line(sys,points) は、Simulink® エディターのキャンバスの左上隅から相対的な (x,y) 座標 points で描画したラインを追加してから、任意のキャンバスのサイズを変更します。ラインのどちらかの端点が対応する端子の 5 ピクセル内にある場合、関数はラインをそこに接続します。ラインは複数のセグメントをもつことができます。

すべて折りたたむ

新しいモデルを作成して開きます。

open_system(new_system('myModel'));

Constant ブロックを追加して配置します。

add_block('simulink/Commonly Used Blocks/Constant','myModel/Constant');
set_param('myModel/Constant','position',[140,80,180,120]);

Gain ブロックを追加して配置します。

add_block('simulink/Commonly Used Blocks/Gain','myModel/Gain');
set_param('myModel/Gain','position',[220,80,260,120]);

Constant ブロックの出力端子を Gain ブロックの入力端子に接続します。Constant ブロックには出力端子が 1 つしかないため、Constant ブロックに指定できる端子番号は 1 のみです。Gain ブロックには入力端子が 1 つしかないため、Gain ブロックに指定できる端子番号は 1 のみです。

add_line('myModel','Constant/1','Gain/1');

Scope ブロックを追加して配置します。

add_block('simulink/Commonly Used Blocks/Scope','myModel/Scope');
set_param('myModel/Scope','position',[300,80,340,120]);

Scope ブロックの入力端子数を 2 に変更します。

set_param('myModel/Scope','NumInputPorts','2')

Gain ブロックの出力端子を Scope ブロックの 2 番目の入力端子に接続します。Gain ブロックには出力端子が 1 つしかないため、Gain ブロックに指定できる端子番号は 1 のみです。Scope ブロックの 2 番目の端子に接続するため、Scope ブロックには端子番号 2 を指定します。

add_line('myModel','Gain/1','Scope/2');

例を開きます。次に、vdp モデルを開きます。

open_system('vdp')

Mu という名前のマスク Subsystem ブロックを Sum ブロックに接続するラインを削除します。

delete_line('vdp','Mu/1','Sum/2');

Mu という名前のマスク Subsystem ブロックと Sum ブロックから端子ハンドルを取得します。

h1 = get_param('vdp/Mu','PortHandles');
h2 = get_param('vdp/Sum','PortHandles')
h2 = struct with fields:
      Inport: [324.0006 325.0006]
     Outport: 326.0006
      Enable: []
     Trigger: []
       State: []
       LConn: []
       RConn: []
    Ifaction: []
       Reset: []
       Event: []

h2 構造体で、Inport プロパティの 2 つのハンドルに注目してください。

Mu という名前の Subsystem ブロックを Gain ブロックに接続します。端子ハンドルの Inport プロパティおよび Outport プロパティにインデックスを付けて、接続する端子を指定します。

add_line('vdp',h1.Outport(1),h2.Inport(2));

既存の信号線を分岐する接続をプログラムによって作成できます。points 構文を使用してセグメントを描画することも、接続する端子を指定してラインを描画することもできます。端子を使用する場合、自動ライン ルーティングを使用すると分岐線のレイアウトが向上します。

この例では、端子を使用して分岐信号線をもつ接続を作成する方法について説明します。

例を開きます。次に、vdp モデルを開きます。

open_system('vdp')

Scope ブロックを vdp モデルに追加します。

add_block('simulink/Commonly Used Blocks/Scope','vdp/Scope1');

Outport ブロックの上に Scope ブロックを配置します。

set_param('vdp/Scope1','position',[470,70,500,110]);

x1 という名前の Integrator ブロックを Scope1 という名前の Scope ブロックに接続します。

add_line('vdp','x1/1','Scope1/1','autorouting','on')

このコマンドは x1 という名前の Integrator ブロックから既存のラインを分岐させて、Scope1 という名前の Scope ブロックに接続します。autorouting をオンに指定すると、結果として得られるラインはセグメント化されます。

例を開きます。次に、vdp モデルを開きます。

open_system('vdp')

Mu という名前のマスク Subsystem ブロックを Sum ブロックに接続するラインを削除します。

delete_line('vdp','Mu/1','Sum/2')

Mu という名前のマスク Subsystem ブロックの端子の位置を取得します。Mu には 2 つの端子 (1 つの入力端子と 1 つの出力端子) があります。

mu = get_param('vdp/Mu','PortConnectivity');
mu.Position
ans = 1×2

   210   150

ans = 1×2

   250   150

最初の座標セットは入力ブロックに対応しています。2 つ目のセットは出力端子に対応しています。

Sum ブロックの端子の位置を取得します。このブロックには 3 つの端子 (2 つの入力端子と 1 つの出力端子) があります。

s = get_param('vdp/Sum','PortConnectivity');
s.Position
ans = 1×2

   310   135

ans = 1×2

   310   150

ans = 1×2

   345   145

最初の座標セットが上の入力端子に対応し、2 つ目のセットが下の入力端子に対応しています。3 つ目のセットは出力端子に対応しています。

Mu という名前のマスク Subsystem ブロックを Sum ブロックに接続するために、Subsystem ブロックの出力端子の座標を指定してから、Sum ブロックの下の入力端子の座標を指定します。

add_line('vdp',[250 150; 310 150])

autorouting オプションを使用する場合と使用しない場合に分けて、それぞれラインを追加できます。

モデルへのブロックの追加

myModel という名前の新しいモデルを作成します。

open_system(new_system('myModel'))

HideAutomaticNames パラメーターをオフにします。

set_param('myModel','HideAutomaticNames','off')

2 つの Subsystem ブロックと 1 つの Gain ブロックを追加します。

add_block('simulink/Commonly Used Blocks/Subsystem','myModel/Subsystem1');
add_block('simulink/Commonly Used Blocks/Subsystem','myModel/Subsystem2');
add_block('simulink/Commonly Used Blocks/Gain','myModel/Gain');

Gain ブロックが 2 つの Subsystem ブロックの間になるように各ブロックを配置します。

set_param('myModel/Subsystem1','position',[100 100 130 130]);
set_param('myModel/Gain','position',[230,100,260,130]);
set_param('myModel/Subsystem2','position',[360,100,390,130]);

各 Subsystem ブロックに入力端子と出力端子を追加します。

add_block('simulink/Sources/In1','myModel/Subsystem1/In2');
add_block('simulink/Commonly Used Blocks/Out1','myModel/Subsystem1/Out2');

add_block('simulink/Sources/In1','myModel/Subsystem2/In2');
add_block('simulink/Commonly Used Blocks/Out1','myModel/Subsystem2/Out2');

Autorouting なしでのブロックの結線

Subsystem1 という名前の Subsystem ブロックの出力端子を Subsystem2 という名前の Subsystem ブロックの入力端子に接続するラインを追加します。

add_line('myModel',{'Subsystem1/1','Subsystem1/2'},{'Subsystem2/1','Subsystem2/2'})

Autorouting を使用したブロックの結線

ラインを削除します。

delete_line('myModel','Subsystem1/1','Subsystem2/1')
delete_line('myModel','Subsystem1/2','Subsystem2/2')

smart autorouting オプションを使用して再度ラインを追加します。2 組の入力端子と出力端子を 1 つの配列を使用して接続すると、スペースを効率的に利用できる場合には、スマートな autorouting によってそれらがまとめて配線されます。

add_line('myModel',{'Subsystem1/1','Subsystem1/2'},{'Subsystem2/1','Subsystem2/2'},'autorouting','smart')

入力引数

すべて折りたたむ

ラインの追加先のモデルまたはサブシステム。文字ベクトルとして指定します。

例: 'vdp'

例: 'f14/Controller'

ラインの接続元のブロック出力端子。次の値のいずれかとして指定します。

  • ブロック名、スラッシュ、および端子番号。状態端子の場合は、端子番号の代わりに端子名の State を使用します。

  • 接続元とする端子ハンドル。

  • これらの端子指定子のいずれかの配列。

'PortHandles'get_param で使用してハンドルを取得します。

例: 'Mu/1'

例: 'Subsystem/2'

例: h.Outport(1)

例: {'Subsystem/1','Subsystem/2'}

ヒント

  • ほとんどのブロック端子には、上から下、左から右への順に番号が付けられます。ブロックの向きに関する端子の順番の詳細については、回転または反転したブロックの端子の位置の特定を参照してください。

  • Subsystem ブロックの端子を移動させることで、端子番号を変更できます。詳細については、端子の移動を参照してください。

ラインの接続先のブロック入力端子。次の値のいずれかとして指定します。

  • ブロック名、スラッシュ、および端子番号。次の端子では、端子番号の代わりに端子名を使用します。

    • イネーブル端子 - Enable を使用します。たとえば、Enabled Subsystem のイネーブル端子に対してこの端子名を使用します。

    • トリガー端子 - Trigger を使用します。たとえば、Triggered Subsystem のトリガー端子に対してこの端子名を使用します。

    • アクション端子 - Ifaction を使用します。たとえば、if-action サブシステムおよび switch-case-action サブシステムの Action 端子に対してこの端子名を使用します。

  • ラインの追加先の端子ハンドル。

  • これらの端子指定子のいずれかの配列。

'PortHandles' オプションを get_param に指定して使用し、ハンドルを取得します。

例: 'Mu/1'

例: 'Subsystem/2'

例: h.Inport(1)

例: {'Subsystem/1','Subsystem/2'}

ヒント

  • ほとんどのブロック端子には、上から下、左から右への順に番号が付けられます。ブロックの向きに関する端子の順番の詳細については、回転または反転したブロックの端子の位置の特定を参照してください。

  • Subsystem ブロックの端子を移動させることで、端子番号を変更できます。詳細については、端子の移動を参照してください。

他のブロックを迂回する自動ライン ルーティングのタイプ。次のように指定します。

  • 自動ライン ルーティングを使用しない場合は 'off'

  • 自動ライン ルーティングを使用する場合は 'on'

  • キャンバスの余白を最大限に活用し、他のラインやラベルとのオーバーラップを回避する自動ライン ルーティングを使用する場合は 'smart'

描画するラインの点。少なくとも 2 行 2 列の行列として指定します。描画するすべてのセグメントの行を追加します。キャンバスのサイズ変更をする前には必ず、エディターの左上隅からの (x,y) 座標として点を指定する必要があります。

例: [100 300; 200 300; 200 300; 200 500]

出力引数

すべて折りたたむ

add_line で作成したライン。ハンドルとして返されます。

バージョン履歴

R2006a より前に導入