Simulink学习——可切换内部组件的子系统

可自由切换内部组件的子系统

 

Demo中的演示

 

Simulink还支持进行实时组件切换的功能,在Demo Create Interchangeable Variations of Model Components中,Simulink展示了一下可实时切换的子系统的应用和如何进行切换。

Simulink学习——可切换内部组件的子系统_第1张图片

还是之前那个双弹簧阻尼器模型,在这个模型中,Operator包含一个目标位置的设置器。假设我想要多种目标位置设定方式进行切换,那怎么办呢?在现在这个Demo里,Simulink展示了一个切换组件的方式:

Simulink学习——可切换内部组件的子系统_第2张图片Simulink学习——可切换内部组件的子系统_第3张图片

如上,这里面有三种Operator去给出不同的目标位置设置方式。其中,第三个Operator长的和其他的不大一样,邮件查看它的参数会发现如上会有一个variant control,下面有一个判断条件。我们在Matlab中输入:operator = 2并运行:

Simulink学习——可切换内部组件的子系统_第4张图片

可以看到这里被激活的模块就切换成为了Operator3。这个操作看起来像是与disable部分模型也可以达到一样的效果,但是我想,如果建立的是一个要交付黑盒子模型的软件或者是层级非常多的模型,那么这个时候设置一些这种可切换的组件就显得至关重要了。接下来就来尝试练习一下如何设置这种子系统吧。

 

练习

 

创建可切换组件

 

创建一个子系统

Simulink学习——可切换内部组件的子系统_第5张图片

将其转化为一个内部组件可切换的子系统

Simulink学习——可切换内部组件的子系统_第6张图片

Simulink学习——可切换内部组件的子系统_第7张图片

点开可以看到其中已经包含了一个空白的组件

Simulink学习——可切换内部组件的子系统_第8张图片

然后在Subsystem内创建两个不同的源:

Simulink学习——可切换内部组件的子系统_第9张图片Simulink学习——可切换内部组件的子系统_第10张图片Simulink学习——可切换内部组件的子系统_第11张图片

这样这个可切换组件子系统里就有了两个可切换的组件,可以看到不激活的组件也是使用out1,它不占用目前已激活组件的输入输出端口。这时候就可以退出到外面,去设置这两个组件的切换\激活条件了,如下,一开始我设置了两个模块的激活条件:

Simulink学习——可切换内部组件的子系统_第12张图片

 

切换组件

 

此时在外部输入source = sinewave,进行仿真:

结果出现故障。

 

这我猜应该是因为sinewave属于matlab的内置函数,不能够以它为名字作为控制变量的值。

这里我们改一下控制变量的条件:

Simulink学习——可切换内部组件的子系统_第13张图片

 

首先输入source = 1,先仿真看看,这时候激活的是random模块:

Simulink学习——可切换内部组件的子系统_第14张图片

 

再尝试输入source = 2,可以看到sinewave组件就被激活了:

Simulink学习——可切换内部组件的子系统_第15张图片

 

小结

创建可切换组件的子系统的话,可以通过脚本来改变模型,在大型的工程项目中,尤其是交付为黑盒模型的时候,应该会是一个非常好用的功能。

 

模型分享

欢迎各位来交流学习!关注即可0积分即可下载~

https://download.csdn.net/download/weixin_44281768/12868890

你可能感兴趣的:(Simulink学习,simulink)