cjackson 发表于 2008-12-15 22:54:02

如何动态修改simulink模型参数

本帖最后由 ljelly 于 2009-6-5 08:54 编辑

我想实现的效果是:simulink运行到中间时刻,然后动态修改模型中的参数,然后再从断点开始接着运行
不知道什么方法能够实现?

kokyo52 发表于 2008-12-15 23:30:57

楼主想修改哪种参数?

ljelly 发表于 2008-12-16 10:45:59

原帖由 cjackson 于 2008-12-15 22:54 发表 http://forum.simwe.com/images/common/back.gif
我想实现的效果是:simulink运行到中间时刻,然后动态修改模型中的参数,然后再从断点开始接着运行
不知道什么方法能够实现?

如果只是修改一般的模块参数
你直接按上面的暂停按钮
然后修改参数,再继续运行就可以了

cjackson 发表于 2008-12-16 18:40:35

回复2#:我想修改模型中的参数,比如增益啊,传递函数的频率等。
回复3#:您说的这种方法,我试验过,也能用。但是能不能用命令的方式来实现,不须人工干预。

感谢二位回答!

kokyo52 发表于 2008-12-16 23:49:50

偶今天特意试了一下,将结果分享一个(MATLAB 7.0.1)
先说模块:正如ljelly兄所言,如果仿真时simulink模块对话框里允许改动的,那么,就可以改,而且,改完之后,simulink似乎就认同这种改动,并按照改动后的数据继续仿真;不允许改动的当然就不行了,比如打开对话框之后是灰色的部分。
但是,这些的前提是不用命令修改,我今天发现,无论是增益(gain)模块还是Constant模块(其他未验证),如果里面写上变量名K,仿真前给K赋值为1,仿真暂停再赋值为10,继续仿真,似乎更改根本没有效果,仍然按照K=1进行仿真。而如果暂停时直接修改gain模块对话框里的值,就有效果。不知道我说清楚没有
楼主说的命令修改是这种命令不是~~?

再说函数:
对于simulink调用m函数,也就是用MATLAB fun模块,在仿真进行过程中simulink支持m文件的任何改动,即使不暂停也可以,只要改动后保存,在仿真过程中立即生效;
而对于embedded MATLAB function模块,就是嵌入到simulink内部的m函数,在仿真过程中语句是不能够改动的,暂停后,打开embedded MATLAB function模块,显示的是locked,也就是说仿真过程中不可更改;
最后是s函数,如果在仿真中如果修改了s-function的m文件代码,那么对于仿真一点效果都没有,仿真仍然按照仿真开始时候的s-function的代码运行,除非是在没有仿真的时候里修改s-function的代码,否则没有效果。
也就是说,s-function应该是在仿真开始时就编译好了,中间修改是没有效果的;而一般的m函数可以直接修改,在仿真中将立即生效。

caogengyan123 发表于 2008-12-25 17:04:48

回复 5# kokyo52 的帖子

我也想知道,就是脉冲信号的周期设为变量的话,在simulink中如何动态地改变这个变量!

keybox 发表于 2008-12-30 06:59:20

很好的经验~

原帖由 kokyo52 于 2008-12-16 23:49 发表 http://bbs.simwe.com/images/common/back.gif
偶今天特意试了一下,将结果分享一个(MATLAB 7.0.1)
先说模块:正如ljelly兄所言,如果仿真时simulink模块对话框里允许改动的,那么,就可以改,而且,改完之后,simulink似乎就认同这种改动,并按照改动后的数据 ...

不过1、4楼的问题似乎让人难以理解:
我认为是你解决问题的思路似乎有问题。
传递函数适用于定常系统,而你所要解决的问题却是系数时变的?

或许下面的两个帖子会对你有所帮助
探讨:变系数或非线性微分方程的求解(Matlab/Simulink)http://bbs.simwe.com/viewthread.php?tid=538785&highlight=%2Bkeybox
http://bbs.simwe.com/viewthread.php?tid=538784&highlight=%2Bkeybox

mwd121 发表于 2008-12-30 08:07:20

可否将模型修改一下,用Signal Builder以动态信号的形式。
页: [1]
查看完整版本: 如何动态修改simulink模型参数