Main Content

replace_block

Simulink モデル内のブロックの置換

説明

replBlks = replace_block(sys,current,new) は、モデル sys 内のブロック current をタイプ new のブロックに置き換えます。

Simulink® ライブラリまたは別のモデルからのブロックを代替ブロックとして使用できます。

関数 replace_block では、引数 current と一致するブロックのリストから置き換えるブロックを選択するよう要求されます。

関数 replace_block を使用する前に以下を行います。

  • モデル sys を読み込みます。モデルを読み込む方法の詳細については、load_system および open_system を参照してください。

  • 現在のブロックと置き換える新しいブロックを含むライブラリが読み込まれていない場合は、ライブラリを読み込みます。たとえば、現在のブロックを Message Triggered Subsystem ブロックに置き換えるには、MATLAB® コマンド ウィンドウで次のコマンドを入力して Simulink ライブラリを読み込みます。

    load_system('simulink.slx');

ヒント

ブロックを置き換える前にモデルを保存します。

replBlks = replace_block(sys,Name,Value,new) は、Name,Value のペア引数で指定されたブロック パラメーターと一致するブロックを置き換えます。find_system Name,Value のペアを使用して、置き換えるブロックの検索に条件を加えることもできます。

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

R2021a より前は、名前と値をそれぞれコンマを使って区切り、Name を引用符で囲みます。

関数 replace_block では、ブロック パラメーターと値のペアを使用できます。すべてのブロック パラメーターのリストについては、共通のブロック プロパティブロック固有のパラメーターを参照してください。

置換するブロックの検索に関する詳細情報を指定するには、ブロック パラメーターの前に find_system Name,Value のペアを使用します。たとえば、'CaseSensitive','off' を使用してブロックの検索を大文字小文字の区別なしにするか、'FollowLinks','on' を使用してライブラリ リンクまでリンクをたどることができます。Name,Value ペアの該当のリストについては、find_system を参照してください。

replBlks = replace_block(___,'noprompt') では、ダイアログ ボックスから選択を求められることなく、ブロックが置き換えられます。

すべて折りたたむ

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

load_system("vdp");

Gain ブロックを Integrator ブロックで置き換えます。

置き換えるブロックの選択を求めるダイアログ ボックスが表示されます。

ダイアログ ボックスで vdp/Mu を選択して、[OK] をクリックします。

RepNames = replace_block("vdp","Gain","Integrator");

Scope ブロックを To Workspace ブロックに置き換えます。

置き換えるブロックの選択を求めるダイアログ ボックスが表示されます。

ダイアログ ボックスで vdp/Scope を選択して、[OK] をクリックします。

RepNames = replace_block("vdp","Scope","simulink/Sinks/To Workspace");

モデル内のブロックを Simulink Extras ライブラリのブロックに置き換えるには、Simulink Extras ライブラリを読み込みます。

load_system("simulink_extras.slx");

Integrator ブロックを Simulink Extras ライブラリの Transfer Fcn (with initial states) ブロックに置き換えます。

置き換えるブロックの選択を求めるダイアログ ボックスが表示されます。

ダイアログ ボックスで vdp/Muvdp/x1、および vdp/x2 を選択して、[OK] をクリックします。

RepNames = replace_block("vdp", "Integrator", "simulink_extras/Additional Linear/Transfer Fcn (with initial states)");

sldemo_clutch モデルの Unlocked サブシステム内のブロックを置換します。Gain パラメーターが bv に設定されているブロックを置換します。

モデル sldemo_clutch を読み込みます。

openExample('sldemo_clutch');

'Unlocked' サブシステムで、Gain 値が bv のブロックを Integrator ブロックで置き換えます。

replace_block('sldemo_clutch/Unlocked','Gain','bv','Integrator');

置き換えるブロックの選択を求めるダイアログ ボックスが表示されます。

ダイアログ ボックスで sldemo_clutch/Unlocked/VehicleDamping を選択して、[OK] をクリックします。

例を開きます。次に、f14 システムを読み込みます。

load_system('f14')

Gain ブロックを Integrator ブロックで置き換えます。コマンドにより、検出された Gain ブロックのブロック パスが返され、Gain ブロックが置き換えられます。

repl = replace_block('f14','Gain','Integrator','noprompt')
repl = 13x1 cell
    {'f14/Aircraft...'     }
    {'f14/Aircraft...'     }
    {'f14/Aircraft...'     }
    {'f14/Aircraft...'     }
    {'f14/Controller/Gain' }
    {'f14/Controller/Gain2'}
    {'f14/Controller/Gain3'}
    {'f14/Gain'            }
    {'f14/Gain1'           }
    {'f14/Gain2'           }
    {'f14/Gain5'           }
    {'f14/Nz pilot...'     }
    {'f14/Nz pilot...'     }

ライブラリ リンクのブロックを選択します。ライブラリ リンクをたどり、Gain ブロックをライブラリ内の Integrator ブロックで置き換えます。

 replace_block(gcb, 'FollowLinks', 'on', 'BlockType', 'Gain', 'Integrator', 'noprompt')

入力引数

すべて折りたたむ

置き換えるブロックをもつモデルの名前。文字ベクトルとして指定します。モデルを指定した場合、モデル内の一致するブロックがすべて置き換えられます。サブシステムを指定すると、そのサブシステム以下のブロックが置き換えられます。

例: 'vdp', 'sldemo_fuelsys/fuel_rate_control'

置き換えるブロックのタイプ。BlockType 値または MaskType 値として指定します。ブロック タイプを見つけるには、ブロックを選択し、コマンド プロンプトで次のように入力します。

get_param(gcb,'BlockType')

マスクされたブロックの場合、マスク タイプを見つけるには、ブロックを選択し、次のように入力します。

get_param(gcb,'MaskType')

現在のブロックを置き換えるブロック。次のいずれかの形式で指定します。

  • 代替ブロックの BlockType 値。この値を指定すると、ライブラリ ブロックが代替ブロックとして使用されます。

  • 代替ブロックの MaskType 値。この値を指定すると、ライブラリ ブロックが代替ブロックとして使用されます。

  • 'simulink/Sinks/To Workspace' など、代替ブロックのライブラリ パス。ライブラリ内のブロックにカーソルを合わせると、ライブラリ パスが表示されます。

  • 'vdp/Mu' など、別のモデルからのブロックのブロック パス名。この値を使用して、モデル内の別のモデルからのブロックのインスタンスを再利用します。

出力引数

すべて折りたたむ

引数 current で返されるブロック。文字ベクトルの cell 配列として返されます。置換を実行するかどうかにかかわらず、値が返されます。

バージョン履歴

R2006a より前に導入