Simulink API ブロックを置き換える(replace_block)

今回は「replace_block」を紹介します。
機能としては名前の通りで、ブロックを置き換えるAPIです。

一般的に使用するAPIではなく、使用機会が少ないのですが、
ブロックを一括で置き換えたい時に覚えておくと便利です。

例えば、モデルのバージョンアップやSimulinkと連携する3rdパーティツールの
特殊なブロックを入れ替えたりする際に使用します。

私の場合は、あるツールに対応していないSimulinkブロックがあったため、
このAPIを使用して代わりのブロックに置き換えていました。

使用方法は以下になります。

replace(システム名、’対象ブロック名’,’置換したいブロック名’)

例えば、Gainブロックをサチュレーションブロックに変換する場合は、以下のようになります。

replace_block(bdroot,’Gain’,’Saturate’,’noprompt’)

※nopromptはオプションで、変換時にダイヤログが表示されない設定になります。

Note)
このAPIを使用すると、元に戻る(Ctrl+Z)が使えないので注意です
また、見てもらうと分かるように、デフォルトだとブロック名等は変わらないため、
ブロック名を変更する必要もでてきます。

APIの詳細は、下記の公式ホームページをご覧ください。
https://jp.mathworks.com/help/simulink/slref/replace_block.html

応用例

応用例として、自分が作成したブロックと置換することもできます。

例えば、自分が作成したSampleA.slxというモデル内にSubsytemがあったとします。
これを先ほどのGainと同じように置き換えるには、以下を実行します。

>> replace_block(bdroot,'Gain','SampleA/Subsystem','noprompt')

これを使用すると、単純なブロックも複雑なSubsytemに変更できたりします。

最初に述べた通り、使用頻度は少ないのですが、
ツール移行で変換作業をしたりする場合に覚えておくと、
手作業がかなり削減できるので、覚えておくと非常に便利なAPIです。