メインコンテンツ

add_block

ブロックをモデルに追加

説明

h = add_block(source,dest) は、source で指定されたブロックのコピーを dest で指定されたコピー先に追加します。新しいブロックは、ブロック線図内で、親ブロック線図に表示されるソース ブロックと同じ位置に追加されます。

コピー先のモデルが読み込まれていなければなりません。

h = add_block(___,Name=Value) は、前述の構文の入力引数に加えて、1 つ以上の名前と値の引数を使用してオプションを指定します。たとえば、入力に 5 を乗算する Gain ブロックを追加するには、Gain"5" に設定します。

すべて折りたたむ

次の入力引数を指定して関数 add_block を使用することで、ライブラリからブロックを追加できます。

  • ライブラリ ブラウザーのツリー階層の最上位レベルから、追加するライブラリ ブロックへのライブラリ ブロック パス。たとえば、"Simulink/Math Operations/Gain"

  • モデルの階層構造の最上位レベルから、新しいブロックを追加する場所への絶対ブロック パス。たとえば、"myModel/mySubsystem/myblock"

両方のパスが、ブロック名で終わらなければなりません。

この例では、カスタマイズ可能な円形ゲージを f14 モデルの Controller サブシステムに追加します。

例を開きます。次に、宛先のモデルを読み込むか開きます。

open_system("f14")

このタスクを完了するために必要なブロックの正確な名前、またはライブラリ ブラウザー ツリー内のブロックの場所がわからないとします。ライブラリ ブロック パスを取得するには、ライブラリ ブラウザーでキーワードを検索します。ライブラリ ブラウザーを開きます。検索ボックスで、「gauge」と入力し、"Enter" キーを押します。

Library Browser tooltip that displays library block path

検索結果で、円形ゲージのアイコンの上にマウスをポイントします。ツールヒントにライブラリ ブロック パスが表示されます。

Circular Gauge ブロックを Controller サブシステムに追加します。ブロックに myGauge という名前を付けます。

  • ライブラリ ブロック パスは "simulink_hmi_customizable_blocks/Circular Gauge" です。

  • 絶対ブロック パスは "f14/Controller/myGauge" です。

add_block("simulink_hmi_customizable_blocks/Circular Gauge","f14/Controller/myGauge");

ブロックを確認するには、f14 モデルで、Controller サブシステム内に移動します。

open_system("f14/Controller")

f14 モデルから vdp モデルにブロックのコピーを追加します。

宛先のモデルを読み込むか開きます。

open_system("vdp");

Actuator Model ブロックを f14 モデルから vdp モデルに追加します。

add_block("f14/Actuator Model","vdp/Actuator Model");

Simulink® ライブラリから vdp モデルに Scope ブロックを追加します。vdp モデルには Scope という名前のブロックが既にあるため、MakeNameUnique オプションを使用して新しいブロックの固有の名前を作成します。

宛先のモデルを読み込むか開きます。

open_system("vdp");

Simulink® Sinks ライブラリから vdp モデルに Scope ブロックを追加します。MakeNameUnique"on" に設定します。

add_block("simulink/Sinks/Scope","vdp/Scope",MakeNameUnique="on")

ライブラリからモデルにブロックを追加し、名前と値の引数を使用してパラメーターを設定します。

宛先のモデルを読み込むか開きます。

open_system("vdp");

ライブラリから vdp モデルに Gain ブロックを追加します。次に、ゲイン値を 5 に設定します。

add_block("simulink/Math Operations/Gain","vdp/Five",Gain="5")

端子のブロックを追加する方法は目的によって異なります。新規または既存の端子のブロックを追加できます。入力端子に対応するブロックを複製することもできます。

新しい端子のブロックを追加

PortBlockCreation という名前のモデルを作成して開きます。

mdl = "PortBlockCreation";
new_system(mdl);
open_system(mdl);

端子番号で識別される端子を作成するには、In1 ブロックと Out1 ブロックを追加します。既定では、In1 ブロックまたは Out1 ブロックを追加すると端子が作成されます。

add_block("simulink/Ports & Subsystems/In1",...
    "PortBlockCreation/In1")
add_block("simulink/Ports & Subsystems/Out1",...
    "PortBlockCreation/Out1")

端子名で識別される端子を作成するには、In Bus Element ブロックと Out Bus Element ブロックを追加します。既定では、新しい In Bus Element ブロックと Out Bus Element ブロックは InBusOutBus という名前の端子にそれぞれ対応します。これらの端子にも端子番号はあります。必要に応じて、PortName ブロック パラメーターで端子のカスタム名を指定します。

add_block("simulink/Ports & Subsystems/In Bus Element",...
    "PortBlockCreation/InBusElement")
add_block("simulink/Ports & Subsystems/Out Bus Element",...
    "PortBlockCreation/OutBusElement")

In Bus Element ブロックまたは Out Bus Element ブロックを追加するときに端子を作成するには、CreateNewPort"on" に設定します。

add_block("simulink/Ports & Subsystems/In Bus Element",...
    "PortBlockCreation/InBusElement1",CreateNewPort="on")
add_block("simulink/Ports & Subsystems/Out Bus Element",...
    "PortBlockCreation/OutBusElement1",CreateNewPort="on")

CreateNewPort"on" に設定しない場合は異なる動作になります。

  • InBus および OutBus という名前の端子があるとします。追加されるブロックはそれらの端子のいずれかに対応します。ブロックを追加するときに端子名を指定すると、InBus 端子または OutBus 端子の名前が変更され、指定した端子名が使用されます。

  • カスタム名が付けられた端子しかないとします。追加されるブロックは新しい端子に対応します。ブロックを追加するときに端子名を指定すると、指定した端子名が新しい端子に使用されます。

新しい端子要素のブロックを追加

In Bus Element ブロックおよび Out Bus Element ブロックでは、入力端子から複数の要素を選択し、出力端子に複数の要素を接続できます。

In Bus Element ブロックに要素を追加するには、端子に対応する既存のブロックをコピーし、新しい要素の固有の名前を指定します。

add_block("PortBlockCreation/InBusElement",...
    "PortBlockCreation/InBusElement2",Element="signal2")

Out Bus Element ブロックに要素を追加するには、端子に対応する既存のブロックをコピーします。必要に応じて、固有の要素名を指定します。

add_block("PortBlockCreation/OutBusElement",...
    "PortBlockCreation/OutBusElement2")

入力端子のブロックを複製

ある入力端子からの同じ入力をブロック線図内の複数のブロックで使用できます。入力端子に対応するブロックを複製するとライン ルーティングを簡略化できます。

In1 ブロックを複製するには、ブロック線図からブロックをコピーし、CopyOption"duplicate" に設定します。

add_block("PortBlockCreation/In1",...
    "PortBlockCreation/In1Dup",CopyOption="duplicate")

In Bus Element ブロックを複製するには、ブロックをコピーします。

add_block("PortBlockCreation/InBusElement",...
    "PortBlockCreation/InBusElementDup")

複製ブロックでは元のブロックと同じ端子番号が使用されます。名前ベースの端子の場合、元のブロックと同じ端子から同じ要素が選択されます。

入力引数

すべて折りたたむ

コピーするブロック。ブロック パスとして指定します。ブロック パスの詳細については、Get Handles and Pathsを参照してください。

モデルからブロックをコピーするには、ブロック パスを指定します。新しいブロックは同じパラメーター設定をもちます。

例: add_block("vdp/Mu","mymodel/Mu")

ライブラリからブロックをコピーするには、ライブラリ ブロック パスを指定します。ライブラリ ブロック パスを取得するには、ライブラリ ブラウザーでブロックをポイントします。あるいは、ライブラリを開き、ブロックを選択して、コマンド ラインで「gcb」と入力します。ライブラリを開くには、ライブラリ ブラウザーのライブラリ リストでライブラリ名を右クリックし、[library_name ライブラリを開く] を選択します。

例: add_block("simulink/Math Operations/Gain","mymodel/Gain")

特定のブロック タイプのブロックを作成するには、ブロック タイプを 'built-in/blocktype' として指定します。ここで、blocktype はプログラム上のブロック名です。ブロックの BlockType パラメーターの値を取得するには、共通ブロック プロパティを参照してください。'built-in/blocktype' を使用して追加されるブロックは、ライブラリ ブロックとは異なる構成になることがあります。

例: add_block("built-in/Gain","mymodel/Gain")

SubSystemBlockType とするライブラリ ブロックは複数あります。ソース ブロックを "built-in/SubSystem" として指定する場合、新しいブロックは 1 つの入力と 1 つの出力をもつサブシステムを表します。それ以外のサブシステムやマスク ブロックには、BlockType の値の代わりにライブラリ ブロック パスを使用します。

新しいブロックの名前と場所。ブロック パスとして指定します。

例: add_block("simulink/Math Operations/Gain","f14/Controller/MyNewBlock")

名前と値の引数

すべて折りたたむ

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。

例: add_block("simulink/Math Operations/Gain","mymodel/Gain",Gain="5") は、入力に 5 を乗算する Gain ブロックを追加します。

add_block 関数では、ブロックのパラメーターとプロパティの値を名前と値の引数として指定します。ブロックのパラメーターとプロパティの詳細については、プログラムによるブロックのパラメーターとプロパティの指定を参照してください。

固有のブロック名。"off" または "on" として指定します。

追加されるブロックの固有のブロック名を作成するには、MakeNameUnique"on" に設定します。指定したブロック名が存在する場合は、ブロック名の最後に番号が付加されるか、ブロック名の最後の番号がインクリメントされます。

例: add_block("simulink/Math Operations/Gain","mymodel/Gain",MakeNameUnique="on")

コピー オプション。"""nolink"、または "duplicate" として指定します。

  • "nolink" — 新しいブロックは、ソース ブロックを含むカスタム ライブラリにリンクしません。

  • "duplicate" — 新しいブロックは、入力端子ブロックを複製し、ソース ブロックと同じ端子番号をもちます。端子の作成やラインの追加なしで入力端子から信号を分岐するには、入力端子に対応するブロックを複製します。詳細については、重複する Inport ブロックの作成を参照してください。

例: add_block("myLibrary/CustomBlock","myModel/CustomBlock",CopyOption="nolink")

例: add_block("myModel/mySubsystem/Inport","myModel/mySubsystem/InportDup",CopyOption="duplicate")

新しいバス要素端子。"off" または "on" として指定します。ソース ブロックは In Bus Element ブロックまたは Out Bus Element ブロックでなければなりません。

新しい端子のブロックを追加するには、CreateNewPort"on" に設定します。必要に応じて、PortName パラメーターで新しい端子の名前を指定します。既定では、新しい端子の名前は、コピーされるブロックの端子名と番号の組み合わせになります。コピーされるブロックの端子名が既に番号で終わっている場合は、一意になるように番号がインクリメントされます。

CreateNewPort"off" に設定しても、端子を作成できないわけではありません。たとえば、モデルに追加する最初の In Bus Element ブロックまたは Out Bus Element ブロックで端子が作成されます。また、ブロックを追加して PortName で固有の端子名を指定しても端子が作成されます。

CreateNewPort"off" に設定すると、追加されるブロックを既存の端子に対応させることができます。たとえば、モデルから In Bus Element ブロックまたは Out Bus Element ブロックをコピーする場合、Element パラメーターで要素名を指定すると、新しいブロックで端子の新しい要素を表すことができます。

バス要素端子をプログラムで作成する方法の詳細については、Programmatically Create Bus Element Portsを参照してください。

例: add_block("simulink/Ports & Subsystems/In Bus Element","myModel/InBusElement1",CreateNewPort="on")

出力引数

すべて折りたたむ

新しいブロック。ハンドルとして返されます。

ブロック ハンドルの詳細については、Get Handles and Pathsを参照してください。

ヒント

ブロックのオーバーラップを防ぐには、新しいブロックの位置を Position ブロック プロパティで指定します。詳細については、プログラムによるブロックのパラメーターとプロパティの指定を参照してください。

バージョン履歴

R2006a より前に導入