【问题标题】:Resolving problems with Algebraic Loops in SIMULINK models解决 SIMULINK 模型中的代数环问题
【发布时间】:2013-07-25 10:07:33
【问题描述】:

我的问题

我有一个 SIMULINK 模型,它有一个反馈循环,也就是代数循环,它会导致模拟错误。我最初的求解器配置是带 Dormand-Prince 的 Fixed-Step(5 阶)。我还尝试了 Order 3 (Runga-Kutta) 的 Fixed-Step。它仍然没有解决问题。

我的问题

有没有什么办法可以解决代数环,而不会过多地改变电路的原始性能或设计?

问题说明

我相信会有办法解决这个问题。但是,我不希望它损害电路的原始性能。此外,这是客户提供的数据,他们似乎已经成功地解决了这个问题。我只是需要有人指出我如何解决这个问题的正确方向。

到目前为止我的方法

我尝试使用以下方法打破循环:

i) Switch (if ip = 0, op = 0; if ip = 1, op = 1) 我知道这很愚蠢,但它是一个打破循环的不同块。

ii) 逻辑门(将反馈信号与 0 异或)。

不幸的是,我不知道如何进行零阶保持单元延迟循环,这似乎是此类问题的另一种常用解决方案。但我认为这可能会导致我的模型最初预期的性能出现问题。

我在 Mathworks 网站上发布了一个查询,但到目前为止没有任何回复。所以我想......为什么不使用stackoverflow?下面是图片。

【问题讨论】:

    标签: simulink solver feedback-loop


    【解决方案1】:

    在反馈信号上添加一个unit delay 块(从逻辑运算符1 到逻辑运算符4)。

    单位延迟提供输出信号的先前值 - 在这种情况下,这不会影响大部分电路。

    【讨论】:

    • 因此我之前在@am304 回答后发表了评论:)
    • @hagubear 哦,你已经想通了,酷!我经常使用延迟块来摆脱这种情况,生成的代码似乎也可以接受,因为两个周期之间的时间间隔非常小。
    • 幸运的是,我实现的延迟非常小......接近门的传播延迟范围,我希望没关系......不知道你是否会对另一个问题感兴趣我正在尝试解决here
    • 有时有效,有时振荡。 Read This
    【解决方案2】:

    对于代数环,没有“一刀切”的答案。以下是一些关于代数环的资源:

    在您的情况下,我建议突出显示代数循环(根据上面超链接中的文档),并尝试在循环中插入单位延迟。该文档显示了如何执行此操作。其他建议是尝试代数循环求解器或与代数循环相关的模型参数,或在循环中放置 ICAlgebraic Constraint 块。同样,有关详细信息,请参阅上面超链接中的文档。我假设您只能使用固定步长求解器,并且无法切换到可变步长求解器。

    【讨论】:

    • 我已经通过添加一个延迟非常小的延迟块来解决它。我知道这是一种妥协,但延迟是可以接受的 :)
    猜你喜欢
    • 1970-01-01
    • 2016-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-02
    • 2016-06-26
    • 2022-10-19
    相关资源
    最近更新 更多