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

16 次查看(过去 30 天)
Model Reference ブロックを Subsystem ブロックで置き換える方法があれば教えてください。

采纳的回答

MathWorks Support Team
例えば、下記の手順が挙げられます。
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 CenterFile Exchange 中查找有关 モデル参照 的更多信息

Community Treasure Hunt

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

Start Hunting!