2013-08-02 86 views
2

我在Dymola中遇到了一個有趣的現象,我認爲它的原因可能來自我的模型,但我不知道是什麼樣的事情可能導致這種情況。非常感謝,如果有人可以給我一點點暗示。modelica中的數字抖動

我的問題是,模擬將「停止」,在一定的時間(它的運行,但速度很慢),當我繪製的結果,即測試如果誤差容限內的塊不斷生成事件在一個非常大的頻率。

跟蹤從背面「公差內」塊,它是一個「差錯塊」從具有3個信號

U1的標準庫 - 傳感器數據,U2 - 基準值,ÿ - 輸出信號[U1-U2 = Y]

(不幸的是,我不能上傳我重複,由於我的低信譽)

這是我發現,當我在(很多很多次),這些信號(在那裏他們停止運行)的「尾巴」放大,

對於error.y信號: 我可以看到非常微小(1e- 10)但圍繞我的errorTolerance目標高頻抖動,但只在模擬開始運行非常緩慢的尾部。它表現得像鋸齒形信號。

對於U1(傳感器數據)信號: 我放大以相同的比例作爲信號error.y,但我NOT看到任何顫動。

對於U2(參考)信號: 不變的時間

我不知道什麼樣的事情可能會導致此,作爲錯誤塊僅是一個簡單的減計算,它是如何來誘導這種震顫。謝謝!

HY

回答

2

你所描述的聽起來完全像喋喋不休。您真正需要注意的情況是事件一側的系統動力驅動它向事件發展。換句話說,如果x> c,der(x)< = 0並且如果x < = c,則der(x)> = 0。另一種情況是如果這樣的事件發生在平衡點。

你說「什麼樣的事情可能導致這種情況」,但在我看來(至少從我能理解你的描述中),答案是顯而易見的。這是你的錯誤塊。你說它「只是一個簡單的減法計算」,但是如果塊中有任何一種條件表達式(我假設有),那麼將觸發一個事件。

根據您的描述,我的猜測是您的系統正好在條件語句從真到假轉換的點處達到平衡點。因此,該點解決方案中的數字噪聲會導致它每次都在該觸發事件的閾值上來回切換。

+0

非常感謝Micheal,很高興知道這一點。「容差範圍內」塊實際上是一個「> =」塊,因此它會一直生成事件。我將該塊更改爲滯後塊以避免生成事件。正如你所說的,系統達到了一個平衡點,這個狀態也是一個條件。有趣的是,這個調諧器被用在很多地方,只有一個調諧器有這個問題。我的系統有點像運動平臺,我希望平臺具有一定的高度,只有一條腿(總是那個)給我這種問題。 –