電機控制基于Simulink的仿真.ppt_第1頁
電機控制基于Simulink的仿真.ppt_第2頁
電機控制基于Simulink的仿真.ppt_第3頁
電機控制基于Simulink的仿真.ppt_第4頁
電機控制基于Simulink的仿真.ppt_第5頁
免費預覽已結束,剩余187頁可下載查看

下載本文檔

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

文檔簡介

MATLAB/Simulink設計,主講:段清明儀器科學與電氣工程學院,電機控制課程設計,1Simulink簡介,Simulink是一個用來對動態系統進行建模、仿真和分析的軟件包。使用Simulink來建模、分析和仿真各種動態系統(包括連續系統、離散系統和混合系統),將是一件非常輕松的事情。它提供了一種圖形化的交互環境,只需用鼠標拖動的方法便能迅速地建立起系統框圖模型,甚至不需要編寫一行代碼。利用Simulink進行系統的建模仿真,其最大的優點是易學、易用,并能依托MATLAB提供的豐富的仿真資源。,提供了仿真庫的擴充和定制機制Simulink的開放式結構允許用戶擴展仿真環境的功能:采用MATLAB、FORTRAN和C代碼生成自定義模塊庫,并擁有自己的圖標和界面。與MATLAB工具箱的集成由于Simulink可以直接利用MATLAB的諸多資源與功能,因而用戶可以直接在Simulink下完成諸如數據分析、過程自動化、優化參數等工作。,Simulink應用領域,2Simulink啟動及模型建立,Simulink的啟動主要有以下兩種方法:在MATLAB的命令窗口中輸入simulink,結果是在桌面上出現一個SimulinkLibraryBrowser的窗口。單擊MATLAB主窗口的快捷按鈕,打開SimulinkLibraryBrowser窗口。,Simulink模型窗口的建立,在Simulink中打開一個空白的模型窗口的方法:選中Simulink菜單系統中的File|New|Model菜單項后,會生成一個Simulink窗口;單擊Simulink工具欄中的“新建模型”圖標;在MATLAB的命令窗口中選擇File|New|NewModel菜單項;,啟動Simulink,建立系統模型的基本操作,Simulink的模塊庫,Simulink的模塊庫能夠對系統模塊進行有效的管理與組織可以直接將模塊庫中的模塊拖動或者拷貝到用戶的系統模型中以構建動態系統模型。,Simulink公共模塊庫,Simulink中最為基礎、最為通用的模塊庫,它可以被應用到不同的專業領域中。連續模塊continuous、非連續模塊discontinuous離散模塊discrete、查找表模塊Look-upTable數學運算MathOperations模型驗證模塊ModelVerification模型擴充工具Model-WideUtilities端口和子系統模塊Ports將系統模塊插入到系統模型中;查看系統模塊的參數設置;以及回到系統模塊的上一層庫。,此外還可以進行以下操作:(1)使用鼠標左鍵選擇并拖動系統模塊,并將其拷貝到系統模型中。(2)在模塊搜索欄中搜索所需的系統模塊。,例:簡單系統的輸入為一個正弦波信號,輸出為此正弦波信號與一個常數的乘積。要求建立系統模型,并以圖形方式輸出系統運算結果。已知系統的數學描述為系統輸入:u(t)=sint,t0系統輸出:y(t)=au(t),a0,相關操作:,模塊庫SineWave來自sources;Gain來自MathOperations;Scope來自Sinks連接方法(1)拖動對應端口進行連接(2)單擊起始模塊后,按Ctrl鍵再單擊目標模塊模塊復制傳統方式Ctrl+C/Ctrl+V、或Ctrl鍵再拖動模塊模塊插入對于單輸入單輸出模塊,只需將這個模塊移到線上就可以自動連接。,連線操作,連線分支使用鼠標右鍵單擊需要分支的信號連線(光標變成“+”),然后拖動到目標模塊。使用鼠標左鍵單擊并拖動以改變信號連線的路徑。按下Shift鍵的同時,在信號連線上單擊鼠標左鍵并拖動,可以生成新的節點。在節點上使用鼠標左鍵單擊并拖動,可以改變信號連線路徑。,信號組合在利用Simulink進行系統仿真時,在很多情況下,需要將系統中某些模塊的輸出信號(一般為標量)組合成一個向量信號,并將得到的信號作為另外一個模塊的輸入。,來自SignalRouting的BusCreator,3Simulink模型仿真,系統模塊參數設置與系統仿真參數設置雙擊系統模塊,打開系統模塊的參數設置對話框。在參數設置對話框中設置合適的模塊參數。設置合適的系統仿真參數以進行動態系統的仿真在Simulation菜單的Simulationparameters.子菜單中進行設置,如仿真時間等運行仿真單擊系統模型編輯器上的Play圖標(黑色三角)或選擇Simulation菜單下的Start便可以對系統進行仿真分析。仿真結束后雙擊Scope模塊以顯示系統仿真的輸出結果,4Simulink子系統介紹,Simulink提供的子系統功能可以大大地增強Simulink系統模型框圖的可讀性。子系統可以理解為一種“容器”,此容器能夠將一組相關的模塊封裝到一個單獨的模塊中,并且與原來系統模塊組的功能一致。,子系統建立方法(2種),在已有的系統模型中建立子系統:首先框選待封裝的區域,即在模型編輯器背景中單擊鼠標左鍵并拖動,選中需要放置到子系統中的模塊與信號(或在按下Shift鍵的同時,用鼠標左鍵單擊所需模塊);然后選擇Edit菜單下的CreateSubsystem,即可建立子系統。建立空的子系統:Subsystems模塊庫中的模塊建立子系統。這樣建立的子系統內容為空,然后雙擊子系統對其進行編輯。,子系統操作在生成子系統之后,用戶可以對子系統進行各種與系統模塊相類似的操作,這時子系統相當于具有一定功能的系統模塊。例如,子系統的命名、子系統視圖的修改、子系統的顯示顏色等等。當然子系統也有其特有的操作,如子系統的顯示(用鼠標左鍵雙擊子系統模塊即可打開子系統)、子系統的封裝等等。,Inport輸入模塊與Outport輸出模塊在系統模型中建立子系統時,Simulink會自動生成Inport模塊(Sources模塊庫中的In1模塊)與Outport模塊(Sinks模塊庫中的Out1模塊)。Inport模塊作為子系統的輸入端口,Outport作為子系統的輸出端口,它們被用來完成子系統和主系統之間的通訊。Inport和Outport用來對信號進行傳遞,不改變信號的任何屬性;另外,信號標簽可以越過它們進行傳遞。如果需要建立多輸入多輸出的子系統,則需要使用多個Inport模塊與Outport模塊,而且最好使用合適的名稱對Inport模塊與Outport模塊進行命名。,5Simulink與Matlab的接口設計,由MATLAB工作空間變量設置系統模塊參數模塊參數可以是常量也可以工作空間變量直接使用MATLAB工作空間中的變量設置模塊參數。使用變量的表達式設置模塊參數。例如,如果a是定義在MATLAB中的變量,則表達式a、a2+5、exp(a)等均可以作為系統模塊的參數,將信號輸出到MATLAB工作空間中使用示波器模塊Scope的輸出信號,可以使用戶對輸出的信號進行簡單的定性分析。使用Sinks模塊庫中的ToWorkspace模塊,可以輕易地將信號輸出到MATLAB工作空間中。信號輸出的名稱在ToWorkspace模塊的對話框中設置,此對話框還可以設置輸出數據的點數、輸出的間隔,以及輸出數據的類型等。其中輸出類型有三種形式:數組、結構以及帶有時間變量的結構。仿真結束或暫停時信號被輸出到工作空間中。,使用工作空間變量作為系統輸入信號Simulink與MATLAB的數據交互是相互的,除了可以將信號輸出到MATLAB工作空間中之外,用戶還可以使用MATLAB工作空間中的變量作為系統模型的輸入信號。使用Sources模塊庫中的FromWorkspace模塊可以將MATLAB工作空間中的變量作為系統模型的輸入信號。此變量的格式如下所示:t=0:0.1:10;x=sin(t);input=t,x;系統輸入信號input的作用相當于Sources模塊中的SineWave模塊,向量與矩陣Simulink所使用的信號可以是標量也能夠傳遞和使用向量信號。例如,向量增益可以作用在一個標量信號上,產生一個向量輸出。Simulink最重要的特性就是支持矩陣形式的信號,它可以區分行和列向量并傳遞矩陣。通過對模塊做適當的配置,可以使模塊能夠接受矩陣作為模塊參數。,MATLABFunction與Function模塊除了使用上述的方式進行Simulink與MATLAB之間的數據交互,用戶還可以使用FunctionsandTables模塊庫中的Function模塊(簡稱為Fcn模塊)或FunctionsandTables模塊庫中的MATLABFunction模塊(簡稱為MATLABFcn模塊)進行彼此間的數據交互。Fcn模塊一般用來實現簡單的函數關系,在Fcn模塊中:(1)輸入總是表示成u,u可以是一個向量。(2)可以使用C語言表達式,例如sin(u1)+cos(u2)。(3)輸出永遠為一個標量。,(2)可以使用C語言表達式,例如sin(u1)+cos(u2)。(3)輸出永遠為一個標量。MATLABFcn一般用來調用MATLAB函數來實現一定的功能,在MATLABFcn模塊中:(1)所要調用的函數只能有一個輸出(可以是一個向量)。(2)單輸入函數只需使用函數名,多輸入函數輸入需要引用相應的元素,如mean、sqrt、myfunc(u(1),u(2)。(3)在每個仿真步長內都需要調用MATLAB解釋器。使用Fcn模塊與MATLABFcn模塊進行Simulink與MATLAB之間的數據交互。,使用Fcn與MATLABFcn模塊進行數據交互,6Scope高級使用技術,1)Scope的參數設置使用Scope模塊的參數設置選項卡能夠對系統仿真輸出結果顯示進行更多的控制,而不僅僅是上述的簡單控制。圖36、圖37所示分別為Scope模塊參數設置選項卡中的General選項卡與DataHistory選項卡。,Scope模塊的General選項卡,Scope模塊的Datahistory選項卡,下面簡單介紹一下各選項卡的功能與使用。1)坐標系數目(Numberofaxes)功能描述:在一個Scope輸出模塊中使用多個坐標系窗口同時輸出多個信號。在默認設置下,Scope模塊僅顯示一個坐標系窗口。2)懸浮Scope開關(Floatingscope)功能描述:將Scope模塊切換為懸浮Scope模塊。,3)顯示時間范圍(Timerange)功能描述:設置信號顯示的時間范圍。注意:信號顯示的時間范圍與系統仿真時間范圍并不等同,并且坐標系所示的時間范圍并非為絕對時間,而是指相對時間范圍,坐標系的左下角的時間偏移(Timeoffset)給出了時間的起始偏移量(即顯示時間范圍的起始時刻)。4)坐標系標簽(Ticklabels)功能描述:確定Scope模塊中各坐標系是否帶有坐標軸標簽。下方坐標系使用標簽(bottomaxisonly)以及都不使用標簽(none)。用戶最好使用標簽,這有利于對信號的觀察理解.,5)信號顯示點數限制(Limitdatapointstolast)功能描述:限制信號顯示的數據點的數目,Scope模塊會自動對信號進行截取以顯示信號的最后n個點(這里n為設置的數值)。,6)保存信號至工作空間變量(Savedatatoworkspace)功能描述:將由Scope模塊顯示的信號保存到Matlab工作空間變量中,以便于對信號進行更多的定量分析。數據保存類型有三種:帶時間變量的結構體(structurewithtime)、結構體(structure)以及數組變量(Array)。這與前面所介紹的Sinks模塊庫中的Toworkspace模塊類似。,此外,在Scope模塊中的坐標系中單擊鼠標右鍵,選擇彈出菜單中坐標系屬性設置命令(axesproperties),將彈出下圖所示的坐標系屬性設置對話框。用戶可以對Scope模塊的坐標系標題與顯示信號范圍進行合適的設置,以滿足仿真輸出結果顯示的需要。,坐標系屬性設置對話框,設置信號顯,示幅值范圍,坐標系標題:一,般采用信號名稱,7S函數的設計和調用,S函數是擴展Simulink功能的強有力工具,它使用戶可以利用MATLAB、C語言、C+語言等程序創建自己定義的Simulink模塊。C,C+,Ada,andFortanS-Functions需要編譯為Mex文件,就和其它MEX文件一樣,Simulink可以隨時動態的調用這些文件。S函數使用的是一種比較特殊的調用格式,可以和Simulink求解器交互式操作。S-Functions功能非常全面,適用于連續、離散以及混合系統。S函數允許用戶向模型中添加自己編寫的模塊,只要按照一些簡單的規則,就可以在S-Functions添加設計算法。在編寫好S-Functions之后就可以在S-Functions模塊中添加相應得函數名,也可以通過封裝技術來訂制自己的交互界面。,S函數的調用,在Simulink使用S-Functions的方法就是從Simulink中的User-DefinedFunctions模塊庫中向Simulink模型文件窗口中拖放S-Function模塊。然后在S-Functions模塊的對話框中的S-FunctionsName框中輸入S函數的文件名,在S-FunctionsParameters框中輸入S函數的參數值。在點擊edit的選項后可以編輯S函數的代碼部分,利用S函數實現需要的功能主要是代碼部分的修改。,對于代碼部分的修改,可以使用MATLAB語言按照S-Functions的格式來編寫代碼。MATLAB提供了一個模板文件,方便S-Function的編寫,該模板文件位于MATLAB根目錄toolbox/Simulink/blocks下,模板函數的代碼如下:functionsys,x0,str,ts=sfuntmpl(t,x,u,flag)switchflag,case0,sys,x0,str,ts=mdlInitializeSizes;case1,sys=mdlDerivatives(t,x,u);case2,sys=mdlUpdate(t,x,u);,case3,sys=mdlOutputs(t,x,u);case4,sys=mdlGetTimeOfNextVarHit(t,x,u);case9,sys=mdlTerminate(t,x,u);otherwiseerror(Unhandledflag=,num2str(flag);end,functionsys,x0,str,ts=mdlInitializeSizessizes=simsizes;sizes.NumContStates=0;sizes.NumDiscStates=0;sizes.NumOutputs=0;sizes.NumInputs=0;sizes.DirFeedthrough=1;sizes.NumSampleTimes=1;sys=simsizes(sizes);x0=;str=;ts=00;,functionsys=mdlDerivatives(t,x,u)sys=;functionsys=mdlUpdate(t,x,u)sys=;functionsys=mdlOutputs(t,x,u)sys=;functionsys=mdlGetTimeOfNextVarHit(t,x,u)sampleTime=1;sys=t+sampleTime;functionsys=mdlTerminate(t,x,u)sys=;,M文件S-Functions可用的子函數說明如下:(1)mdlInitializeSizes:定義S-Function模塊的基本特性,包括采樣時間、連續或者離散狀態的初始條件和sizes數組。(2)mdlDerivatives:計算連續狀態變量的微分方程。(3)mdlUpdate:更新離散狀態、采樣時間和主時間同步的要求。(4)mdlOutputs:計算S-Function的輸出。(5)mdlGetTimeOfNextVarHit:計算下一個采樣時間點的絕對時間。(6)mdlTerminate:結束仿真任務。,S-function默認的4個輸入參數t、x、u和flag,他們的次序不能變動,各自代表的意義是:t:表示當前仿真時刻,是采用絕對計量的時間值,是從仿真開始模型運行時間的計量值。x:模塊的狀態向量,包括連續狀態向量和離散狀態向量。u:模塊的輸入向量。flag:執行不同操作的標記變量。,S-Function默認的4個返回參數為sys、x0、str和ts,他們的次序也不能改變,代表的意義為:sys:通用返回函數;x0:初始狀態值,當flag的值為0時才有效;str:沒有明確定義,是MathWorks為將來應用所作的保留。ts:一個m2矩陣,它的兩列分別表示采樣時間間隔和偏移。,8使用命令操作對系統進行仿真,支持命令窗口運行仿真的函數有4個,即sim、simset、simget和set_param。(1)sim函數sim函數的作用是運行一個由Simulink建立的模型,其調用格式為:t,x,y=sim(modname,timespan,options,ut);,其中,t為返回的仿真時間向量;x為返回的狀態矩陣;y為返回的輸出矩陣;modname為系統Simulink模型文件名;timespan為仿真時間;options為仿真參數選擇項,由simset設置;ut為選擇外部產生輸入,ut=T,u1,u2,un。,說明上述參數中,若省略timespan,options,ut則由框圖模型的對話框SimulationParameters設置仿真參數。,(2)simset函數simset函數用來為sim函數建立或編輯仿真參數或規定算法,并把設置結果保存在一個結構變量中。它有如下4種用法:(a)options=simset(property,value,):把property代表的參數賦值為value,結果保存在結構options中。(b)options=simset(old_opstruct,property,value,):把已有的結構old_opstruct(由simset產生)中的參數property重新賦值為value,結果保存在新結構options中。(c)options=simset(old_opstruct,new_opstruct):用結構new_opstruct的值替代已經存在的結構old_opstruct的值。(d)simset:顯示所有的參數名和它們可能的值。,(3)simget函數simget函數用來獲得模型的參數設置值。如果參數值是用一個變量名定義的,simget返回的也是該變量的值而不是變量名。如果該變量在工作空間中不存在(即變量未被賦值),則Simulink給出一個出錯信息。該函數有如下3種用法:(a)struct=simget(modname):返回指定模型model的參數設置的options結構。(b)value=simget(modname,property):返回指定模型model的參數property的值。(c)value=simget(options,property):獲取options結構中的參數property的值。如果在該結構中未指定該參數,則返回一個空陣。用戶只需輸入能夠唯一識別它的那個參數名稱的前幾個字符即可,對參數名稱中字母的大小寫不作區別。,(4)set_param函數set_param函數的功能很多,這里只介紹如何用set_param函數設置Simulink仿真參數以及如何開始、暫停、終止仿真進程或者更新顯示一個仿真模型。(a)設置仿真參數調用格式為:set_param(modname,property,value,)其中modname為設置的模型名,property為要設置的參數,value是設置值。這里設置的參數可以有很多種,而且和用simset設置的內容不盡相同,相關參數的設置可以參考有關資料。(b)控制仿真進程調用格式為:set_param(modname,SimulationCommand,cmd)其中mode為仿真模型名稱,而cmd是控制仿真進程的各個命令,包括start、stop、pause、comtinue或update。在使用這兩個函數的時候,需要注意必須先把模型打開。,第7章Simulink的應用,7.1Simulink工作平臺的啟動7.2Simulink仿真原理7.3Simulink模塊庫7.4仿真模型的建立和模塊參數及屬性的設置7.5其他應用模塊集及Simulink擴展庫,7.1Simulink工作平臺,啟動Simulink,通常有兩種方法:(1)在MATLAB命令窗口中直接輸入Simulink命令;(2)在MATLAB工具欄上單擊Simulink按鈕,如圖7.1所示。,圖7.1啟動Simulink,這樣就可打開了Simulink的SimulinkLibraryBrower(庫模塊瀏覽器),如圖7.2所示。在菜單欄中執行File/New/Model命令,就建立了一個名為untitled的模型窗口,如圖7.3所示。在建立了空的模塊窗口后,用戶可以在此窗口中創建自己需要的Simulink模型。,圖7.2庫模塊瀏覽器,圖7.3新建的空白模塊窗口,7.2Simulink的仿真原理,7.2.1Simulink仿真模塊通常,Simulink仿真系統包括輸入(Input)、狀態(states)和輸出(Output)三個部分。,輸入模塊:即信號源模塊,包括常數字信號源和用戶自定義信號;狀態模塊:即被模擬的系統模塊,是系統建模的核心和主要部分;輸出模塊:即信號顯示模塊,它能夠以圖形方式、文件格式進行顯示。,注意:在設計一個模型時,必須先確定這三個部分的意,以及它們之間的聯系;Simulink的仿真模型并非一定要完全包括這三個部分,它可以缺少其中一個或者兩個;Simulink的狀態模塊可以是連續的、離散的,或者它們二者的結合。,7.2.2Simulink仿真過程1初始化階段對模型的參數進行估計,得到它們實際計算的值。展開模型的各個層次;按照更新的次序對模型進行排序;確定那些顯式化的信號屬性,并檢查每個模塊是否能夠接受連接它們輸入端的信號;確定所有非顯式的信號采樣時間模塊的采樣時間;分配和初始化存儲空間,以便存儲每個模塊的狀態和當前值的輸出。,2模型執行階段模型仿真是通過數值積分來進行完成的,計算數值積分可以采用以下兩步來進行:按照秩序計算每個模塊的積分;根據當前輸入和狀態來決定狀態的微分,得到微分矢量,然后把它返回給解法器,以計算下一個采樣點的狀態矢量。在每一個時間步中,Simulink依次解決下列問題:按照秩序更新模塊的輸出;按照秩序更新模塊的狀態;檢查模塊連續狀態的不連續點;計算下一個仿真時間步的時間。,7.3.1連續模塊庫(Continuous)在連續模塊(Continuous)庫中包括了常見的連續模塊,這些模塊如圖所示。,7.3Simulink模塊庫,在庫模塊瀏覽器中單擊Simulink前面的“+”號,就能夠看到Simulink的模塊庫,如圖7.2所示。,4.傳遞函數模塊(TransferFcn)功能:用執行一個線性傳遞函數。5.零極點傳遞函數模塊(Zero-Pole)功能:用于建立一個預先指定的零點、極點,并用延遲算子s表示的連續。6存儲器模塊(Memory)功能:保持輸出前一步的輸入值。7傳輸延遲模塊(TransportDelay)功能:用于將輸入端的信號延遲指定的時間后再傳輸給輸出信號。8可變傳輸延遲模塊(VariableTransportDelay)功能:用于將輸入端的信號進行可變時間的延遲。,1.積分模塊(Integrator):功能:對輸入變量進行積分。說明:模塊的輸入可以是標量,也可以是矢量;輸入信號的維數必須與輸入信號保持一致。2.微分模塊(Derivative)功能:通過計算差分u/t近似計算輸入變量的微分。3.線性狀態空間模塊(State-Space)功能:用于實現以下數學方程描述的系統:,7.3.2離散模塊庫(Discrete)離散模塊庫(Discrete)主要用于建立離散采樣的系統模型,包括的主要模塊,如圖所示。,1零階保持器模塊(Zero-Order-Hold)功能:在一個步長內將輸出的值保持在同一個值上。,2單位延遲模塊(UnitDelay)功能:將輸入信號作單位延遲,并且保持一個采樣周期相當于時間算子z-1。3離散時間積分模塊(DiscreteTimeIntegrator)功能:在構造完全離散的系統時,代替連續積分的功能。使用的積分方法有:向前歐拉法、向后歐拉法、梯形法。4離散狀態空間模塊(DiscreteStateSpace)功能:用于實現如下數學方程描述的系統:,5離散濾波器模塊(DiscreteFilter)功能:用于實現無限脈沖響應(IIR)和有限脈沖響應(FIR)的數字濾波器。6離散傳遞函數模塊(DiscreteTransferFcn)功能:用于執行一個離散傳遞函數。7離散零極點傳遞函數模塊(DiscreteZero-Pole)功能:用于建立一個預先指定的零點、極點,并用延遲算子z-1表示的離散系統。8一階保持器模塊(FirstOrderHold)功能:在一定時間間隔內保持一階采樣。,7.3.3函數與表格模塊庫(Function&Table)函數與表格模塊庫(Function&Table)主要實現各種一維、二維或者更高維函數的查表,另外用戶還可以根據自己需要創建更復雜的函數。該模塊庫包括多個主要模塊、如圖7.7所示。,1.一維查表模塊(Look-UpTable)一維查表模塊(Look-UpTable)實現對單路輸入信號的查表和線性插值。2二維查表模塊(Look-UpTable2-D)功能:根據給定的二維平面網格上的高度值,把輸入的兩個變量經過查表、插值,計算出模塊的輸出值,并返回這個值。說明:對二維輸入信號進行分段線性變換。,3自定義函數模塊(Fcn)功能:用于將輸入信號進行指定的函數運算,最后計算出模塊的輸出值。說明:輸入的數學表達式應符合C語言編程規范;與MATLAB中的表達式有所不同,不能完成矩陣運算。4MATLAB函數模塊(MATLABFcn)功能:對輸入信號進行MATLAB函數及表達式的處理。說明:模塊為單輸入模塊;能夠完成矩陣運算。注意:從運算速度角度,Mathfunction模塊要比Fcn模塊慢。當需要提高速度時,可以考慮采用Fcn或者S函數模塊。5S-函數模塊(S-Function)功能:按照Simulink標準,編寫用戶自己的Simulink函數。它能夠將MATLAB語句、C語言等編寫的函數放在Simulink模塊中運行,最后計算模塊的輸出值。,7.3.4數學模塊庫(Math)數學模塊庫(Math)包括多個數學運算模塊,如圖7.8所示。,3.矢量的點乘模塊(DotProduct)功能:矢量的點乘模塊(DotProduct)用于實現輸入信號的點積運算。4.增益模塊(Gain)功能:增益模塊(Gain)的作用是把輸入信號乘以一個指定的增益因子,使輸入產生增益。,1.求和模塊(Sum)功能:求和模塊(Sum)用于對多路輸入信號進行求和運算,并輸出結果。2.乘法模塊(Product)功能:乘法模塊(Product)用于實現對多路輸入的乘積、商、矩陣乘法或者模塊的轉置等。,5.常用數學函數模塊(MathFunction)功能:用于執行多個通用數學函數,其中包含exp、log、log10、square、sqrt、pow、reciprocal、hypot、rem、mod等。,6.三角函數模塊(TrigonometricFunction)功能:用于對輸入信號進行三角函數運算,共有10種三角函數供選擇。7.特殊數學模塊特殊數學模塊中包括求最大最小值模塊(MinMax)、取絕對值模塊(Abs)、符號函數模塊(Sign)、取整數函數模塊(RoundingFunction)等。8.數字邏輯函數模塊數字邏輯函數模塊包括復合邏輯模塊(CombinationalLogic)、邏輯運算符模塊(LogicalOperator)、位邏輯運算符模塊(BitwiseLogicalOperator)等。9.關系運算模塊(RelationalOperator)關系符號包括:=(等于)、(不等于)、(大于)、=(大于等于)等。,10.復數運算模塊復數運算模塊包括計算復數的模與幅角(ComplextoMagnitude-Angle)、由模和幅角計算復數(Magnitude-AngletoComplex)、提取復數實部與虛部模塊(ComplextoRealandImage)、由復數實部和虛部計算復數(RealandImagetoComplex)。,7.3.5非線性模塊(Nonlinear)非線性模塊(Nonlinear)中包括一些常用的非線性模塊,如圖7.9所示。,1.比率限幅模塊(RateLimiter)功能:用于限制輸入信號的一階導數,使得信號的變化率不超過規定的限制值。2飽和度模塊(Saturation)功能:用于設置輸入信號的上下飽和度,即上下限的值,來約束輸出值。3量化模塊(Quantizer)功能:用于把輸入信號由平滑狀態變成臺階狀態。,4死區輸出模塊(DeadZone)功能:在規定的區內沒有輸出值。5繼電模塊(Relay)功能:繼電模塊(Relay)用于實現在兩個不同常數值之間進行切換。6選擇開關模塊(Switch)功能:根據設置的門限來確定系統的輸出。,7.3.6信號與系統模塊庫(signals&Systems)信號與系統模塊庫(signals&Systems)包括的主要模塊如圖7.11所示。,1.Bus信號選擇模塊(BusSelector)功能:用于得到從Mux模塊或其它模塊引入的Bus信號。2.混路器模塊(Mux)功能:把多路信號組成一個矢量信號或者Bus信號。3.分路器模塊(Demux)功能:把混路器組成的信號按照原來的構成方法分解成多路信號。4.信號合成模塊(Merge)功能:把多路信號進行合成一個單一的信號。5.接收/傳輸信號模塊(From/Goto)功能:接收/傳輸信號模塊(From/Goto)常常配合使用,From模塊用于從一個Goto模塊中接收一個輸入信號,Goto模塊用于把輸入信號傳遞給From模塊。6初始值設定模塊(IC)功能:初始值設定模塊(IC)用于設定與輸出端口連接的模塊的初始值。,7.3.7信號輸出模塊(Sinks)信號輸出模塊(Sinks)包括的主要模塊如圖7.12所示。,圖7.12輸出顯示模塊庫,1.示波器模塊(Scope)功能:顯示在仿真過程中產生的輸出信號,用于在示波器中顯示輸入信號與仿真時間的關系曲線,仿真時間為x軸。2.二維信號顯示模塊(XYGraph)功能:在MATLAB的圖形窗口中顯示一個二維信號圖,并將兩路信號分別作為示波器坐標的x軸與y軸,同時把它們之間的關系圖形顯示出來。3.顯示模塊(Display)功能:按照一定的格式顯示輸入信號的值。可供選擇的輸出格式包括:short、long、short_e、long_e、bank等。,4.輸出到文件模塊(ToFile)功能:按照矩陣的形式把輸入信號保存到一個指定的MAT文件。第一行為仿真時間,余下的行則是輸入數據,一個數據點是輸入矢量的一個分量。5.輸出到工作空間模塊(ToWorkspace)功能:把信號保存到MATLAB的當前工作空間,是另一種輸出方式。6.終止信號模塊(Terminator)功能:中斷一個未連接的信號輸出端口。7.結束仿真模塊(Stopsimulation)功能:停止仿真過程。當輸入為非零時,停止系統仿真。,7.3.8信號源模塊庫(Sources)信號源模塊庫(Sources)包括的主要模塊如圖7.13所示。,圖7.13信號源模塊庫,1輸入常數模塊(Constant)功能:產生一個常數。該常數可以是實數,也可以是復數。2信號源發生器模塊(SignalGenerator)功能:產生不同的信號,其中包括:正弦波、方波、鋸齒波信號。3從文件讀取信號模塊(FromFile)功能:從一個MAT文件中讀取信號,讀取的信號為一個矩陣,其矩陣的格式與ToFile模塊中介紹的矩陣格式相同。如果矩陣在同一采樣時間有兩個或者更多的列,則數據點的輸出應該是首次出現的列。,4從工作空間讀取信號模塊(FromWorkspace)功能:從MATLAB工作空間讀取信號作為當前的輸入信號。5隨機數模塊(RandomNumber)功能:產生正態分布的隨機數,默認的隨機數是期望為0,方差為1的標準正態分布量。6帶寬限制白噪聲模塊(BandLimitedWhiteNoise)功能:實現對連續或者混雜系統的白噪聲輸入。7其它模塊除以上介紹的常用模塊外,還包括其模塊。各模塊功能可通過以下方法查看:先進入Simulink工作窗口,在菜單中執行Help/SimulinkHelp命令,這時就會彈出Help界面。然后用鼠標展開UsingSimulinkBlockReferenceSimulinkBlockLibraries就可以看到Simulink的所有模塊。查看相應的模塊的使用方法和說明信息即可。,7.4仿真模型的建立與模塊參數與屬性的設置,1.仿真模塊的建立首先啟動Simulink命令,建立一個空的模塊窗口“untitled”,然后利用Simulink提供的模塊庫,在此窗口中創建自己需要的Simulink模型。具體方法:在模塊庫瀏覽器中找到所需模塊,選中該模塊后右擊鼠標,把它加入到一個模型窗口中即可完成模塊的建立。,圖7.14添加模塊,2.模塊參數與屬性的設置方法:在所建立的模型窗口中,選中相應的模塊,單擊右擊鼠標,在彈出的快捷菜單中單擊“Blockparameters”選項(如圖7.15所示),即可打開該模塊的參數設置對話框,如圖7.16(a)所示。右擊鼠標,在彈出的快捷菜單中單擊“BlockProperties”選項,即可打開該模塊的屬性設置對話框,如圖7.16(b)所示。,圖7.15Blockparamenters選項,3.模塊的連接,一般情況下,每個模塊都有一個或者多個輸入口或者輸出口。輸入口通常是模塊的左邊的“”符號;輸出口是右邊的“”符號。模塊的連接方法:把鼠標指針放到模塊的輸出口,這時,鼠標指針將變為“+”十字形;然后,拖運鼠標至其它模塊的輸入口,這時信號線就變成了帶有方向箭頭的線段。此時,說明這兩個模塊的連接成功,否則需要重新進行連接。,4.運行仿真在運行仿真之前,首先保存已設置和連接的模型,然后就可以運行仿真。,1.Simulink仿真注意(1)Simulink的數據類型由于Simulink在仿真過程中,始終都要檢查模型的類型安全性。模型的類型安全性是指從該模型產生的代碼不出現上溢或者下溢現象,當產生溢出現象時,系統將出錯誤。查看模塊的數據類型的方法是:在模型窗口的菜單中執行Format/PortDataTypes命令,這樣每個模塊支持的數據類型就顯示出來了。要取消數據類型的查看方式,單擊PortDataTypes去掉其前面的勾號即可。,7.4.3Simulink仿真注意與技巧,圖7.23查看模塊支持的數據類型,(2)數據的傳輸在仿真過程中,Simulink首先查看有沒有特別設置的信號的數據類型,以及檢驗信號的輸入和輸出端口的數據類型是否產生沖突。如果有沖突,Simulink將停止仿真,并給出一個出錯提示對話框,在此對話框中將顯示出錯的信號以及端口,并把信號的路徑以高亮顯示。遇到該情形,必須改變數據類型以適應模塊的需要。,(3)提高仿真速度Simulink仿真過程,仿真的性能受諸多因素的影響,包括模型的設計和仿真參數的選擇等。對于大多數問題,使用Simulink系統默認的解法和仿真參數值就能夠比較好地解決。因素及解決方法:(1)仿真的時間步長太小。針對這種情況可以把最大仿真步長參數設置為默認值auto。(2)仿真的時間過長。可酌情減小仿真的時間。(3)選擇了錯誤的解法。針對這種情況可以通過改變解法器來解決。(4)仿真的精度要求過高。仿真時,如果絕對誤差限度太小,則會使仿真在接近零的狀態附近耗費過多時間。通常,相對誤差限為0.1%就已經足夠了。(5)模型包含一個外部存儲塊。盡量使用內置存儲模塊。,(4)改善仿真精度檢驗仿真精度的方法是:通過修改仿真的相對誤差限和絕對誤差限,并在一個合適的時間跨度反復運行仿真,對比仿真結果有無大的變化,如果變化不大,表示解是收斂的。說明仿真的精度是有效的,結果是穩定的。如果仿真結果不穩定,其原因可參是系統本身不穩定或仿真解法不適合。如果仿真的結果不精確,其原因很可能是:(1)模型有取值接近零的狀態。如果絕對誤差過大,會使仿真在接近零區域運行的仿真時間太小。解決的辦法是修改絕對誤差參數或者修改初始的狀態。(2)如果改變絕對誤差限還不能達到預期的誤差限,則修改相對誤差限,使可接受的誤差降低,并減小仿真的步長。,2.Simulink仿真技巧連接分支信號線先連接好單根信號線,然后將鼠標指針放在已經連接好的信號線上,同時按住“Ctrl”鍵,拖動鼠標,連接到另一個模塊。這樣就可以根據需由一個信號源模塊,引出多條信號線。如圖7.28所示。,圖7.28引出多條信號線示例,模塊的編輯技巧(1)調整模塊大小(2)在同一窗口復制模塊(3)刪除模塊(4)編輯模塊標簽,7.5其它應用模塊集和Simulink擴展庫,1.通信模塊集(CommunicationsBlockset),圖7.31通信模塊集中的模塊庫,2數字信號處理模塊集(DSPBlockset),3.電力系統模塊集(PowerSystemBlockset),4.Simulink擴展庫,擴展信號輸出模塊庫(AdditionalSinks),圖7.35擴展信號輸出模塊庫,擴展離散庫(AdditionalDiscrete),擴展線性庫(AdditionalLinear),圖7.36擴展離散庫,圖7.37擴展線性庫,轉換庫(Transformations),圖7.38轉換模塊庫,觸發模塊庫(FlipFlops),圖7.39觸發模塊庫,線性化庫(Linearization),圖7.40線性化庫,宇航模塊庫(AirspaceBlocks),圖7.41宇航模塊庫,SIMULINK仿真基礎,基本建模方法連續系統建模解微分方程,SIMULINK入門,MATLAB命令窗口運行指令:simulinkSIMULINK模塊庫瀏覽器:SimulinkLibraryBrowserSource子庫建立一個簡單的仿真系統,建立一個簡單的仿真系統,點擊“新建”,建立新模型tst1用鼠標在信源模塊中選取sinewave,拖曳至tst1窗口用鼠標在信宿模塊中選取scope,拖曳至tst1窗口連線啟動仿真,模塊的基本操作,模塊的選定選定單個和選定多個模塊的復制復制/粘貼Ctrl鍵模塊名操作點擊模塊名模塊的樣式Format菜單,簡單建模:,按住Ctrl,簡單建模:,支持向量顯示,Mux,支持標量擴展,插入模塊,SIMULINK模型,外表:直觀的方框圖文件:MDL文件數學:微分方程或差分方程行為:模擬物理過程的動態性狀,加注釋,simulink模型的一般性結構,信源,系統,信宿,數值分析:積分模塊的應用,積分模塊應用:復位積分,負變正時強迫清零,微分方程,構造微分方程求解模型,Simulink電路仿真,Simulink是MATLAB的一個重要的工具箱,是結合了框圖界面和交互仿真能力的系統級設計和仿真工具。它以MATLAB核心數學,圖形和語言為基礎,可以讓用戶完成從算法開發,仿真或者模型驗證的全過程,而不需要傳遞數據,重寫代碼或改變軟件環境。在start進入Simulink菜單,選擇SimulinkLibraryBrowser,打開Simulink庫函數,選擇FileNew打開編輯窗口。在MATLAB的Command窗口直接鍵入Simulink即可打開Simulink工作窗口。Simulink作為面向框圖的仿真軟件,具有以下的功能和優點:(1)用方框圖的繪制代替了程序的編寫。構成任何一個系統框圖有三個步驟,即選定典型環節,相互聯結和給定環節參數。(2)仿真的建立和運行是智能化的。首先,畫好了框圖并存起來,Simulink自動建立一個仿真的過程;其次,在運行時用戶可以不給步長,只給出要求的仿真精度,軟件會自動選擇能保證給定精度的最大步長,使得在給定的精度要求下系統仿真具有最快的速度。,(3)輸入輸出信號來源形式的多樣化。其輸入信號可以是各種信號發生器;也可以來自一個設定的記錄文件;還可以來自MATLAB的工作空間(workspace).輸出信號也類似,這就擴大了仿真系統與各種外部軟件和硬件的接口能力。Simulink工具箱中含有大量的仿真模塊集,例如PowerSystemBlockset(PSB),DSPBlockset,CommunicationBlockset,CDMAReferenceBlockset,NonlinearControlDesignBlockset等專門領域應用的仿真模塊。研究MATLAB在電路仿真中的應用,主要用到的是Simulink節點下的CommonlyusedBlocks,Sinks,Sources等模塊以及在電路仿真中最長用的PowerSystemBlockset(DSP)模塊。,求i3,U4,U7;,1.Simulink常用模塊介紹要熟練地使用Simulink進行仿真,首先要求能夠熟練使用Simlink常用模塊。在模塊瀏覽器中的Simulink節點下包含了搭建一個Simulink模塊所需要的基本模塊。本節主要對其中的Sources模塊庫、Sinks模塊庫、MathOperations庫和Continuous模塊庫中的常用模塊進行介紹。Sources模塊階躍函數,起始時間是第1秒而非0秒。雙擊step模塊,對仿真起始時間(steptime)和階躍值(Initialvalue,Finalvalue)的大小進行設置。信號發生器,可以產生給定頻率和幅值的正弦波(sinewave)、方波(squarewave)和鋸齒波(sawtoothwave),雙擊圖標可以設置。,定時器,顯示仿真時間,在系統仿真時打開定時器,可以看到實時的仿真時間。正弦波,電路中常用到的正弦信號(SineWave)模塊,雙擊圖標,在彈出的窗口中調整相關參數。信號生成方式有兩種:Timebased和Samplebased。如果以Timebased方式運行該模塊,則需要用戶設定波形的幅度(Amplitude)、偏移(Bias)、頻率(Frequency)、初相(Phase)幾個參數;如果選擇Samplebased方式,參數設置則為幅度(Amplitude)、偏移(Bias)、每周期采樣數(Sampiesperperiod)和偏移采樣數(Numberofoffsetsamples).兩種工作方式中的各項參數都可以用關系式加以換算:每周期采樣數=2*pi/(頻率*采樣時間)頻移采樣數=初相*每周期采樣數/(

溫馨提示

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

評論

0/150

提交評論