You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Simulink仿真求助:状态导数非有限值报错问题排查

解决Simulink仿真中Transfer Fcn模块导数非有限值的报错

先来看你遇到的报错信息:

此前报错:‘时间2.084275时,模块‘project/Subsystem/Transfer Fcn’中状态‘1’的导数非有限值……’
近期报错:‘仿真运行时发生错误,仿真已终止。原因:时间3.3375时,模块‘project/Subsystem/Transfer Fcn’中状态‘1’的导数非有限值,仿真将停止。解中可能存在奇异点,若不存在,请尝试减小步长(减小Fixed-step size或收紧误差容限)’

结合你给出的系统配置和发现的传递函数问题,我可以明确告诉你:传递函数的符号错误是引发这个问题的核心原因。你提到子系统里的传递函数应该是-14/(s+14),但当前用的是+14/(s+14)——这种符号翻转会彻底改变系统的动态特性,很容易引入不稳定或者数值奇异的情况,直接导致仿真时状态导数出现无穷大/NaN,触发报错。

给你一步步的解决建议:

  1. 优先修正传递函数符号
    打开project/Subsystem/Transfer Fcn模块,把分子从14改成-14,确保传递函数为-14/(s+14)。这是最关键的一步,根源问题解决了,大部分情况下报错就会消失。

  2. 验证系统稳定性(可选但推荐)
    修正后可以先做个简单的理论分析:这个传递函数的极点在s=-14,是稳定极点,系统本身是稳定的,理论上不会出现发散的情况,这也能帮你确认修正后的系统逻辑是对的。

  3. 调整求解器参数(如果修正后仍报错)
    要是改完传递函数还是遇到类似问题,再按照报错提示调整求解器设置:

    • 减小Fixed-step size:比如从当前的0.01改成0.005或者更小,让仿真步长更精细,避免因步长过大导致的数值计算跳变;
    • 收紧误差容限:如果你的固定步长求解器支持误差控制,适当收紧容限参数,提升数值计算的精度。

另外再帮你核对一下现有配置的合理性:

  • 信号发生器的0.5振幅、0.1Hz方波输入没问题;
  • PID控制器设置的10%超调量,建议修正传递函数后再验证一下参数是否适配新的系统动态;
  • 20s的停止时间对于0.1Hz的方波来说,足够覆盖多个周期,配置合理。

内容的提问来源于stack exchange,提问作者Ash

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 11:17:56