[Simulink] 模型引用与library

时间:2024-03-25 14:54:43


如果是开发一定复杂度功能的系统,通常有多个相对独立的功能子系统,对于团队开发而言,就可以将这些功能模块拆分成单独的模型来进行建模,每个模型实现一个单一的功能,再进行系统集成。
这种情况下,有两种方法实现:

  • 建立library,集成时从library中拖入即可
  • 使用ModelReference

这里先挖个坑,后续补充这两种方法的优缺点

|- 什么是ModelReference?

模型应用ModelReference是将模型作为模块重用于其他模型,在仿真和代码生成时,引用模型可以有效地替换引用它的Model模块。

子模型可以单独进行调试修改和测试,同时功能得以拆分,降低建模的难度

|- 如何使用ModelReference?

[Simulink] 模型引用与library
注意:如果选择的模型不在当前工作路径,需要先添加到工作路径中。

Simulation mode有四种方式:

  • Normal:将这个被应用模型当做atomic subsystem导入主模型中
  • Accelerate:将整个被引用模型编译为S-function供父级调用
  • SIL: 使用Embedded Coder将被引用模型生成嵌入式代码后仿真
  • PIL:需要相应的目标板将被引用模型的代码下载到目标处理器中进行仿真

|- 使用Model Reference的注意事项

在使用Model Reference的过程中,需要避免数据冲突和配置冲突:

|- 数据类型

  • 对于被引用模型的输入输出端口,数据类型避免使用Inherit:auto
    [Simulink] 模型引用与library

|- Workspace

  • 如果模型大量使用了workspace中的变量建议,Normal仿真模式下,在子模型的参数配置中 Optimization -> Simulaiton and code generation中选择Inlined Parameters 能够顺利的实现调用仿真。(这一点在进行代码生成时的部署可能会不一样,因为这样的方式直接使用数字代替模型中的参数,可以节省内存,但是某些嵌入式系统需要使用在线调参的功能,这里要小心配置。)

这个目前工作没有遇到,先留着
原文:https://blog.csdn.net/wzj983/article/details/70974459

|- 代码生成

-Model Reference建立的模型在进行代码生成时,需要保证被引用模型的配置要与其父级的配置是相一致的,否则会报错。
下图中,主模型中选择了用户自定义的tlc配置,而被引用模型的配置仍然为grt.tlc,因此报错。在实际项目开发时,如果采用这种方法进行开发,需要保证所有开发者的配置是一致的,这个工作可以放到项目前期做掉
[Simulink] 模型引用与library
相比而言,library建立的模块,本身没有配置属性,因此,只需要拖入使用即可。

|- 什么是library?

[未完]

参考:

[1] https://blog.csdn.net/wzj983/article/details/70974459
[2] https://ww2.mathworks.cn/help/simulink/model-reference.html