【问题标题】:Simulink - Algebraic Loops errorsSimulink - 代数循环错误
【发布时间】:2015-06-18 22:59:25
【问题描述】:

我正在尝试在 Simulink 中构建一个系统,但我收到有关代数循环的错误。 你能帮忙吗?

该系统的目标是观察双摆的行为,其下部附有弹簧。

这是我的系统:http://1drv.ms/1GPqeeQ

我无法发布图片,因为我在 StackOverflow 上没有足够的积分。

【问题讨论】:

    标签: matlab loops simulink


    【解决方案1】:

    是的,这是常见问题。 问题是 simulink 尝试使用变量值来计算自身(一步)。 您可以轻松解决此问题 - 您只需为此变量添加 Unit Delay 块。像这样:

    你可以看到我在每一步都使用变量 Vd 重新计算自己。 我添加了单位延迟,simulink 使用上一步中的 Vd 值! 效果很好!

    【讨论】:

    • 好的,所以我添加了 2 个延迟,现在在我的模型构建过程中没有错误。但是当我尝试运行时,我得到一个错误:在时间 0.0 块“Podwojne_wahadlo_sprezyna/Integrator2”中状态“1”的导数不是有限的。模拟将停止。解中可能存在奇点。如果不是,请尝试减小步长(通过减小固定步长或收紧误差容限)。这是我的模型:1drv.ms/1fq5qAn 我尝试添加更多延迟,但无法让它运行。你能帮助我吗?哦,我将求解器设置为 ode14x(固定步长)
    • 我无法打开你的模型(我看不到一些 simulink 文件,只有一些 xml)......但我可以告诉你问题出在哪里 - 你在入口处有无穷大值积分器2。我认为,您尝试将某个值除以 0 并在时间 0.0 获得 Infinity 值。您不再需要延迟!您需要对时间 = 0.0 使用一些特定条件,以避免除以零。例如:if t == 0.0 y = 0.0001 else y = 1/t; end
    • 我也有同样的问题。我正在尝试解决它,但直到现在什么都没有:(
    • @minidiable 你能澄清一下 - 你有同样的循环问题或积分器问题吗?
    • 对不起。我对积分器也有同样的问题。我放了一个延迟块,它起作用了(实际上我放了一个所谓的 MEMORY 块)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-23
    • 1970-01-01
    • 2023-03-30
    • 2013-07-02
    • 1970-01-01
    • 2016-01-20
    • 2016-08-09
    相关资源
    最近更新 更多