MATLAB控制系統(tǒng)仿真課件第六章_第1頁
MATLAB控制系統(tǒng)仿真課件第六章_第2頁
MATLAB控制系統(tǒng)仿真課件第六章_第3頁
MATLAB控制系統(tǒng)仿真課件第六章_第4頁
MATLAB控制系統(tǒng)仿真課件第六章_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第六章Simulink基礎(chǔ)主要內(nèi)容6.1Simulink簡介6.2Simulink的基本操作6.3系統(tǒng)仿真及參數(shù)設(shè)置6.4Simulink模塊庫6.5Simulink子系統(tǒng)6.6S函數(shù)的建立6.1Simulink簡介Simulink:用來對動態(tài)系統(tǒng)進(jìn)行建模、仿真和分析的軟件包,支持連續(xù)、離散及兩者混合的線性和非線性系統(tǒng),也支持具有多種采樣頻率的系統(tǒng)。

在Simulink環(huán)境中,利用鼠標(biāo)就可以在模型窗口中直觀地“畫”出系統(tǒng)模型,然后直接進(jìn)行仿真。它為用戶提供了方框圖進(jìn)行建模的圖形接口,采用這種結(jié)構(gòu)畫模型就像你用手和紙來畫一樣容易。它與傳統(tǒng)的仿真軟件包微分方程和差分方程建模相比,具有更直觀、方便、靈活的優(yōu)點(diǎn)。SimulinkSinks(輸出方式)Source(輸入源)Linear(線性環(huán)節(jié))Nonlinear(非線性環(huán)節(jié))Connections(連接與接口)Extra(其他環(huán)節(jié))

采用Scope模塊和其他的畫圖模塊,在仿真進(jìn)行的同時,就可觀看到仿真結(jié)果。除此之外,用戶還可以在改變參數(shù)后來迅速觀看系統(tǒng)中發(fā)生的變化情況。仿真的結(jié)果還可以存放到MATLAB的工作空間里做事后處理。

用Simulink創(chuàng)建的模型可以具有遞階結(jié)構(gòu),因此用戶可以采用從上到下或從下到上的結(jié)構(gòu)創(chuàng)建模型。用戶可以從最高級開始觀看模型,然后用鼠標(biāo)雙擊其中的子系統(tǒng)模塊,來查看其下一級的內(nèi)容,以此類推,從而可以看到整個模型的細(xì)節(jié),幫助用戶理解模型的結(jié)構(gòu)和各模塊之間的相互關(guān)系。

在定義完一個模型后,用戶可以通過Simulink的菜單或MATLAB的命令窗口鍵入命令來對它進(jìn)行仿真。菜單方式對于交互工作非常方便,而命令行方式對于運(yùn)行一大類仿真非常有用。6.1Simulink簡介

Simulink非常實用,應(yīng)用領(lǐng)域很廣,可使用的領(lǐng)域包括航空航天、電子、力學(xué)、數(shù)學(xué)、通信、影視和控制等。世界各地的工程師都在利用它來對實際問題建模,解決問題。

模型分析工具包括線性化和平衡點(diǎn)分析工具、MATLAB的許多工具及MATLAB的應(yīng)用工具箱。由于MATLAB和Simulink的集成在一起的,因此用戶可以在這兩種環(huán)境下對自己的模型進(jìn)行仿真、分析和修改。

Simulink具有非常高的開放性,提倡將模型通過框圖表示出來,或者將已有的模型添加組合到一起,或者將自己創(chuàng)建的模塊添加到模型當(dāng)中。Simulink具有較高的交互性,允許隨意修改模塊參數(shù),并且可以直接無縫地使用MATLAB的所有分析工具。對最后得到的結(jié)果可進(jìn)行分析,并能夠?qū)⒔Y(jié)果可視化顯示。6.1Simulink簡介6.2Simulink的基本操作一、Simulink的運(yùn)行運(yùn)行Simulink

有三種方式:在MATLAB的命令窗口直接鍵入“Simulink”并回車;單擊MATLAB工具條上的Simulink

圖標(biāo);在MATLAB菜單上選File→New→Model二、常用的標(biāo)準(zhǔn)模塊附錄C以表格的形式給出Simulink幾個基本模塊庫中的模塊功能簡介,表格中的模塊名和模塊庫中的模塊圖標(biāo)下的名稱一致。三、模塊的操作模塊的選取模塊的復(fù)制、剪切、刪除、移動模塊的連接模塊參數(shù)的設(shè)置例6.2.1

已知單位負(fù)反饋二階系統(tǒng)的開環(huán)傳遞函數(shù)為試?yán)L制單位階躍響應(yīng)的實驗結(jié)構(gòu)圖。6.2Simulink的基本操作模塊的外形的調(diào)整改變模塊的大小調(diào)整模塊的方向給模塊加陰影模塊名的處理模塊名的顯示與消隱修改模塊名例6.2.2

將例6.2.1的結(jié)構(gòu)圖進(jìn)行模塊處理。6.2Simulink的基本操作6.3系統(tǒng)仿真及參數(shù)設(shè)置在Simulink中建立起系統(tǒng)模型框圖后,運(yùn)行菜單【Simulation】|【Start】就可以用Simulink對模型進(jìn)行動態(tài)仿真。一般在仿真運(yùn)行前需要對仿真參數(shù)進(jìn)行設(shè)置,運(yùn)行菜單【Simulation】|【Parameters】完成設(shè)置。一、算法設(shè)置在Solver里需要設(shè)置仿真起始和終止時間、選擇合適的解法(Solver)并指定參數(shù)、設(shè)置一些輸出選擇。1、設(shè)置起始時間和終止時間(Simulationtime)【Simulation】|【Starttime】設(shè)置起始時間,而【Stoptime】設(shè)置終止時間,單位為“秒”。2、算法設(shè)置(Solveroption)(1)算法類型設(shè)置仿真的主要過程一般是求解常微分方程組,【Solveroption】|【Type】用來選擇仿真算法的類型是變化的還是固定的。6.3系統(tǒng)仿真及參數(shù)設(shè)置變步長解法可以在仿真過程中根據(jù)要求調(diào)整運(yùn)算步長,在采用變步長解法時,應(yīng)該先指定一個容許誤差限(【Relativetolerance】或【Absolutetolerance】),使得當(dāng)誤差超過誤差限時自動修正仿真步長,【Maxstepsize】用于設(shè)置最大步長,在缺省情況下為“auto”,并按下式計算最大步長:最大步長=(終止時間-起始時間)/50(2)仿真算法設(shè)置離散模型:對變步長和定步長解法均采用discrete(nocontinuousstate)。連續(xù)模型:有變步長和定步長兩種解法。變步長解法有:ode45、ode23、ode113、ode15s、ode23s、ode23t,ode23st3、設(shè)置輸出選項

6.3系統(tǒng)仿真及參數(shù)設(shè)置二、工作空間設(shè)置工作空間設(shè)置(WorkspaceI/O)窗口可以設(shè)置Simulink和當(dāng)前工作空間的數(shù)據(jù)輸入、輸出。通過設(shè)置,可以從工作空間輸入數(shù)據(jù)、初始化狀態(tài)模塊,也可以把仿真結(jié)果、狀態(tài)變量、時間數(shù)據(jù)保存到當(dāng)前工作空間。從工作空間讀入數(shù)據(jù)(Loadfromworkspace)保存數(shù)據(jù)到工作空間(Savetoworkspace)初始化狀態(tài)模塊6.3系統(tǒng)仿真及參數(shù)設(shè)置6.4Simulink模塊庫一、信號源模塊庫二、連續(xù)系統(tǒng)模塊庫6.4Simulink模塊庫三、離散系統(tǒng)模塊庫6.4Simulink模塊庫四、數(shù)學(xué)運(yùn)算模塊庫6.4Simulink模塊庫五、輸出模塊庫6.4Simulink模塊庫六、非線性系統(tǒng)模塊庫6.4Simulink模塊庫6.5Simulink子系統(tǒng)一、Simulink子系統(tǒng)簡介Simulink提供的子系統(tǒng)功能可以大大地增強(qiáng)Simulink系統(tǒng)框圖的可讀性,可以不必了解系統(tǒng)中每個模塊的功能就能夠了解整個系統(tǒng)得框架。子系統(tǒng)可以理解為一種“容器”,我們可以將一組相關(guān)的模塊封裝到這個子系統(tǒng)模塊當(dāng)中,并且等效于原系統(tǒng)模塊群的功能,而對其中的模塊我們可以暫時不去了解。組合后的子系統(tǒng)可以進(jìn)行類似模塊的設(shè)置,在模型的仿真過程中可作為一個模塊。建立子系統(tǒng)的有以下兩種方法:1、在已有的系統(tǒng)模型中建立子系統(tǒng)6.5Simulink子系統(tǒng)框選區(qū)域,然后右擊,彈出浮動菜單,選擇【CreatSubsystem】6.5Simulink子系統(tǒng)創(chuàng)建子系統(tǒng),然后雙擊Subsystem模塊。6.5Simulink子系統(tǒng)簡單建立模型,雙擊Subsystem模塊,在彈出的窗口中建立子系統(tǒng)模型。

2、在已有的系統(tǒng)模型中新建子系統(tǒng)6.5Simulink子系統(tǒng)這兩種創(chuàng)建子系統(tǒng)最后實現(xiàn)的是一模一樣的功能,只不過操作順序不同。前者是先將這個結(jié)構(gòu)搭建起來,然后將相關(guān)的模塊封裝起來;后者則是先做一個封裝容器,然后在封裝容器中添加模塊。對于一個相對簡單的模型我們采用第一種,這種操作一般不會出錯,能夠順利搭建模型。而對于非常復(fù)雜的系統(tǒng),我們事先將模型分成若干個子系統(tǒng),然后再采用第二種方法進(jìn)行建模。1、子系統(tǒng)命名:命名方法與模塊命名方法類似,是擁有代表意義的文字來對子系統(tǒng)進(jìn)行命名,有利于增強(qiáng)模塊的可讀性。在使用Simulink子系統(tǒng)建立模型時,有如下幾個常用的操作:6.5Simulink子系統(tǒng)2、子系統(tǒng)編輯:用鼠標(biāo)雙擊子系統(tǒng)模塊圖標(biāo),打開子系統(tǒng)并對其進(jìn)行編輯。3、子系統(tǒng)的輸入:使用Souces模塊庫中的Input輸入模塊,即In1模塊,作為子系統(tǒng)的輸入端口。4、子系統(tǒng)的輸出:使用Sinks模塊庫中的Output輸出模塊,即Out1模塊,作為子系統(tǒng)的輸出端口。6.5Simulink子系統(tǒng)根據(jù)不同的控制信號,可將條件執(zhí)行子系統(tǒng)分為:1、觸發(fā)子系統(tǒng)2、使能子系統(tǒng)3、使能觸發(fā)子系統(tǒng)二、Simulink高級子系統(tǒng)應(yīng)用三、封裝子系統(tǒng)Simulink封裝子系統(tǒng)的幾個特點(diǎn)可以自定義封裝子系統(tǒng)的圖標(biāo);雙擊封裝后的子系統(tǒng),彈出參數(shù)對話框,其中對話框是自定義;封裝子系統(tǒng)的幫助文檔都是自定義編寫的;封裝子系統(tǒng)有自己的工作區(qū)域。6.5Simulink子系統(tǒng)一個PID控制器的Simulink模型,將其封裝。6.5Simulink子系統(tǒng)點(diǎn)擊右鍵選擇菜單中的MaskSubsystem進(jìn)入Mask編輯窗口。6.5Simulink子系統(tǒng)1、封裝編輯器的圖標(biāo)編輯選項卡(Icon)(1)圖標(biāo)顯示設(shè)置(Iconoptions)

(2)圖標(biāo)繪制命令欄(Drawingcommands)(3)圖標(biāo)繪圖命令示例(Examplesofdrawingcommands)6.5Simulink子系統(tǒng)2、封裝編輯器的參數(shù)設(shè)置選項卡(Parameters)參數(shù)設(shè)置選項卡中包括如下幾種設(shè)置內(nèi)容:(1)參數(shù)設(shè)置控制(2)參數(shù)描述(3)變量(4)參數(shù)設(shè)置描述6.5Simulink子系統(tǒng)3、封裝編輯器的初始化設(shè)置選項卡(Initialization)4、封裝編輯器的文檔編輯選項卡(Documentation)Masktype

MaskdescriptionMaskhelp6.5Simulink子系統(tǒng)6.6S函數(shù)的建立S函數(shù)就是S-Functions,是System-Functions的縮寫。當(dāng)MATLAB所提供的模型不能完全滿足要求時,就可以通過S函數(shù)提供給用戶自己編寫程序來滿足自己要求模型的接口。S函數(shù)使用有固定格式,只能用于基于Simulink的仿真,并不能將其轉(zhuǎn)換成獨(dú)立于MATLAB的程序。S函數(shù)功能非常全面,適用于連續(xù)、離散以及混合系統(tǒng)。調(diào)用格式 Function[sys,x0,str,ts]=sfun(t,x,u,flag,p1,p2,…)說明sfun是S函數(shù)的函數(shù)名,t,x,u分別為時間、狀態(tài)和輸入信號,flag為標(biāo)志位,p1,p2為參數(shù)。一、函數(shù)的調(diào)用格式MATLAB提供了編寫S函數(shù)的模板文件,該模板文件位于MATLAB根目錄toolbox\Simulink\blocks下,文件名為sfunmpl.m,該文件給出了S函數(shù)完整的框架結(jié)構(gòu),包含一個主函數(shù)和若干子函數(shù),每一個子函數(shù)都對應(yīng)于一個flag值,用戶還可以根據(jù)編程需要加以修正。6.6S函數(shù)的建立Flag值仿真過程調(diào)用的子函數(shù)功能0初始化mdlInitializeSize()對連續(xù)/離散狀態(tài)變量個數(shù)、輸入和輸出的路數(shù)、采樣周數(shù)個數(shù)和值以及狀態(tài)變量初值x0等進(jìn)行初始設(shè)置。1連續(xù)狀態(tài)變量更新mdlDerivatives()計算連續(xù)狀態(tài)變量的微分方程并由sys變量返回2離散狀態(tài)狀態(tài)更新mdlUpdate()更新離散狀態(tài)變量并由sys變量返回3計算輸出mdlOutputs()計算輸出信號由sys變量返回4計算下一仿真時刻mdlGetTimeNextVarHit()計算下一步的仿真時刻由sys變量返回9終止mdlTerminate()終止仿真過程,不返回任何變量表6.6.1S函數(shù)的flag值表6.6S函數(shù)的建立二、函數(shù)的模板格式function[sys,x0,str,ts]=sfuntmpl(t,x,u,flag)switchflag,case0, [sys,x0,str,ts]=mdlInitializeSizes;%調(diào)用初始化子函數(shù)

case1, sys=mdlDerivatives(t,x,u);%調(diào)用計算導(dǎo)數(shù)子函數(shù)

case2,sys=mdlUpdate(t,x,u); %調(diào)用離散狀態(tài)變量更新子函數(shù)

case3,sys=mdlOutputs(t,x,u); %計算輸出子函數(shù)

case4,sys=mdlGetTimeNextVarHit(t,x,u);case9,sys=mdlTerminate(t,x,u);%終止仿真子函數(shù)

otherwiseerror(['Unhandledflag=',num2str(flag)]);end6.6S函數(shù)的建立1、初始化子函數(shù)function[sys,x0,str,ts]=mdlInitializeSizessizes=simsizes;sizes.NumContStates=0;%設(shè)置連續(xù)狀態(tài)變量個數(shù),默認(rèn)值為0sizes.NumDiscStates=0;%設(shè)置離散狀態(tài)變量個數(shù),默認(rèn)值為0sizes.NumOutputs=0;%設(shè)置輸出變量的個數(shù),默認(rèn)值為0sizes.NumInputs=0;%設(shè)置輸入變量的個數(shù),默認(rèn)值為0sizes.DirFeedthrough=1;%輸入信號是否直接在輸出端出現(xiàn),取值為0或1sizes.NumSampleTimes=1;%設(shè)置采樣周期的個數(shù),默認(rèn)值為1sys=simsizes(sizes);x0=[];%設(shè)定初始值,默認(rèn)值為[]str=[];ts=[00];%[00]用于連續(xù)系統(tǒng),

溫馨提示

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

評論

0/150

提交評論