2010-10-07 86 views
8

我想了解Simulink仿真引擎是如何工作的。它是否使用離散事件模擬機制(然後如何處理連續時間?)?它是否依賴於基於循環的靜態代碼生成?要麼 ?Simulink仿真引擎是如何工作的?

回答

4

第一循環之前,計算出(不要求從任何其他塊的輸入開始的那些)

每個循環塊的執行順序,它計算每個塊的基於所述輸出在輸入和塊的代碼上。每個模塊的代碼都是靜態的,它大多存在於將模型放在一起之前。 (我不知道塊選項是否實際更改了代碼,或者僅在運行時每次迭代時評估它們)。

如果模擬步驟是可變的,則比每個週期計算下一步的大小主要基於模型變量的變化速度。它們變化的速度越快,步長應該越小,因此短暫的高導數不會被認爲持續時間長於它應該的時間。 (我不知道這個計算的細節,也許其他人可以闡明一下)?所以,「連續」模擬或變步長只是意味着Simulink會對每個週期做出有根據的猜測,確定步長足夠小將時間量化誤差保持在可接受的水平。對於完全數字硬件,例如計算機處理器,真正連續的模擬是不可能的。

+0

Thx。這也是我的想法。對不起,這個奇怪的問題,但你是如何得到這個信息?你有什麼樣的信心? – JCLL 2010-12-23 15:00:11

+0

@JLCC不多。我有多年使用Simulink的經驗,但是這些信息來源於文檔中的推斷和獲取線索(這裏有很多線索,但我從來沒有找到簡單的描述)。什麼讓我對我在這裏所說的最有信心是我對s函數的有限瞭解,它們是你自己編寫代碼的塊。我建議閱讀這些內容,他們提供有關正在發生的事情的見解。我說的關於變步長計算algorythm的信心非常低。但我很確定真正的連續模擬是不可能的,但不能參考 – 2010-12-23 16:11:13

0

我當然不是專家,但答案可能是'它取決於'。

Simulink當然使用數值積分來處理某些事情,對於某些集成商而言,您最終會得到不連續的時間步驟。對於其他積分器,隨着模擬運行,時間步可以改變 - 這對於模擬'僵硬'的方程組尤爲重要。