QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 889|回复: 0
打印 上一主题 下一主题

批量修改大型Simulink模型中模块的属性

[复制链接]
字体大小: 正常 放大

2620

主题

162

听众

1万

积分

升级  0%

  • TA的每日心情
    开心
    2015-3-12 15:35
  • 签到天数: 207 天

    [LV.7]常住居民III

    社区QQ达人 发帖功臣 新人进步奖 优秀斑竹奖 金点子奖 原创写作奖 最具活力勋章 助人为乐奖 风雨历程奖

    群组第六届国赛赛前冲刺培

    群组国赛讨论

    群组2014美赛讨论

    群组2014研究生数学建模竞

    群组数学中国试看培训视频

    跳转到指定楼层
    1#
    发表于 2014-10-20 10:26 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta
    在大型Simulink建模中,需要进行某个模块的属性修改是很麻烦的事情,除非您对整个模型相当了解,并且能够快速定位每一个模块。但是在团队合作中,您不可能对所有模型都很了解。

    比如在飞机仿真建模过程中,其中的气动库计算需要使用到大量的查表(Lookup Table)插值模块,如果想一次性修改所有Lookup Table的Index Search Method参数。关于飞机的东西不能说的太多,你懂的,本文使用MATLAB自带的f14模型,演示如何修改大型Simulink中Gain模块的采样时间(Sample Time)。
    一、通过Simulink自带的搜索

    估计大部分人都是使用这个方法的,也是最容易的。但是有一个致命的缺点,就是必须手动一个一个的修改!

    (1)通过菜单Edit→Find...打开查找对话框(当然也可以使用Ctr+F)。

    110959hchw7qjj0juc77ju.png.thumb.jpg
    (2)Simulink搜索对话框包含很多功能,如果能够灵活使用,效率还是挺不错的。在搜索结果列表中,可以直接双击打开相应的模块,还有右击直接编辑属性。更多功能大家可以自己慢慢摸索!
    110522m79qqrs7o887m4ls.png.thumb.jpg
    (3)使用这个查到对话框的时候,很多同学会发现,在搜到列表中没法多选,每次只能编辑一个模块!如果想将某个子系统下所有Gain的采样时间修改为0.1,那您只能手动一个一个愚公移山了!
    二、通过命令行进行搜索替换

    Simulink有一个很大特色,就是所有通过鼠标键盘的操作都可以使用命令行完成,这个就便于进行批量建模、修改、仿真,调试等。很多人看到代码就晕,心想使用Simulink查找对话框就可以完成了,还这么费心的使用那些破命令。但是有时代码在代替人工操作时是具有更高的效率。

    在命令行进行Simulink搜索主要用到find_system和hilite_sysytem函数,而修改参数则使用到set_param函数,下面就尝试下这对组合吧:

    114420dr3g2rujcoetpdjs.png.thumb.jpg

    % 不知道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

    find_system的帮助文档如下,其实学会搜索和查看帮助是一种品质!
    113648stwkg7m9um003w00.png.thumb.jpg
    Gain增益模块的对话框参数如下,想了解其他模块,请在帮助文档中搜索Block-Specific Parameters
    113648ojil0tgdjzntmmf2.png.thumb.jpg
    三、使用Model Explorer编辑属性

    Model Explorer具有很强的编辑功能,能够快速、高效、批量的进行变量定义,属性修改,模型调整等。下面的讲解过程,看起来视乎有些繁琐,但真说明了Model Explorer的功能强大。

    (1)首先是打开Model Explorer(什么不知道如何打开,那不妨看看这个)

    (2)在Model Hierarchy目录树中需要搜索的模型或子系统,在Seach下拉菜单中选择by Block Type,Type下拉菜单选择Gain,然后点击搜索!

    (3)中间的面板中列出了搜索到的Gain模块,将Column View切换到Default,然后在Name标题栏右击,选择Insert Path,这样模型的路径就会显示在列表中。点击Path连接就可以直接定位到模块。

    121437n06f6gfv30u0vgg6.png.thumb.jpg
    (4)很多细心同学可能发现,Model Explorer没有列出系统下所有的Gain模块,而只有指定系统最顶层的Gain。这是因为Model Explorer默认不搜索子系统。只要在列表中空白处右击,选择Show Current System and Below即可。
    12302122xg16xxdwyxcpcz.png.thumb.jpg
    (5)当您在列表中,选择任意一个模块时,右侧会出现该模块属性面板,您可以根据需要调整。但是当选中选中多个模块时,右边的设置面板就变灰,不能允许修改了(这是一种保护手段,防止意外修改模型)。要想一次性修改全部Gain模块的Sample Time参数,需要如下操作:

    ●点击Column View右边的Show Details,在Find Properties里面输入sample,选择SampleTime添加到右边的Column Name中

    134852e24b0q7zgnsogw4e.png.thumb.jpg
    ●然后在模块列表中,使用Ctr/Shift + 左击,选择多个模块,直接编辑刚才添加的SampleTime列,所做的修改将应用到所有选中的模块。
    140203pwgsfbn553n22jp7.png.thumb.jpg
    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2025-5-22 16:54 , Processed in 0.335029 second(s), 55 queries .

    回顶部