1、概述 大型Simulink建模过程中,进行某个模块的属性修改时,由于模型层级较多或对模型不够熟悉,查找模块较麻烦且耗时多,利用自动搜索模块功能和批量修改模块属性功能能够快速进行模块属性修改操作。
本文以修改Gain模块属性为例 ,介绍3种查找模块并修改模块属性的操作方法。
(1)通过Simulink自带的搜索功能;
(2)通过命令行操作进行搜索替换;
(3)通过Model Explore编辑属性。
2、通过Simulink自带的搜索
2.1 在Simulink界面中,通过Edit-Find打开查找对话框
2.2 Simulink Find对话框
双击Gain、Gain1、Gain2、Gain3会跳转到Simulink对应的模块并高亮显示。右击Gain、Gain1、Gain2、Gain3可直接编辑属性。
2.3 缺点
使用此方法,在搜到的列表中没法多选,每次只能编辑一个模块,如果想将某个子系统下所有的Gain模块采样时间修改为0.1,那么只能一个一个愚公移山了。
3、通过命令行操作进行搜索替换
Simulink有一个很大特色,就是所有通过鼠标键盘的操作都可以使用命令行完成,这个就便于进行批量建模、修改、仿真,调试等。
很多人看到代码就晕,心想使用Simulink查找对话框就可以完成了,还这么费心的使用那些破命令。但是有时代码在代替人工操作时是具有更高的效率。
在命令行进行Simulink搜索主要用到find_system和hilite_sysytem函数,而修改参数则使用到set_param函数。
% 不知道find_system每个参数的意义,请查看帮助文档
blks=find_system(bdroot,"LookUnderMasks","all","FollowLinks","on","blockType","Gain");
for ii=1:length(blks)
% 高亮显示指定模块
hilite_system(blks{ii});
% 不知道模块属性名,请搜索Block-Specific Parameters
set_param(blks{ii},"SampleTime",0.1);
end
4、通过Model Explore编辑属性
Model Explorer具有很强的编辑功能,能够快速、高效、批量的进行变量定义,属性修改,模型调整等。下面的讲解过程,看起来视乎有些繁琐,但真说明了Model Explorer的功能强大。
4.1 打开Model Explore
4.2 在Model Hierarchy目录树中选择需要搜索的模型或子系统
在Search下拉菜单中选择:by Block Type
在Type下拉菜单中选择:Gain
将Column View设置为:Default
在Name标题栏右击,选择:Insert Path,将模型的路径显示在列表中
4.3 设置搜索子系统
Model Explorer没有列出系统下所有的Gain模块,而只有指定系统最顶层的Gain。这是因为Model Explorer默认不搜索子系统。只要在Search Result列表中空白处右击,选择Show Current System and Below即可。
4.4 批量修改属性设置
当您在列表中,选择任意一个模块时,右侧会出现该模块属性面板,您可以根据需要调整。但是当选中选中多个模块时,右边的设置面板就变灰,不能允许修改了(这是一种保护手段,防止意外修改模型)。要想一次性修改全部Gain模块的Sample Time参数,需要如下操作:
1)点击Column View右边的Show Details,在Find Properties里面输入sample,选择SampleTime添加到右边的Column Name中:
2)然后在模块列表中,使用Ctr/Shift + 左击,选择多个模块,直接编辑刚才添加的SampleTime列,所做的修改将应用到所有选中的模块。