Simulink学习——可自由切换内部组件的子系统
可自由切换内部组件的子系统
Demo中的演示
Simulink还支持进行实时组件切换的功能,在Demo Create Interchangeable Variations of Model Components中,Simulink展示了一下可实时切换的子系统的应用和如何进行切换。
还是之前那个双弹簧阻尼器模型,在这个模型中,Operator包含一个目标位置的设置器。假设我想要多种目标位置设定方式进行切换,那怎么办呢?在现在这个Demo里,Simulink展示了一个切换组件的方式:
如上,这里面有三种Operator去给出不同的目标位置设置方式。其中,第三个Operator长的和其他的不大一样,邮件查看它的参数会发现如上会有一个variant control,下面有一个判断条件。我们在Matlab中输入:operator = 2并运行:
可以看到这里被**的模块就切换成为了Operator3。这个操作看起来像是与disable部分模型也可以达到一样的效果,但是我想,如果建立的是一个要交付黑盒子模型的软件或者是层级非常多的模型,那么这个时候设置一些这种可切换的组件就显得至关重要了。接下来就来尝试练习一下如何设置这种子系统吧。
练习
创建可切换组件
创建一个子系统
将其转化为一个内部组件可切换的子系统
点开可以看到其中已经包含了一个空白的组件
然后在Subsystem内创建两个不同的源:
这样这个可切换组件子系统里就有了两个可切换的组件,可以看到不**的组件也是使用out1,它不占用目前已**组件的输入输出端口。这时候就可以退出到外面,去设置这两个组件的切换\**条件了,如下,一开始我设置了两个模块的**条件:
切换组件
此时在外部输入source = sinewave,进行仿真:
结果出现故障。
这我猜应该是因为sinewave属于matlab的内置函数,不能够以它为名字作为控制变量的值。
这里我们改一下控制变量的条件:
首先输入source = 1,先仿真看看,这时候**的是random模块:
再尝试输入source = 2,可以看到sinewave组件就被**了:
小结
创建可切换组件的子系统的话,可以通过脚本来改变模型,在大型的工程项目中,尤其是交付为黑盒模型的时候,应该会是一个非常好用的功能。
模型分享
欢迎各位来交流学习!关注即可0积分即可下载~