仿真基礎精品課件_第1頁
仿真基礎精品課件_第2頁
仿真基礎精品課件_第3頁
仿真基礎精品課件_第4頁
仿真基礎精品課件_第5頁
已閱讀5頁,還剩43頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、仿真基礎第1頁,共48頁,2022年,5月20日,14點20分,星期日第一節(jié) SIMULINK簡介SIMULINK是MATLAB軟件的擴展,它是實現(xiàn)動態(tài)系統(tǒng)建模和仿真的一個軟件包,它與MATLAB語言的主要區(qū)別在于,其與用戶交互接口是基于Windows的模型化圖形輸入,其結果是使得用戶可以把更多的精力投入到系統(tǒng)模型的構建,而非語言的編程上。所謂模型化圖形輸入是指SIMULINK提供了一些按功能分類的基本的系統(tǒng)模塊,用戶只需要知道這些模塊的輸入輸出及模塊的功能,而不必考察模塊內部是如何實現(xiàn)的,通過對這些基本模塊的調用,再將它們連接起來就可以構成所需要的系統(tǒng)模型(以.mdl文件進行存?。?,進而進行

2、仿真與分析。SIMULINK的最新版本是SIMULINK4.0(包含在MATLAB6.0里),MATLAB5.3里的版本為3.0版,它們的變化不大。一、什么是SIMULINK第2頁,共48頁,2022年,5月20日,14點20分,星期日2、在MATLAB命令窗口中輸入simulink3結果是在桌面上出現(xiàn)一個用圖標形式顯示的Library :simulink3的Simulink模塊庫窗口。二、SIMULINK的啟動1、在MATLAB命令窗口中輸入simulink結果是在桌面上出現(xiàn)一個稱為Simulink Library Browser的窗口,在這個窗口中列出了按功能分類的各種模塊的名稱。當然用戶

3、也可以通過MATLAB主窗口的快捷按鈕來打開Simulink Library Browser窗口。兩種模塊庫窗口界面只是不同的顯示形式,用戶可以根據(jù)各人喜好進行選用,一般說來第二種窗口直觀、形象,易于初學者,但使用時會打開太多的子窗口。第3頁,共48頁,2022年,5月20日,14點20分,星期日三、SIMULINK的模塊庫介紹SIMILINK模塊庫按功能進行分類,包括以下8類子庫:Continuous(連續(xù)模塊)Discrete(離散模塊)Function&Tables(函數(shù)和平臺模塊)Math(數(shù)學模塊)Nonlinear(非線性模塊)Signals&Systems(信號和系統(tǒng)模塊)Sin

4、ks(接收器模塊)Sources(輸入源模塊)第4頁,共48頁,2022年,5月20日,14點20分,星期日1、連續(xù)模塊(Continuous) continuous.mdlIntegrator:輸入信號積分Derivative:輸入信號微分State-Space:線性狀態(tài)空間系統(tǒng)模型Transfer-Fcn:線性傳遞函數(shù)模型Zero-Pole:以零極點表示的傳遞函數(shù)模型Memory:存儲上一時刻的狀態(tài)值Transport Delay:輸入信號延時一個固定時間再輸出Variable Transport Delay:輸入信號延時一個可變時間再輸出第5頁,共48頁,2022年,5月20日,14點2

5、0分,星期日2、離散模塊(Discrete) discrete.mdlDiscrete-time Integrator:離散時間積分器Discrete Filter:IIR與FIR濾波器Discrete State-Space:離散狀態(tài)空間系統(tǒng)模型Discrete Transfer-Fcn:離散傳遞函數(shù)模型Discrete Zero-Pole:以零極點表示的離散傳遞函數(shù)模型First-Order Hold:一階采樣和保持器Zero-Order Hold:零階采樣和保持器Unit Delay:一個采樣周期的延時第6頁,共48頁,2022年,5月20日,14點20分,星期日3、 Function&

6、Tables(函數(shù)和平臺模塊) function.mdlFcn:用自定義的函數(shù)(表達式)進行運算MATLAB Fcn:利用matlab的現(xiàn)有函數(shù)進行運算S-Function:調用自編的S函數(shù)的程序進行運算Look-Up Table:建立輸入信號的查詢表(線性峰值匹配)Look-Up Table(2-D):建立兩個輸入信號的查詢表(線性峰值匹配)第7頁,共48頁,2022年,5月20日,14點20分,星期日4、 Math(數(shù)學模塊) math.mdlSum:加減運算Product:乘運算Dot Product:點乘運算Gain:比例運算Math Function:包括指數(shù)函數(shù)、對數(shù)函數(shù)、求平方、

7、開根號等常用數(shù)學函數(shù)Trigonometric Function:三角函數(shù),包括正弦、余弦、正切等MinMax:最值運算Abs:取絕對值Sign:符號函數(shù)第8頁,共48頁,2022年,5月20日,14點20分,星期日Logical Operator:邏輯運算Relational Operator:關系運算Complex to Magnitude-Angle:由復數(shù)輸入轉為幅值和相角輸出Magnitude-Angle to Complex:由幅值和相角輸入合成復數(shù)輸出Complex to Real-Imag:由復數(shù)輸入轉為實部和虛部輸出Real-Imag to Complex:由實部和虛部輸入合

8、成復數(shù)輸出第9頁,共48頁,2022年,5月20日,14點20分,星期日5、 Nonlinear(非線性模塊) nonlinear.mdlSaturation:飽和輸出,讓輸出超過某一值時能夠飽和。Relay:滯環(huán)比較器,限制輸出值在某一范圍內變化。Switch:開關選擇,當?shù)诙€輸入端大于臨界值時,輸出由第一個輸入端而來,否則輸出由第三個輸入端而來。Manual Switch:手動選擇開關第10頁,共48頁,2022年,5月20日,14點20分,星期日6、Signal&Systems(信號和系統(tǒng)模塊) sigsys.mdlIn1:輸入端。Out1:輸出端。Mux:將多個單一輸入轉化為一個復合

9、輸出。Demux:將一個復合輸入轉化為多個單一輸出。Ground:連接到沒有連接到的輸入端。Terminator:連接到沒有連接到的輸出端。SubSystem:建立新的封裝(Mask)功能模塊第11頁,共48頁,2022年,5月20日,14點20分,星期日7、Sinks(接收器模塊) sinks.mdlScope:示波器。XY Graph:顯示二維圖形。To Workspace:將輸出寫入MATLAB的工作空間。To File(.mat):將輸出寫入數(shù)據(jù)文件。第12頁,共48頁,2022年,5月20日,14點20分,星期日8、Sources(輸入源模塊) sources.mdlConstant

10、:常數(shù)信號。Clock:時鐘信號。From Workspace:來自MATLAB的工作空間。From File(.mat):來自數(shù)據(jù)文件。Pulse Generator:脈沖發(fā)生器。Repeating Sequence:重復信號。Signal Generator:信號發(fā)生器,可以產生正弦、方波、鋸齒波及隨意波。Sine Wave:正弦波信號。Step:階躍波信號。第13頁,共48頁,2022年,5月20日,14點20分,星期日四、SIMULINK簡單模型的建立及模型特點1、簡單模型的建立 exp5_1.mdl(1)建立模型窗口(2)將功能模塊由模塊庫窗口復制到模型窗口(3)對模塊進行連接,從而

11、構成需要的系統(tǒng)模型2、模型的特點在SIMULINK里提供了許多如Scope的接收器模塊,這使得用SIMULNK進行仿真具有像做實驗一般的圖形化顯示效果。SIMULINK的模型具有層次性,通過底層子系統(tǒng)可以構建上層母系統(tǒng)。SIMULINK提供了對子系統(tǒng)進行封裝的功能,用戶可以自定義子系統(tǒng)的圖標和設置參數(shù)對話框。第14頁,共48頁,2022年,5月20日,14點20分,星期日第二節(jié) SIMULINK功能模塊的處理模塊庫中的模塊可以直接用鼠標進行拖曳(選中模塊,按住鼠標左鍵不放)而放到模型窗口中進行處理。在模型窗口中,選中模塊,則其4個角會出現(xiàn)黑色標記。此時可以對模塊進行以下的基本操作。移動:選中模

12、塊,按住鼠標左鍵將其拖曳到所需的位置即可。若要脫離線而移動,可按住shift鍵,再進行拖曳。復制:選中模塊,然后按住鼠標右鍵進行拖曳即可復制同樣的一個功能模塊。刪除:選中模塊,按Delete鍵即可。若要刪除多個模塊,可以同時按住Shift鍵,再用鼠標選中多個模塊,按Delete鍵即可。也可以用鼠標選取某區(qū)域,再按Delete鍵就可以把該區(qū)域中的所有模塊和線等全部刪除。功能模塊的基本操作,包括模塊的移動、復制、刪除、轉向、改變大小、模塊命名、顏色設定、參數(shù)設定、屬性設定、模塊輸入輸出信號等。第15頁,共48頁,2022年,5月20日,14點20分,星期日轉向:為了能夠順序連接功能模塊的輸入和輸出

13、端,功能模塊有時需要轉向。在菜單Format中選擇Flip Block旋轉180度,選擇Rotate Block順時針旋轉90度?;蛘咧苯影碈trl+F鍵執(zhí)行Flip Block,按Ctrl+R鍵執(zhí)行Rotate Block。改變大?。哼x中模塊,對模塊出現(xiàn)的4個黑色標記進行拖曳即可。模塊命名:先用鼠標在需要更改的名稱上單擊一下,然后直接更改即可。名稱在功能模塊上的位置也可以變換180度,可以用Format菜單中的Flip Name來實現(xiàn),也可以直接通過鼠標進行拖曳。Hide Name可以隱藏模塊名稱。顏色設定: Format菜單中的Foreground Color可以改變模塊的前景顏色,Bac

14、kground Color可以改變模塊的背景顏色;而模型窗口的顏色可以通過Screen Color來改變。第16頁,共48頁,2022年,5月20日,14點20分,星期日參數(shù)設定:用鼠標雙擊模塊,就可以進入模塊的參數(shù)設定窗口,從而對模塊進行參數(shù)設定。參數(shù)設定窗口包含了該模塊的基本功能幫助,為獲得更詳盡的幫助,可以點擊其上的help按鈕。通過對模塊的參數(shù)設定,就可以獲得需要的功能模塊。屬性設定:選中模塊,打開Edit菜單的Block Properties可以對模塊進行屬性設定。包括Description屬性、 Priority優(yōu)先級屬性、Tag屬性、Open function屬性、Attribu

15、tes format string屬性。其中Open function屬性是一個很有用的屬性,通過它指定一個函數(shù)名,則當該模塊被雙擊之后,Simulink就會調用該函數(shù)執(zhí)行,這種函數(shù)在MATLAB中稱為回調函數(shù)。模塊的輸入輸出信號:模塊處理的信號包括標量信號和向量信號;標量信號是一種單一信號,而向量信號為一種復合信號,是多個信號的集合,它對應著系統(tǒng)中幾條連線的合成。缺省情況下,大多數(shù)模塊的輸出都為標量信號,對于輸入信號,模塊都具有一種“智能”的識別功能,能自動進行匹配。某些模塊通過對參數(shù)的設定,可以使模塊輸出向量信號。例exp5_2.mdl exp5_3.mdl第17頁,共48頁,2022年,

16、5月20日,14點20分,星期日 第三節(jié) SIMULINK線的處理 exp5_4.mdl改變粗細:線所以有粗細是因為線引出的信號可以是標量信號或向量信號,當選中Format菜單下的Wide Vector Lines時,線的粗細會根據(jù)線所引出的信號是標量還是向量而改變,如果信號為標量則為細線,若為向量則為粗線。選中Vector Line Widths則可以顯示出向量引出線的寬度,即向量信號由多少個單一信號合成。設定標簽:只要在線上雙擊鼠標,即可輸入該線的說明標簽。也可以通過選中線,然后打開Edit菜單下的Signal Properties進行設定,其中signal name屬性的作用是標明信號的

17、名稱,設置這個名稱反映在模型上的直接效果就是與該信號有關的端口相連的所有直線附近都會出現(xiàn)寫有信號名稱的標簽。線的折彎:按住Shift鍵,再用鼠標在要折彎的線處單擊一下,就會出現(xiàn)圓圈,表示折點,利用折點就可以改變線的形狀。線的分支:按住鼠標右鍵,在需要分支的地方拉出即可以?;蛘甙醋trl鍵,并在要建立分支的地方用鼠標拉出即可。SIMULINK模型的構建是通過用線將各種功能模塊進行連接而構成的。用鼠標可以在功能模塊的輸入與輸出端之間直接連線。所畫的線可以改變粗細、設定標簽,也可以把線折彎、分支。第18頁,共48頁,2022年,5月20日,14點20分,星期日第四節(jié) SIMULINK自定義功能模塊

18、一、方法1 exp5_5.mdl將Signal&Systems 模塊庫中的Subsystem功能模塊復制到打開的模型窗口中。雙擊Subsystem功能模塊,進入自定義功能模塊窗口,從而可以利用已有的基本功能模塊設計出新的功能模塊。自定義功能模塊有兩種方法,一種方法是采用Signal&Systems 模塊庫中的Subsystem功能模塊,利用其編輯區(qū)設計組合新的功能模塊;另一種方法是將現(xiàn)有的多個功能模塊組合起來,形成新的功能模塊。對于很大的SIMULINK模型,通過自定義功能模塊可以簡化圖形,減少功能模塊的個數(shù),有利于模型的分層構建。二、方法2 exp5_6.mdl在模型窗口中建立所定義功能模塊

19、的子模塊。用鼠標將這些需要組合的功能模塊框住,然后選擇Edit菜單下的Create Subsystem即可。第19頁,共48頁,2022年,5月20日,14點20分,星期日三、自定義功能模塊的封裝 exp5_7.mdl exp5_8.mdl exp5_9.mdl exp5_10.mdl上面提到的兩種方法都只是創(chuàng)建一個功能模塊而已,如果要命名該自定義功能模塊、對功能模塊進行說明、選定模塊外觀、設定輸入數(shù)據(jù)窗口,則需要對其進行封裝處理。首先選中Subsystem功能模塊,再打開Edit菜單中的Mask Subsystem進入mask的編輯窗口,可以看出有3個標簽頁。Icon:設定功能模塊的外觀。I

20、nitialization:設定輸入數(shù)據(jù)窗口(Prompt List)。Documentation:設計該功能模塊的文字說明。第20頁,共48頁,2022年,5月20日,14點20分,星期日1、Icon標簽頁此頁最重要的部分是Drawing Commands,在該區(qū)域內可以用disp指令設定功能模塊的文字名稱,用plot指令畫線,用dpoly指令畫轉換函數(shù)。注意,盡管這些命令在名字上和以前講的MATLAB函數(shù)相同,但它們在功能上卻不完全相同,因此不能隨便套用以前所講的格式。disp(text)可以在功能模塊上顯示設定的文字內容。disp(text1ntext2)分行顯示文字text1和text

21、2plot(x1 x2 xn,y1 y2 yn)指令會在功能模塊上畫出由x1 y1經x2 y2經x3 y3 直到xn,yn為止的直線。功能模塊的左下角會根據(jù)目前的坐標刻度被正規(guī)化為0,0,右上角則會依據(jù)目前的坐標刻度被正規(guī)化為1,1。dpoly(num,den):按s次數(shù)的降冪排序,在功能模塊上顯示連續(xù)的傳遞函數(shù)。dpoly(num,den,z):按z次數(shù)的降冪排序,在功能模塊上顯示離散的傳遞函數(shù)。第21頁,共48頁,2022年,5月20日,14點20分,星期日用戶還可以設置一些參數(shù)來控制圖標的屬性,這些屬性在Icon頁右下端的下拉式列表中進行選擇。Icon frame:Visible 顯示外

22、框線;Invisible:隱藏外框線。Icon Transparency:Opaque 隱藏輸入輸出的標簽;Transparent:顯示輸入輸出的標簽。Icon Rotation:旋轉模塊。Drawing coordinate:畫圖時的坐標系。第22頁,共48頁,2022年,5月20日,14點20分,星期日2、Initialization標簽頁此頁主要用來設計輸入提示(prompt)以及對應的變量名稱(variable)。在prompt欄上輸入變量的含義,其內容會顯示在輸入提示中。而variable是仿真要用到的變量,該變量的值一直存于mask workspace中,因此可以與其他程序相互傳遞

23、。如果配合在initialization commands內編輯程序,可以發(fā)揮功能模塊的功能來執(zhí)行特定的操作。在prompt編輯框中輸入文字,這些文字就會出現(xiàn)在prompt列表中;在variable列表中輸入變量名稱,則prompt中的文字對應該變量的說明。如果要增加新的項目,可以點擊邊上的Add鍵。Up和Down按鈕用于執(zhí)行項目間的位置調整。Control type列表給用戶提供選擇設計的編輯區(qū),選擇Edit會出現(xiàn)供輸入的空白區(qū)域,所輸入的值代表對應的variable;Popup則為用戶提供可選擇的列表框,所選的值代表variable,此時在下面會出現(xiàn)Popup strings輸入框,用來設

24、計選擇的內容,各值之間用邏輯或符號“|”隔開;如選擇Checkbox則用于on與off的選擇設定。第23頁,共48頁,2022年,5月20日,14點20分,星期日Assignment屬性用于配合Control type的不同選擇來提供不同的變量值,變量值有Evaluate和Literal兩種,其含義如下: AssignmentControl type Evaluate Literal Edit 輸入的文字是程序執(zhí)行時所用的變量值; 輸入內容作字符串處理 Popup 為選擇的序號,選第一項輸出值為1, 選擇內容作字符串處理 往下類推; Checkbox 輸出為1或0; 輸出為on或off的字符串

25、第24頁,共48頁,2022年,5月20日,14點20分,星期日3、Documentation標簽頁此頁主要用來針對完成的功能模塊來編寫相應的說明文字和Help。在Block description中輸入的文字,會出現(xiàn)在參數(shù)窗口的說明部分。在Block help中輸入的文字則會顯示在單擊參數(shù)窗口中的help按鈕后瀏覽器所加載的HTML文件中。Mask type:在此處輸入的文字作為封裝模塊的標注性說明,在模型窗口下,將鼠標指向模塊,則會顯示該文字。當然必須先在View菜單中選擇Block Data TipsShow Block Data Tips。第25頁,共48頁,2022年,5月20日,1

26、4點20分,星期日第五節(jié) SIMULINK仿真的運行一、設置仿真參數(shù)和選擇解法器設置仿真參數(shù)和選擇解法器,選擇Simulation菜單下的Parameters命令,就會彈出一個仿真參數(shù)對話框,它主要用三個頁面來管理仿真的參數(shù)。Solver頁,它允許用戶設置仿真的開始和結束時間,選擇解法器,說明解法器參數(shù)及選擇一些輸出選項。Workspace I/O頁,作用是管理模型從MATLAB工作空間的輸入和對它的輸出。Diagnostics頁,允許用戶選擇Simulink在仿真中顯示的警告信息的等級。構建好一個系統(tǒng)的模型之后,接下來的事情就是運行模型,得出仿真結果。運行一個仿真的完整過程分成三個步驟:設置

27、仿真參數(shù),啟動仿真和仿真結果分析。第26頁,共48頁,2022年,5月20日,14點20分,星期日1、Solver頁此頁可以進行的設置有:選擇仿真開始和結束的時間;選擇解法器,并設定它的參數(shù);選擇輸出項。仿真時間:注意這里的時間概念與真實的時間并不一樣,只是計算機仿真中對時間的一種表示,比如10秒的仿真時間,如果采樣步長定為0.1,則需要執(zhí)行100步,若把步長減小,則采樣點數(shù)增加,那么實際的執(zhí)行時間就會增加。一般仿真開始時間設為0,而結束時間視不同的因素而選擇??偟恼f來,執(zhí)行一次仿真要耗費的時間依賴于很多因素,包括模型的復雜程度、解法器及其步長的選擇、計算機時鐘的速度等等。仿真步長模式:用戶在

28、Type后面的第一個下拉選項框中指定仿真的步長選取方式,可供選擇的有Variable-step(變步長)和Fixed-step(固定步長)方式。變步長模式可以在仿真的過程中改變步長,提供誤差控制和過零檢測。固定步長模式在仿真過程中提供固定的步長,不提供誤差控制和過零檢測。用戶還可以在第二個下拉選項框中選擇對應模式下仿真所采用的算法。第27頁,共48頁,2022年,5月20日,14點20分,星期日變步長模式解法器有:ode45,ode23,ode113,ode15s,ode23s,ode23t,ode23tb和discrete。ode45:缺省值,四/五階龍格庫塔法,適用于大多數(shù)連續(xù)或離散系統(tǒng),

29、但不適用于剛性(stiff)系統(tǒng)。它是單步解法器,也就是,在計算y(tn)時,它僅需要最近處理時刻的結果y(tn-1)。一般來說,面對一個仿真問題最好是首先試試ode45。ode23:二/三階龍格庫塔法,它在誤差限要求不高和求解的問題不太難的情況下,可能會比ode45更有效。也是一個單步解法器。ode113:是一種階數(shù)可變的解法器,它在誤差容許要求嚴格的情況下通常比ode45有效。ode113是一種多步解法器,也就是在計算當前時刻輸出時,它需要以前多個時刻的解。ode15s:是一種基于數(shù)字微分公式的解法器(NDFs)。也是一種多步解法器。適用于剛性系統(tǒng),當用戶估計要解決的問題是比較困難的,或者

30、不能使用ode45,或者即使使用效果也不好,就可以用ode15s。第28頁,共48頁,2022年,5月20日,14點20分,星期日ode23s:它是一種單步解法器,專門應用于剛性系統(tǒng),在弱誤差允許下的效果好于ode15s。它能解決某些ode15s所不能有效解決的stiff問題。ode23t:是梯形規(guī)則的一種自由插值實現(xiàn)。這種解法器適用于求解適度stiff的問題而用戶又需要一個無數(shù)字振蕩的解法器的情況。ode23tb:是TR-BDF2的一種實現(xiàn), TR-BDF2 是具有兩個階段的隱式龍格庫塔公式。discrtet:當Simulink檢查到模型沒有連續(xù)狀態(tài)時使用它。第29頁,共48頁,2022年,

31、5月20日,14點20分,星期日固定步長模式解法器有:ode5,ode4,ode3,ode2,ode1和discrete。ode5:缺省值,是ode45的固定步長版本,適用于大多數(shù)連續(xù)或離散系統(tǒng),不適用于剛性系統(tǒng)。ode4:四階龍格庫塔法,具有一定的計算精度。ode3:固定步長的二/三階龍格庫塔法。ode2:改進的歐拉法。ode1:歐拉法。discrete:是一個實現(xiàn)積分的固定步長解法器,它適合于離散無連續(xù)狀態(tài)的系統(tǒng)。第30頁,共48頁,2022年,5月20日,14點20分,星期日步長參數(shù):對于變步長模式,用戶可以設置最大的和推薦的初始步長參數(shù),缺省情況下,步長自動地確定,它由值auto表示。

32、Maximum step size(最大步長參數(shù)):它決定了解法器能夠使用的最大時間步長,它的缺省值為“仿真時間/50”,即整個仿真過程中至少取50個取樣點,但這樣的取法對于仿真時間較長的系統(tǒng)則可能帶來取樣點過于稀疏,而使仿真結果失真。一般建議對于仿真時間不超過15s的采用默認值即可,對于超過15s的每秒至少保證5個采樣點,對于超過100s的,每秒至少保證3個采樣點。Initial step size(初始步長參數(shù)):一般建議使用“auto”默認值即可。仿真精度的定義(對于變步長模式)Relative tolerance(相對誤差):它是指誤差相對于狀態(tài)的值,是一個百分比,缺省值為1e-3,表

33、示狀態(tài)的計算值要精確到0.1%。Absolute tolerance(絕對誤差):表示誤差值的門限,或者是說在狀態(tài)值為零的情況下,可以接受的誤差。如果它被設成了auto,那么simulink為每一個狀態(tài)設置初始絕對誤差為1e-6。第31頁,共48頁,2022年,5月20日,14點20分,星期日Mode(固定步長模式選擇)Multitasking:選擇這種模式時,當simulink檢測到模塊間非法的采樣速率轉換,它會給出錯誤提示。所謂的非法采樣速率轉換指兩個工作在不同采樣速率的模塊之間的直接連接。在實時多任務系統(tǒng)中,如果任務之間存在非法采樣速率轉換,那么就有可能出現(xiàn)一個模塊的輸出在另一個模塊需要

34、時卻無法利用的情況。通過檢查這種轉換,Multitasking將有助于用戶建立一個符合現(xiàn)實的多任務系統(tǒng)的有效模型。 使用速率轉換模塊可以減少模型中的非法速率轉換。Simulink提供了兩個這樣的模塊:unit delay模塊和zero-order hold模塊。對于從慢速率到快速率的非法轉換,可以在慢輸出端口和快輸入端口插入一個單位延時unit delay模塊。而對于快速率到慢速率的轉換,則可以插入一個零階采樣保持器zero-order hold。Singletasking:這種模式不檢查模塊間的速率轉換,它在建立單任務系統(tǒng)模型時非常有用,在這種系統(tǒng)就不存在任務同步問題。Auto:這種模式,s

35、imulink會根據(jù)模型中模塊的采樣速率是否一致,自動決定切換到multitasking和singletasking。第32頁,共48頁,2022年,5月20日,14點20分,星期日輸出選項Refine output:這個選項可以理解成精細輸出,其意義是在仿真輸出太稀松時,simulink會產生額外的精細輸出,這一點就像插值處理一樣。用戶可以在refine factor設置仿真時間步間插入的輸出點數(shù)。 產生更光滑的輸出曲線,改變精細因子比減小仿真步長更有效。精細輸出只能在變步長模式中才能使用,并且在ode45效果最好。Produce additional output:它允許用戶直接指定產生輸

36、出的時間點。一旦選擇了該項,則在它的右邊出現(xiàn)一個output times編輯框,在這里用戶指定額外的仿真輸出點,它既可以是一個時間向量,也可以是表達式。與精細因子相比,這個選項會改變仿真的步長。Produce specified output only:它的意思是讓simulink只在指定的時間點上產生輸出。為此解法器要調整仿真步長以使之和指定的時間點重合。這個選項在比較不同的仿真時可以確保它們在相同的時間輸出。第33頁,共48頁,2022年,5月20日,14點20分,星期日2、Workspace I/O頁此頁主要用來設置SIMULINK與MATLAB工作空間交換數(shù)值的有關選項。Load fr

37、om workspace:選中前面的復選框即可從MATLAB工作空間獲取時間和輸入變量,一般時間變量定義為t,輸入變量定義為u。 Initial state用來定義從MATLAB工作空間獲得的狀態(tài)初始值的變量名。Save to workspace:用來設置存往MATLAB工作空間的變量類型和變量名,選中變量類型前的復選框使相應的變量有效。一般存往工作空間的變量包括輸出時間向量(Time)、狀態(tài)向量(States)和輸出變量(Output)。 Final state用來定義將系統(tǒng)穩(wěn)態(tài)值存往工作空間所使用的變量名。Save option:用來設置存往工作空間的有關選項。Limit rows to

38、last用來設定SIMULINK仿真結果最終可存往MATLAB工作空間的變量的規(guī)模,對于向量而言即其維數(shù),對于矩陣而言即其秩;Decimation設定了一個亞采樣因子,它的缺省值為1,也就是對每一個仿真時間點產生值都保存,而若為2,則是每隔一個仿真時刻才保存一個值。Format用來說明返回數(shù)據(jù)的格式,包括矩陣matrix、結構struct及帶時間的結構struct with time。第34頁,共48頁,2022年,5月20日,14點20分,星期日3、Diagnostics頁此頁分成兩個部分:仿真選項和配置選項。配置選項下的列表框主要列舉了一些常見的事件類型,以及當SIMULINK檢查到這些事

39、件時給予的處理。仿真選項options主要包括是否進行一致性檢驗、是否禁用過零檢測、是否禁止復用緩存、是否進行不同版本的SIMULINK的檢驗等幾項。除了上述3個主要的頁外,仿真參數(shù)設置窗口還包括real-time workshop頁,主要用于與C語言編輯器的交換,通過它可以直接從SIMULINK模型生成代碼并且自動建立可以在不同環(huán)境下運行的程序,這些環(huán)境包括實時系統(tǒng)和單機仿真。第35頁,共48頁,2022年,5月20日,14點20分,星期日二、啟動仿真設置仿真參數(shù)和選擇解法器之后,就可以啟動仿真而運行。選擇Simulink菜單下的start選項來啟動仿真,如果模型中有些參數(shù)沒有定義,則會出現(xiàn)

40、錯誤信息提示框。如果一切設置無誤,則開始仿真運行,結束時系統(tǒng)會發(fā)出一鳴叫聲。除了直接在SIMULINK環(huán)境下啟動仿真外,還可以在MATLAB命令窗口中通過函數(shù)進行,格式如下: t,x,y=sim(模型文件名,to tf,simset(參數(shù)1,參數(shù)值1,參數(shù)2,參數(shù)值2, )其中to為仿真起始時間,tf為仿真終止時間。t,x,y為返回值,t為返回的時間向量值,x為返回的狀態(tài)值,y為返回的輸出向量值。simset定義了仿真參數(shù),包括以下一些主要參數(shù):AbsTol:默認值為1e-6設定絕對誤差范圍。Decimation:默認值為1,決定隔多少個點返回狀態(tài)和輸出值。Solver:解法器的選擇。第36頁

41、,共48頁,2022年,5月20日,14點20分,星期日MaxRows:默認值為0,表示不限制。若為大于零的值,則表示限制輸 出和狀態(tài)的規(guī)模,使其最大行數(shù)等于該數(shù)值。InitialState:一個向量值,用于設定初始狀態(tài)。FixedStep:用一個正數(shù)表示步階的大小,僅用于固定步長模式。MaxStep:默認值為auto。用于變步長模式,表示最大的步階大小。如果知道模型文件名稱,可以用以下命令得到該模型的仿真參數(shù):simget(模型文件名)第37頁,共48頁,2022年,5月20日,14點20分,星期日第六節(jié) SIMULINK s-function的設計一、s-function的概念s-func

42、tion是一個動態(tài)系統(tǒng)的計算機語言描述,在MATLAB里,用戶可以選擇用m文件編寫,也可以用c或mex文件編寫,在這里只給大家介紹如何用m文件編寫s-function。S-function提供了擴展Simulink模塊庫的有力工具,它采用一種特定的調用語法,使函數(shù)和Simulink解法器進行交互。S-function最廣泛的用途是定制用戶自己的Simulink模塊。它的形式十分通用,能夠支持連續(xù)系統(tǒng)、離散系統(tǒng)和混合系統(tǒng)。Simulink為用戶提供了許多內置的基本庫模塊,通過這些模塊進行連接而構成系統(tǒng)的模型。對于那些經常使用的模塊進行組合并封裝可以構建出重復使用的新模塊,但它依然是基于Simul

43、ink原來提供的內置模塊。而Simulink s-function是一種強大的對模塊庫進行擴展的新工具。第38頁,共48頁,2022年,5月20日,14點20分,星期日二、建立m文件s-function1、使用模板文件:sfuntmp1. m該模板文件位于MATLAB根目錄下toolbox/simulink/blocks目錄下。模板文件里s-function的結構十分簡單,它只為不同的flag的值指定要相應調用的m文件子函數(shù)。比如當flag=3時,即模塊處于計算輸出這個仿真階段時,相應調用的子函數(shù)為sys=mdloutputs(t,x,u)。模板文件使用switch語句來完成這種指定,當然這種

44、結構并不唯一,用戶也可以使用if語句來完成同樣的功能。而且在實際運用時,可以根據(jù)實際需要來去掉某些值,因為并不是每個模塊都需要經過所有的子函數(shù)調用。模板文件只是Simulink為方便用戶而提供的一種參考格式,并不是編寫s-function的語法要求,用戶完全可以改變子函數(shù)的名稱,或者直接把代碼寫在主函數(shù)里,但使用模板文件的好處是,比較方便,而且條理清晰。第39頁,共48頁,2022年,5月20日,14點20分,星期日使用模板編寫s-function,用戶只需把s-函數(shù)名換成期望的函數(shù)名稱,如果需要額外的輸入參量,還需在輸入參數(shù)列表的后面增加這些參數(shù),因為前面的4個參數(shù)是simulink調用s-

45、function時自動傳入的。對于輸出參數(shù),最好不做修改。接下去的工作就是根據(jù)所編s-function要完成的任務,用相應的代碼去替代模板里各個子函數(shù)的代碼即可。Simulink在每個仿真階段都會對s-function進行調用,在調用時,Simulink會根據(jù)所處的仿真階段為flag傳入不同的值,而且還會為sys這個返回參數(shù)指定不同的角色,也就是說盡管是相同的sys變量,但在不同的仿真階段其意義卻不相同,這種變化由simulink自動完成。m文件s-function可用的子函數(shù)說明如下:mdlInitializeSizes:定義s-function模塊的基本特性,包括采樣時間、連續(xù)或者離散狀態(tài)

46、的初始條件和sizes數(shù)組。mdlDerivatives:計算連續(xù)狀態(tài)變量的微分方程。mdlUpdate:更新離散狀態(tài)、采樣時間和主時間步的要求。mdlOutputs:計算s-function的輸出。第40頁,共48頁,2022年,5月20日,14點20分,星期日mdlGetTimeOfNextVarHit:計算下一個采樣點的絕對時間,這個方法僅僅是在用戶在mdlInitializeSizes 里說明了一個可變的離散采樣時間。mdlTerminate:實現(xiàn)仿真任務必須的結束。概括說來,建立s-function可以分成兩個分離的任務:初始化模塊特性包括輸入輸出信號的寬度,離散連續(xù)狀態(tài)的初始條件和

47、采樣時間。將算法放到合適的s-function子函數(shù)中去。第41頁,共48頁,2022年,5月20日,14點20分,星期日2、定義s-function的初始信息為了讓Simulink識別出一個m文件s-function,用戶必須在s-函數(shù)里提供有關s-函數(shù)的說明信息,包括采樣時間、連續(xù)或者離散狀態(tài)個數(shù)等初始條件。這一部分主要是在mdlInitializeSizes子函數(shù)里完成。Sizes數(shù)組是s-function函數(shù)信息的載體,它內部的字段意義為:NumContStates:連續(xù)狀態(tài)的個數(shù)(狀態(tài)向量連續(xù)部分的寬度)NumDiscStates:離散狀態(tài)的個數(shù)(狀態(tài)向量離散部分的寬度)NumOutputs: 輸出變量的個數(shù)(輸出向量的寬度)NumInputs:輸入變量的個數(shù)(輸入向量的寬度)DirFeedthrough:有無直

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論