simulink中求解器設定為離散,固定步長所帶來的影響

人間~惆悵客發表於2020-10-26

直接進入正題。大家在使用simulink模擬的時候,有時會用到離散求解器對模擬模型進行求解,如下圖所示。其中需要設定的一個引數便是求解器的步長。下面通過幾個例子來具體感受一下這個步長設定的效果。
在這裡插入圖片描述
首先將求解器的步長設定位0.0001,如上圖所示。這時在simulink中搭建一個最簡單的模擬模型,如下圖所示。
在這裡插入圖片描述
在正弦波模組中,取樣時間sample time這一項,表示執行該模型的步長。當其設定為-1的時候表示繼承上層(在這裡就是求解器的)求解步長。所以首先將其設定為-1.也就是步長是0.0001.通過下圖的模擬結果,可以看出。50Hz波形的週期是0.02s,然後計算的步長設定為了0.0001,也就是在一個週期內要進行200次,這個可以通過數正弦波形中的小格子數量看出來。
在這裡插入圖片描述
現在,我們保持正弦訊號的設定不變,將求解器中的步長設定為0.001.這個時候,我們根據上面的情況,先分析一波。也就是0.02除以0.001,一個週期的正弦波中將會出現20個階梯。然後再具體看一下結果(下圖),模擬的結果和我們預想的一樣。
在這裡插入圖片描述
加入說求解器的步長等於或者比一個正弦波的週期還大會出現什麼情況呢,下圖依次將模擬步長改為0.01和0.1.可以看到兩種情況下的波形都是一條為0的線,這也說明模組的執行步長一定要大於求解器的時間步長,且應該是整數倍的關係。
在這裡插入圖片描述
下面再來分析一種情況,首先把求解器的步長確定為0.0001,保持不變。然後改變正弦波模組中的取樣時間,先讓其為0.0001.這個情況和上面已經分析過的第一種情況是一致的,也就是波形中將會產生200個階梯。現在如果把正弦波模組的執行步長更改為0.001,可以得到下圖的結果。這個結果是怎麼產生的呢,現在分析一下。首先正弦波的週期是0.02s,只有是按照正弦波模組本身執行步長才能才能出現這樣的結果,也就是說模型的執行步長是要基於求解器的執行步長之上的。那假如模型的執行步長比求解器的步長還小的話會出現什麼情況呢?這裡將其設定為0.00001,發現就報錯了,提示“模型的執行步長一定要是求解器步長的整數倍”
在這裡插入圖片描述
在這裡插入圖片描述

相關文章