我的问题
我有一个SIMULINK模型,它有一个反馈循环又称代数循环,导致模拟中的错误。我的原始解算器配置是使用Dormand-Prince(订单5)的固定步骤。我也尝试过使用Order 3(Runga-Kutta)的Fixed-Step。它仍然没有解决问题。
我的问题
有没有办法解决代数循环而不会过多地改变电路的原始性能或设计?
对问题的澄清
我相信会有办法解决这个问题。但是,我不希望它损害电路的原始性能。此外,它是客户提供的数据,似乎他们已经成功地完成了这项工作。我只是要求某人指出如何解决这个问题的正确方向。
到目前为止MY方法
我尝试使用以下方法打破循环:
i)切换(如果ip = 0,op = 0;如果ip = 1,op = 1)我知道它是愚蠢的但是它是一个不同的块来打破循环。
ii)逻辑门(将反馈信号与0进行异或)。
不幸的是,我不知道如何进行零阶保持单元延迟循环,这似乎是另一种常见的解决方案。但我认为这可能会导致我的模型最初预期的性能出现问题。
我在Mathworks网站上发布了一个查询,但到目前为止还没有回复。所以我想...为什么不stackoverflow?下面是图片。
答案 0 :(得分:4)
在反馈信号上添加unit delay块(从逻辑运算符1到逻辑运算符4)。
单位延迟提供输出信号的先前值 - 这不会影响此场景中的大多数电路。
答案 1 :(得分:3)
当涉及到代数循环时,没有“一刀切”的答案。以下是有关代数循环的一些资源:
在您的情况下,我建议突出显示代数循环(根据上面超链接中的文档),并尝试在循环中插入单位延迟。该文档显示了如何执行此操作。其他建议是尝试代数循环求解器或与代数循环相关的模型参数,或在循环中放置IC或Algebraic Constraint块。同样,请参阅上面超链接中的文档了解详细信息。我假设您被限制使用固定步长求解器,并且无法切换到变步长求解器。