[Simulink] 模型引用与library

本文深入探讨Simulink中ModelReference与Library的使用方法及区别,解析模型复用技巧,涵盖调试、测试、代码生成等方面,帮助读者提升系统集成效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


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

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

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

|- 什么是ModelReference?

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

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

|- 如何使用ModelReference?

在这里插入图片描述
注意:如果选择的模型不在当前工作路径,需要先添加到工作路径中。

Simulation mode有四种方式:

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

|- 使用Model Reference的注意事项

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

|- 数据类型

  • 对于被引用模型的输入输出端口,数据类型避免使用Inherit:auto
    在这里插入图片描述

|- Workspace

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

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

|- 代码生成

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

|- 什么是library?

[未完]

参考:

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

<think>好的,用户的问题是关于如何在Simulink中添加或使用名为'MBD_EF_LIB'的库或模块。首先,我需要回忆一下Simulink的基本操作,尤其是添加库或模块的步骤。根据用户提供的引用内容,特别是引用[1]提到在库浏览器中找到模块并拖拽添加,或者右键快捷菜单添加。这可能适用于标准库,但用户提到的'MBD_EF_LIB'可能是自定义库,所以需要不同的方法。 接下来,我需要考虑用户可能的场景。用户可能是一个刚开始使用Simulink的工程师,或者在进行模型基于设计(MBD)时需要特定的库。MBD_EF_LIB可能包含一些特定模块,用于嵌入式系统或代码生成,比如引用[2]和[3]提到的代码生成和数学运算模块。用户可能已经安装了这个库,但不知道如何添加,或者需要从外部获取。 可能的步骤包括检查库是否已经安装,如果没有,需要先下载或安装。然后,在Simulink库浏览器中添加路径,或者使用命令行加载。同时,可能需要配置编译器,如引用[2]提到的,但这个问题更偏向添加库,可能不需要编译器配置。另外,引用[3]提到自定义模块的组合,所以如果MBD_EF_LIB是自定义的,可能需要手动添加路径。 需要验证用户是否已经将库文件放在正确的路径下,或者是否需要通过Add-Ons安装。如果用户没有安装,可能需要指导他们获取库文件,并添加到MATLAB路径。此外,可能涉及在库浏览器中刷新或重新扫描目录,以便显示新添加的库。 还要考虑可能的错误情况,比如路径不正确,库文件损坏,或者版本不兼容。需要提醒用户检查这些方面,并提供相应的解决方案,如更新MATLAB版本或联系库的提供者。 最后,生成相关问题需要考虑用户可能的后续需求,比如如何验证库是否正确加载,如何解决常见错误,或者如何创建自定义模块库。这样可以帮助用户更全面地理解和解决问题。</think>在Simulink中添加或配置MBD_EF_LIB库的操作步骤如下: 1. **手动加载自定义库** - 在MATLAB命令窗口输入`open_system('MBD_EF_LIB')`直接打开库 - 若库文件不在当前路径,需先添加文件路径: ```matlab addpath('完整路径/MBD_EF_LIB'); savepath; % 永久保存路径 ``` 2. **通过库浏览器访问** - 点击Simulink工具栏的"Library Browser"图标 - 在库浏览器左侧导航栏中展开"Custom Libraries"分类 - 找到MBD_EF_LIB后右键选择"Lock library to prevent edits"[^1] 3. **模块使用方法** - 拖拽所需模块到模型画布 - 双击模块进行参数配置,注意标有"*"的参数影响代码生成[^2] - 对于运算模块需检查数据类型一致性[^3] 4. **代码生成配置(可选)** ```matlab % 在模型初始化回调函数中设置 set_param(gcs, 'CodeGenLibrary', 'MBD_EF_LIB'); ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值