2013-07-25 165 views
3

我的问题解决问题

我已经得到了留言反馈回路又名即在模拟导致错误代数循环Simulink模型。我原来的解算器配置是Dormand-Prince(Order 5)的固定步骤。我还尝试了订单3(Runga-Kutta)的固定步骤。它仍然没有解决这个问题。

我的问题

有什么办法解决代数环在不改变电路的原有性能或设计太多了?

澄清的提问

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

我的方法迄今

我试图打破循环使用:

ⅰ)开关(如果IP = 0,OP = 0;如果IP = 1,OP = 1),我知道它是愚蠢的,但它是一个不同的块打破循环。

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

不幸的是,我不知道如何做一个零阶保持单位延迟循环,这似乎是另一种通常为这类问题规定的解决方案。但我相信这可能会导致我的模型最初预期的性能出现问题。

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

enter image description here

回答

3

没有一个“一刀切”的答案,当涉及到代数循环。这里有一些关于资源循环代数:

在你的情况,我建议突出了代数环(按照文档中的超级链接以上),并尝试将循环中的单位延迟。该文档显示了如何做到这一点。其他建议将尝试代数循环求解器或与代数循环相关的模型参数,或者在循环中放置一个ICAlgebraic Constraint模块。有关详细信息,请参阅上面超链接中的文档。我假设你被限制使用固定步长解算器,并且不能切换到可变步长解算器。

+2

我已经通过添加一个延迟块来解决这个问题,但延迟非常小。我知道这是一个妥协,但延迟是可以接受的:) – ha9u63ar

4

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

单位延迟提供输出信号的先前值 - 这不会影响本场景中的大部分电路。

+0

因此,我的评论以前后@ am304回答:) – ha9u63ar

+0

@hagubear ouh你已经想通了,很酷! 我使用了很多延迟块来摆脱这种情况,生成的代码似乎也相当可接受,因为两个周期之间的时间间隔非常短。 – P0W

+0

幸运的是,我实现的延迟非常小...在门的传播延迟范围附近,我希望它是好的.....我不知道你是否会对我想解决的另一个问题感兴趣[在这里](http://stackoverflow.com/questions/17862816/implementation-of-custom-counter-logic-in-simulink) – ha9u63ar