Model 参照ブロックをSub​systemで置き換​えるにはどうすれば良​いですか?

16 ビュー (過去 30 日間)
MathWorks Support Team
MathWorks Support Team 2013 年 4 月 11 日
Model Reference ブロックを Subsystem ブロックで置き換える方法があれば教えてください。

採用された回答

MathWorks Support Team
MathWorks Support Team 2013 年 4 月 11 日
例えば、下記の手順が挙げられます。
1. モデル参照ブロックを検索
2. モデル参照ブロックの情報を取得(位置、大きさ、参照先のモデル名など)
3. モデル参照ブロックを削除し、サブシステムを配置
4. サブシステム内のブロックを全て削除
5. 参照先のモデルをオープン
6. 参照先のブロック線図をサブシステムにコピー
7. サブシステムブロックの位置を設定
8. 参照先のモデルをクローズ
これを実現するコマンドの一例を、下記に記述します。
デモモデル 'sldemo_mdlref_depgraph' のモデル参照ブロックを置き換えます。
mdl = 'sldemo_mdlref_depgraph';
open_system(mdl);
load_system('simulink');
mdlBlks=1;
while ~isempty(mdlBlks)
% Modelブロックの検索
[refMdls, mdlBlks] = find_mdlrefs(mdl);
for k = 1:length(mdlBlks)
try
% Modelブロックの位置と大きさを取得
pos = get_param(mdlBlks{k},'Position');
% 参照先のモデル名を取得
refmodel = get_param(mdlBlks{k},'ModelName');
% Modelブロックの削除
delete_block(mdlBlks{k});
% Atomic Subsystem をモデルに配置
nb = add_block('simulink/Ports & Subsystems/Atomic Subsystem',mdlBlks{k});
% Atomic Subsystem内のInport, Outport, Line を消去
Simulink.SubSystem.deleteContents(mdlBlks{k});
% 参照先のモデルを開く
open_system(refmodel);
% 参照先のブロック線図を、Atomic Subsystemにコピー
Simulink.BlockDiagram.copyContentsToSubSystem(refmodel,mdlBlks{k});
% Atomic SubsystemのPositionを、元のModelブロックのものに設定
set_param(nb,'Position',pos)
close_system(refmodel);
catch
end
end
end

その他の回答 (0 件)

カテゴリ

Help Center および File Exchangeモデル参照 についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!