2013-07-25 213 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