查找导致Simulink仿真缓慢的原因

查找导致仿真缓慢的原因

问题 找出模型中在模拟过程中出现运行缓慢的部分。
解决方案 : 使用Simulink求解分析器(Solver Profiler)定位模式中的问题。
Simulink求解分析器:

使用求解器轮廓器检查求解者和模型行为,找出可能导致不良仿真性能的问题。
使用求解器轮廓器对影响其模拟的模式进行分析。这个求解器轮廓器显示有关模拟、求解器设置、事件和错误的图形和统计信息。您可以使用这些数据来识别模型中导致模拟瓶颈的位置。

此外,还有多种因素限制了仿真速度。Solver Profiler记录并报告模拟模型时发生的所有主要事件:

  • 过零事件
  • 求解器异常事件
  • 求解器重置事件
  • 雅可比计算事件

对于精确的模拟,这些事件是常见的,也是必要的。然而,它们确实会导致计算量的增加,并且频繁发生可能会减慢甚至延缓模拟的进行。
在这里插入图片描述
在界面的右下角找到求解器点击,选择Solver Profiler按钮,打开求解分析器界面。
Simulink Solver Profiler
在这里插入图片描述
然后点击运行时间最长的高亮显示出其所在的模块,修改其参数再次运行。
在这里插入图片描述
完成参数修改后的最终结果显示出运行顺畅。
在这里插入图片描述
SIMULINK®求解器Profiler可以与Simscape™模型一起使用,以找出慢模拟的原因。使用Profiler Active运行仿真将生成图表和表,以显示模拟过程中的求解器行为。这些信息将突出显示模拟运行缓慢的时间段。生成了与小步长相关的块列表,您可以直接导航到这些块,以解决SIMULINK Solver Profiler突出显示的问题。
详细视频请参考查找导致仿真缓慢的原因

拓展

1.针对Simunlink仿真运行到某个时间突然计算的很慢的这篇博文中提到过零检测设置影响仿真运行的补充:

  • 对于大多数模型,启用过零检测会允许求解器执行更大的时间步,从而可加快仿真速度。
  • 如果模型具有极大的动态变化,则禁用此选项可加快仿真速度,但也会降低仿真结果的准确性。有关详细信息,请参阅过零检测。
  • 选择 “Enable all” 或 “Disable all” 会覆盖单个模块的本地过零检测设置。

2.对于更详细的分析仿真速度的知识请参考博文—提高simulink仿真速度的方法(转)

结束语

如果还有分析仿真速度更好的方法,欢迎大家在评论区留言,谢谢。

`Simulink function call failed`错误通常出现在使用MATLAB Simulink进行模型仿真时遇到问题。这个错误消息意味着在尝试运行或仿真您的Simulink模型过程中遇到了无法解决的问题。这可能是由于多种原因导致的,包括但不限于: ### 原因分析: 1. **功能块配置错误**:某个功能块(例如函数、信号处理模块等)的设置有问题,可能需要检查输入输出端口的连接是否正确,以及功能块本身的属性设置是否有误。 2. **依赖库缺失**:某些功能块可能依赖于特定的库或数学函数,如果Simulink无法找到这些资源,可能会引发此错误。 3. **数据类型不匹配**:输入到功能块的数据类型与期望类型不符,例如将字符串传递给预期接收数字的功能块。 4. **内存不足**:大型模型在运行时可能消耗大量系统内存,导致Simulink因为内存限制而无法继续执行。 5. **版本兼容性问题**:如果使用的模型元素或功能是在较新版本的Simulink中引入的,但在当前使用环境中不可用,则可能导致此类错误。 6. **外部源代码错误**:如果模型中包含了自定义的MATLAB函数或S-Function,可能存在语法错误或逻辑错误。 7. **错误的启动模式**:有时选择不合适的启动模式也可能导致仿真失败,特别是对于包含特定初始化步骤的复杂模型。 ### 解决方案: 1. **详细错误信息**:首先查看Simulink提供的详细错误信息。错误信息通常会指出问题发生的具体位置和原因,这有助于定位问题。 2. **检查模型结构**:从最近的错误开始逐步向前回溯模型,检查所有可能引起问题的部分,如输入/输出端口、功能块的配置等。 3. **简化模型**:尝试删除一部分复杂的部分或替换为简单的替代模型,看是否可以成功仿真。逐步增加复杂度直到再次出现问题,以此来定位问题所在区域。 4. **更新软件**:确保您的MATLABSimulink版本是最新的,并且已安装所有必要的工具箱和更新。 5. **查阅文档或社区**:利用MATLAB的帮助文档或在线论坛(如MathWorks官方支持页面、Stack Overflow等),查找类似问题及解决方案。 6. **清理工作空间**:有时候关闭并重启Simulink或清除工作区的内容也能帮助解决问题。 7. **寻求专业帮助**:如果以上步骤都无法解决问题,建议联系技术支持人员或更高级别的用户寻求进一步的指导。 ### 相关问题: 1. `Simulink function call failed` 错误如何定位和修复? 2. 如何避免在Simulink模型中遇到“function call failed”错误? 3. 遇到Simulink功能块故障时应采取哪些调试策略?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

水月流萤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值