Simulink学习——基于组件建模的概念以及复用组件的方法

模型组件管理概念以及复用组件的方法

 

当模型的架构较为复杂,模型内部的模块非常多时候,十分有必要进行模型组件管理,分开建立各个子模型,然后进行合并管理。Matlab将这种建模方式成为基于组件的建模。这里是Simulink如何描述基于组件建模的优势:

 

组件化有利于开发由许多功能部件组成的 Simulink® 模型的组织。使用模型组件能够:

  • 实现基于团队的开发 - 通过明确定义的接口,减少文件争用并独立创建组件。

  • 降低设计复杂度 - 每个组件解决一个较小问题。

  • 支持组件重用 - 在一个工程内和跨多个工程重用算法和环境模型。

  • 支持单元测试 - 避免重复测试没有变化的组件,降低验证成本。

  • 实现规模化性能优势 - 减少内存使用以及加载和仿真模型所需的时间。

  • 支持组件变体 - 在组件的多个实现中进行选择。

  • 实现知识产权保护 - 限制您与第三方共享组件的功能和内容的可见性。

 

当设计变得过于复杂以至于一个人无法管理所有细节时,组件也很有用。例如,复杂模型可以是具有以下特性的模型:

  • 数千个模块

  • 数百项逻辑决策

  • 相同功能的多种不同配置

 

当然如果模型不太复杂的时候,盲目地去使用基于组件建模是没有什么优势的,就像前面那节我第一次对弹簧阻尼器建模强行去使用比较复杂的总线管理以及输入变量分配的那样。会把简单问题复杂化,花费比较多的时间。这一次,基于Simulink Help中Reuse Model Components from Files这个Demo,来学习一下这些步骤里面很重要的一环,复用模块。

 

预览

这一个Demo,仍然是基于双弹簧阻尼器系统的模型:

 

该模型虽然不是很复杂,但是可以看出来,模型组件功能的划分非常清晰,且里面有部分重复使用的相似组件,如Mechanical System。

 

子系统复用

Demo中如何进行复用的

 

Mechanical System中,有两个子系统,这两个子系统内的内容是相同的,那么,我只需要建立一次子系统内的内容,然后就可以将内容复用到这些子系统上了。

上面就是这个子系统内的内容,Demo已经创建好了,并将该文件命名为

 

那么如何将其应用至希望复用的子系统呢?

在子系统上点击右键,选择子系统模块的参数,就可以看到这个Subsystem Reference的功能,可以看到它这里是通过文件名链接到了之前创建的子系统模型上了。接下来我们看看如何实际自己去创建和引用。

 

创建参考子系统

 

首先创建一个简单的模型,将其转化为子系统:

右键子系统可以看到这里有个子系统参数的设置,其中就有这个子系统参考设置,这个设置可以把选择的子系统转换为一个可被参考的独立子系统模型文件:

比如说我将这个子系统转化为Subsystem,工作目录下就会产生这个文件:

接下来就可以以这个子系统为参考,复用它了

 

复用参考子系统

 

在想要复用的地方,插入参考子系统:

点击创建好的子系统,它就会让你选择要参考哪个子系统:

选择刚刚创建的Subsystem就可以复用它了:

 

此时如果我修改一下原来参考的Subsystem:

保存后再打开看看引用它的模型,内容马上就更新了:

更新的这个功能非常重要!这意味着,一个非常大的系统,不需要去在最大的系统内一层一层往下找,进行修改。如果有模型更新,直接修改参考模型,整个大模型就会随之更改。想象一下,当一个复用了几百次的模型需要修改时候,整个功能有多重要。。。

 

模型复用

 

子系统可以复用,模型也是可以复用的,但是概念有些不同。Demo中的例子我不是很能理解,感觉并不是复用模型二是建立一个可以复用的PID控制器模块:

这里我就以模型复用为主题来学习一下,同样是在插入模型的选项中,这里还有个插入引用模型的选项:

 

点击之后可以看到有这样的与之前Subsystem十分相似的选项,也是让你选择需要参考的模型:

但是这里,能够直接引用的模型范围就比之前的subsystem大的多,比如我直接引用前面的完整模型:

比如我引用一个未建立子系统的模型:

 

这就比引用子模型要灵活自由的多,任何类型的模型都可以直接引用,也不需要实现创建一个可被引用的子模型模块。这里如果用引用子模型功能做相似的操作:

 

小结

复用模型的功能非常重要,非常好用,对于复杂的大型项目来说至关重要。这样大家就可以分工开发不同的子模型模块了。这里的复用模型与复用子系统的使用,可以看出来复用模型功能好像更自由更简单好用。但是我个人觉得还是不能使用复用模型功能完成全部工作,因为太过自由的复用模型功能,其引用的模型文件没有特殊标识,也容易打乱模型文件的管理分层。可能较大的系统可以使用复用子系统,最底层的较小的子系统内的组件,最好还是使用复用子系统来开发比较好吧。

©️2020 CSDN 皮肤主题: 成长之路 设计师:Amelia_0503 返回首页