simulink仿真過程


Simulink求解器
Simulink仿真過程
Simulink 模型的執行分幾個階段進行。首先進行的是初始化階段,在此階段,Simulink 將庫塊合並到模型中來,確定傳送寬度、數據類型和采樣時間,計算塊參數,確定塊的執行順序,以及分配內存。然后,Simulink 進入到“仿真循環”,每次循環可認為是一個“仿真步”。在每個仿真步期間,Simulink 按照初始化階段確定的塊執行順序依次執行模型中的每個塊。對於每個塊而言,Simulink 調用函數來計算塊在當前采樣時間下的狀態,導數和輸出。如此反復,一直持續到仿真結束。下圖所示為一個仿真的步驟:
Simulink求解器分類
Simulink求解器可分為兩大類:變步長求解器和定步長求解器。也可細分為:連續求解與離散求解、隱式求解與顯式求解、單步求解與多步求解以及單階式與變階式求解。
1)定步長與變步長求解器
定步長求解器的仿真步長為定制,沒有誤差控制機制;變步長求解器在仿真過程中需要計算仿真步長,通過增加/減小步長來滿足所設定的誤差寬容限。在生成實時運算代碼時,必須使用定步長求解器,若不打算配置模型代碼生成,求解器的選擇根據建立模型而定。通常,變步長求解器可以減少仿真時間,定步長求解步長越小,仿真精度越高,故在同樣仿真精度要求下,在采用定步長求解器進行仿真時,整個仿真過程必須采用變步長求解器中的最小步長。
(2)連續與離散求解器
在定步長與變步長求解器中均有連續與離散求解器。連續與離散求解器都是依靠模塊來計算所有離散狀態值。定義離散狀態的模塊負責在每個步長的時間點計算離散狀態值,連續求解器是通過數值積分來計算定義連續狀態的模塊的狀態值。在選擇求解器時,必須先確定模型中是否需要離散求解器。在模型中若沒有連續狀態模塊,求解器采用連續、離散均可,若有連續狀態模型必須采用連續求解器
3)顯式與隱式求解器
隱式求解器的應用主要解決模型中的剛性問題,顯式求解器應用解決非剛性問題。譬如,在控制系統中,控制部件反應靈敏是快變的,具有小的時間常數,而受控對象一般慣性大事慢變的,具有大的時間常數。通常將具有非常不同時間尺度的系統稱之為剛性系統,通俗講,就是系統中含有時間快變和慢變解分量(同時含有小時間常數和大時間常數的系統)。剛性系統有非常大的恢復能力使得快變化分量的擾動很快就衰減,當數值積分這樣一個系統時,一旦快變分量消失時期望選取合適的時間步長用於計算慢變分量。故剛性系統的實質是要計算的解是慢變化,但存在迅速衰減的擾動,這樣的擾動出現使得慢變解的數值計算復雜化。故,對系統中的震盪現象,隱式求解遠比顯式求解穩定,但計算的消耗比顯式求解大,它需要在仿真的每個步長利用Newton-like方法計算所產生的雅克比矩陣和代數方程組。為了減少計算消耗,Simulink提供了計算雅克比方法的參數,提高仿真性能
4)單步與多步求解器
Simulink求解庫中提供了單步與多步求解器。單步求解就是在計算系統當前時刻y(tn),需要利用前一時刻y(tn-1)以及在tn-1tn之間多個時間點的微分量(這些時間點稱為微步長);多步求解器就是利用系統前多個時刻的值計算當前時刻的值。Simulink提供了一個顯式多步求解器ode113和一個隱式多步求解器ode15s,這兩個都是變步長求解器。
5)變階式求解器
Simulink提供兩種變階式求解器,ode15s求解器利用1階到5階仿真;ode113應用1階到13階。對於ode15s可以設置最高階次。
定步長求解器的選擇
(1)定步長離散求解器
定步長離散求解器通過在當前時間點的基礎上加上仿真步長來計算下一時間點。故,仿真的精度和時間長度取決於仿真步長的大小。步長越小精度越高。仿真步長可以任意設置,當步長設置為缺省時,若模型中含有離散采樣模塊,Simulink將最小采樣步長作為求解器的基步長(通常指最小仿真步長),若沒有則默認整個仿真只有50步,仿真步長為仿真時間歷程的1/50
(2)定步長連續求解器
定步長連續求解器通過在當前時間點的基礎上加上仿真步長來計算下一時間點,但通過數值積分計算連續狀態。利用上一時間點的值和積分微步計算當前時間點的值。定步長連續求解器可以用於計算沒有連續狀態的模型,但增加計算負擔。通常,模型中沒有連續狀態模塊采用離散求解器仿真。
Simulink提供了兩種定步長連續求解器:隱式求解和顯式求解。主要區別在於計算速度和穩定性方面,隱式比顯式的每步計算量大,但穩定性好。
a)顯式定步長連續求解器
Simulink根據數值積分方法的不同分為多種不同顯式定步長連續求解器,其系統顯函數的數學表達為:
式中,x為狀態,h為時間步長,Dx為狀態微分,顯式求解器利用當前時間點的狀態值和狀態微分計算下一時間點的狀態值。Simulink提供的求解器具體如下表:
求解器
積分方法
精度等級
ode1
Euler’s Method
1
ode2
Heun’s Method
2
ode3
Bogacki-Shampine Formula
3
ode4
Fourth-Order Runge-Kutta RK4Formula
4
ode5
Dormand-PrinceRK5Formula
5
ode8
Dormand-Prince RK8(7) Formula
8
這些求解器都沒有誤差控制機制,仿真精度和持續時間直接由仿真步長控制。表中的求解器根據數值積分方法的復雜度(精度等級)將求解器由簡單到復雜排序。在相同的仿真步長設置下,求解器計算越復雜,計算結果精度越高。
在設置求解器時,若選擇定步長求解,Simulink默認為ode3,其支持離散和連續狀態求解,且仿真性能適中(計算精度和計算消耗),其仿真步長的設置和離散求解器一樣,在缺省步長設置時,若模型中有離散狀態模塊,則將模型中最小采樣時間作為求解器的基步長,若沒有則默認整個仿真只有50步,仿真步長為仿真時間歷程的1/50
b)隱式定步長連續求解器
Simulink提供了一種隱式定步長求解器,ode14x。其系統隱函數的數學表達為:
式中,x為狀態,h為時間步長,Dx為狀態微分,此求解器綜合利用牛頓迭代法和外推法,根據當前狀態值計算下一時間點的狀態。用戶可以設置牛頓法迭代次數和外推階次。迭代次數越大、外推階次越高,仿真精度越高,同時每一仿真步長的計算負擔也越大。
3)定步長連續求解選擇過程
Simulink中的每個定步長連續求解器,只要設置足夠小的仿真步長,都能達到期望的計算精度,但通常不實際,故需要選擇最佳的求解器,其選擇過程如下圖所示。
變步長求解器的選擇
變步長求解器與定步長求解器一樣,包含多個連續求解器和一個離散求解器,兩種求解器的選擇關鍵在於模型中是否有狀態模塊或是否有離散狀態模塊。
(1)變步長連續求解器
Simulink中的變步長求解器通過增大/減小仿真步長,通過控制局部誤差實現仿真精度控制。仿真過程中,在每一時間點都要計算步長,增加了計算開銷,但在仿真精度要求下可以減少仿真的步數和仿真時間。
(a)顯式變步長連續求解器
顯式變步長求解器主要計算無剛度系統,有一下三種。
求解器
單步計算
多步計算
精度等級
方法
ode45
×
 
Runge-Kutta
Dormand-Prince (4,5)pair
ode23
×
 
Rung-Kutta(2,3) pair of
Bogacki & Shampine
ode113
 
×
由低到高
PECE Implementation of Adams-Bashforth-Moutlon
ode45基於顯式Runge—Kutta(45)公式,Dormand—Prince對.它是個單步求解器(solver)。也就是說它在計算y(tn)時,僅僅利用前一步的計算結果y(tn-1).對於大多數問題.在第一次仿真時、可用ode45試一下。
ode23是基於顯式Runge—Kutta(23)BogacktShampine對.對於寬誤差容限和存在輕微剛性的系統、它比ode45更有效一些.ode23也是單步求解器。
ode113是變階Adams-Bashforth—Moulton PECE求解器.在誤差容限比較嚴時,它比ode45更有效.odell3是一個多步求解器,即為了計算當前的結果y(tn),不僅要知道前一步結果y(tn-1),還要知道前幾步的結果y(tn-2)y(tn-3)
(b)隱式變步長連續求解器
隱式變步長連續求解器用於解決剛性問題,主要有一下四種:
求解器
單步
多步
精度
等級
重置方法
最大階次
方法
ode15s
 
×
低到中
×
×
Numerical Differentiation Formulas (NDFs)
ode23s
×
 
   
Second-order, modified Rosenbrock formula
ode23t
×
 
×
 
Trapezoidal rule using a "free" interpolant
ode23tb
×
 
×
 
TR-BDF2
odel5s是基於數值微分公式(NDFs)的變階求解器.它與后向微分公式BDFs(也叫Gear方法)有聯系,但比它更有效。ode15s是一個多步求解器,如果認為一個問題是剛性的,或者在用ode45s時仿真失敗或不夠有效時,可以試試odel5s odel5s是基於一到五階的NDF公式的求解器.盡管公式的階數越高結果越精確,但穩定性會差一些.如果模型是剛性的,並且要求有比較好的穩定性,應將最大的階數減小到2。選擇odel5s求解器時,對話框中會顯示這一參數. 可以用ode23求解器代替。del5sode23是定步長、低階求解器。
ode23s是基於一個2階改進的Rosenbrock公式.因為它是一個單步求解器,所以對於寬誤差容限,它比odel5s更有效.對於一些用odel5s不是很有效的剛性問題,可以用它解決。
ode23t是使用自由內插式梯形規則來實現的。如果問題是適度剛性,而且需要沒有數字阻尼的結果,可采用該求解器。
ode23tb是使用TR—BDF2來實現的,即基於隱式Runge—Kutta公式,其第一級是梯形規則步長和第二級是二階反向微分公式。兩級計算使用相同的迭代矩陣.與ode23s相似,對於寬誤差容限,它比odtl5s更有效。
(2)過零檢測
變步長求解器利用過零檢測處理連續信號。
(3)變步長求解器誤差容限
變步長求解器利用標准控制技術監視每一步長的局部誤差。在每個仿真步長內,求解器計算步長時間點的狀態和局部誤差(即狀態的局部誤差,包括絕度誤差和相對誤差),並與設置的可接受誤差(絕度和相對誤差)進行比較,若超出設定值,則減小步長重新計算。
相對誤差就是每一仿真步長計算的狀態誤差,默認為1e-3,即相對誤差控制在0.1%
絕對誤差是一個誤差界限值。Simulink默認設置為Auto,即所有狀態的絕對誤差容限初始設置為1e-6
Simulink仿真參數設置界面
Solver 面板:
(1)仿真時間設置:
Start timeà開始時間:仿真和生成代碼為雙精度值,單位秒;參數名稱為StartTime,參數類型為string
Stop timeà結束時間:仿真和生成代碼為雙精度值,單位秒;參數名稱為StopTime,參數類型為string;此值應不小於Start time(若相等,則只運行一步),可以設置為無窮大inf
(2)求解器設置:不同的求解器,具體設置參數也不盡相同,這里指說明共同部分。
變步長求解器由下列構成
Solver
Max step sizeà設置最大步長,缺省為auto,即為仿真時間歷程的1/50;參數名稱為MaxStep
Min step sizeà設置最小步長,缺省為auto,即為不限制警告數量,最小步長近似機器精度;可以設置為一個大於零的實數,或者兩個元素的數組(在產生錯誤警告前,第一個元素最小步長,第二個元素為最大步長),參數名稱為MinStep
Initial step sizeà求解器第一步執行的時間步長。
Relative tolerance
Absolute tolerance
Shape preservation
Initial step size
Number of consecutive min steps
Zero-crossing control
Time tolerance
Number of consecutive zero crossings
Algorithm
定步長求解器由
Solver
Periodic sample time constraint
Fixed-step size (fundamental sample time)
Tasking mode for periodic sample times
Higher priority value indicates higher task priority
Automatically handle rate transitions for data transfers


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM