版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第7章 Simulink仿真環(huán)境,,,,,7 . 1 演示1個Simulink的簡單程序,7 . 2 Simulink文件操作和模型窗口,7 . 3 模型創(chuàng)建,7 . 4 Simulink基本模塊,,7 . 5 復(fù)雜系統(tǒng)仿真與分析,,7 . 6 子系統(tǒng)與封裝,,7 . 7 用MATLAB命令創(chuàng)建和運(yùn)行Simulink模型,,7 . 8 S函數(shù),,7 . 9 以Simulink為基礎(chǔ)的模塊工具箱,7 . 1 演示1個S
2、imulink的簡單程序,【例7.1】 創(chuàng)建一個正弦信號的仿真模型,步驟如下。(1)在MATLAB的命令窗口輸入“simulink”,或單擊工具欄中的 圖標(biāo),就可以打開Simulink模塊庫瀏覽器(Simulink Library Browser)窗口,如圖7.1所示。,7 . 1 演示1個Simulink的簡單程序,(2)單擊工具欄上的 圖標(biāo)或選擇菜單“File”→“New”→“Model”命令,新建1個名為
3、“untitled”的空白模型窗口。(3)在如圖7.1所示的右側(cè)子模塊窗口中,單擊“Source”子模塊庫前的“+”按鈕(或雙擊“Source”子模塊庫),或者直接在左側(cè)模塊和工具欄單擊“Simulink”下的“Source”子模塊庫,便可看到各種輸入源模塊。,7 . 1 演示1個Simulink的簡單程序,(4)若用鼠標(biāo)單擊所需的輸入信號源模塊“Sine Wave”(正弦信號),將其拖曳到空白模型窗口“untitled”,則“Si
4、ne Wave”模塊就被添加到untitled窗口;也可以用鼠標(biāo)選擇“Sine Wave”模塊,單擊鼠標(biāo)右鍵,在快捷菜單中選擇“add to 'untitled'”命令,就可以將“Sine Wave”模塊添加到untitled窗口,如圖7.2所示。,7 . 1 演示1個Simulink的簡單程序,(5)用同樣的方法打開接收模塊庫“Sinks”,選擇其中的“Scope”模塊(示波器)拖曳到“untitled”窗口中。(
5、6)在“untitled”窗口中,用鼠標(biāo)指向“Sine Wave”右側(cè)的輸出端,當(dāng)光標(biāo)變?yōu)槭中螘r,按住鼠標(biāo)拖曳到“Scope”模塊的輸入端,松開鼠標(biāo)按鍵,就完成了2個模塊間的信號線連接,1個簡單的模型便建成,如圖7.3所示為Simulink模型窗口。,7 . 1 演示1個Simulink的簡單程序,(7)開始仿真。單擊“untitled”模型窗口中的“開始仿真”圖標(biāo) ,或者選擇菜單“Simulink”→“Start”命令,則仿
6、真開始。雙擊“Scope”模塊出現(xiàn)示波器顯示屏,可以看到黃色的正弦波形,如圖7.4所示。(8)保存模型,單擊工具欄的 圖標(biāo),將該模型保存為“Ex0701.mdl”文件。1個簡單的仿真模型就建立了。,7 . 2 Simulink文件操作和模型窗口,7.2.1 Simulink文件操作以下幾種操作可以新建仿真模型文件。(1)在MATLAB的命令窗口選擇菜單“File”→“New”→“Model”命令。(2)在如圖7.1
7、所示的Simulink模塊庫瀏覽器窗口選擇菜單“File”→“New”→“Model”命令,或者單擊工具欄的 圖標(biāo)。(3)在如圖7.3所示的Simulink模型窗口選擇菜單“File”→“New”→“Model”命令,或者單擊工具欄的 圖標(biāo)。,7.2.2 Simulink模型窗口,1.狀態(tài)欄狀態(tài)欄用來顯示仿真的狀態(tài)。當(dāng)鼠標(biāo)指向菜單項和工具欄時,在狀態(tài)欄顯示其定義;“Ready”表示模型已準(zhǔn)備就緒而等待仿真命令;“
8、100%”表示編輯窗模型的顯示比例;“ode45”表示仿真所選用的積分算法。在仿真過程中,狀態(tài)欄還會出現(xiàn)動態(tài)信息。2.工具欄模型窗口工具欄如圖7.5所示。,7 . 3 模型創(chuàng)建,7.3.1 模塊操作1.模塊的復(fù)制在不同模型窗口(包括模型庫窗口)之間的模塊復(fù)制很簡單,只要選定模塊,用鼠標(biāo)將其拖曳到另一個模型窗口即可;而在同一模型窗口內(nèi)復(fù)制模塊則需要按住【Ctrl】鍵,再用鼠標(biāo)拖曳對象到合適的地方,釋放鼠標(biāo)。或者使用菜單和工具欄
9、中的“Copy”和“Paste”按鈕。2.模塊的移動模塊的移動有兩種方式。(1)若在同一模型窗口中移動模塊,則需要選定移動的模塊,用鼠標(biāo)將模塊拖曳到合適的地方。(2)若在不同模型窗口之間移動模塊,則要在鼠標(biāo)移動的同時按下【Shift】鍵。3.模塊的刪除若要刪除模塊,應(yīng)選定待刪除的模塊,按下【Delete】鍵;或者選擇菜單“Edit”→“Clear”命令或者“Cut”命令;或者單擊工具欄的“Cut”按鈕。,7.3.1 模塊操
10、作,4.模塊的翻轉(zhuǎn)(1)模塊翻轉(zhuǎn)180°。選定模塊,選擇菜單“Format”→“Flip Block”命令可以將模塊旋轉(zhuǎn)180°,如圖7.6所示,中間為翻轉(zhuǎn)180°示波器模塊。(2)模塊翻轉(zhuǎn)90°。選定模塊,選擇菜單“Format”→“Rotate Block”命令可以將模塊旋轉(zhuǎn)90°,如圖7.6右邊示波器所示。如果1次翻轉(zhuǎn)不能達(dá)到要求,可以通過多次翻轉(zhuǎn)實現(xiàn)。,7.3.1 模塊操作
11、,5.模塊名的編輯模塊名的編輯方法有如下幾種。(1)修改模塊名。單擊模塊下面或旁邊的模塊名,若出現(xiàn)虛線編輯框則可對該模塊名進(jìn)行修改。(2)模塊名字體設(shè)置。選定模塊,選擇菜單“Format”→“Font”命令,打開字體對話框設(shè)置字體。(3)模塊名的顯示和隱藏。選定模塊,選擇菜單“Format”→“Hide /Show name”命令,可以隱藏或顯示模塊名。(4)模塊名的翻轉(zhuǎn)。選定模塊,選擇菜單“Format”→“Flip nam
12、e”命令,可以翻轉(zhuǎn)模塊名。,7.3.2 信號線操作,1.模塊間連線若要將2個模塊用信號線連接,則先將光標(biāo)指向1個模塊的輸出端,待光標(biāo)變?yōu)槭中魏?,按下鼠?biāo)左鍵并拖動,直到另1個模塊的輸入端。如果2個端口同時都是輸入端或輸出端,則不能產(chǎn)生連線。2.信號線的分支和折線(1)分支的產(chǎn)生方式。在模型框圖中,1個信號往往需要分送到不同模塊,需要繪制分支線,此時信號線中就會出現(xiàn)分支點。(2)信號線的折線。在用信號線連接模型時,經(jīng)常需要將
13、信號線轉(zhuǎn)向,產(chǎn)生折線。,7.3.2 信號線操作,3.信號線文本注釋(label)信號線文本注釋有以下幾種。(1)添加文本注釋。雙擊需要添加文本注釋的信號線,出現(xiàn)一個空的文字填寫框,在其中可以輸入文本。(2)修改文本注釋。單擊需要修改的文本注釋,出現(xiàn)虛線編輯框后即可修改文本。(3)移動文本注釋。單擊標(biāo)識,出現(xiàn)編輯框后,就可以移動編輯框。(4)復(fù)制文本注釋。單擊需要復(fù)制的文本注釋,按下【Ctrl】鍵的同時移動文本注釋,或者使用菜
14、單和工具欄的復(fù)制操作。4.在信號線中插入模塊若模塊只有1個輸入端口和1個輸出端口,則該模塊可以直接被插入到1條信號線中。5.給模型添加文本注釋添加模型的文本注釋。在需要當(dāng)做注釋區(qū)的中心位置,若雙擊鼠標(biāo)左鍵,則會出現(xiàn)編輯框,在編輯框中可以輸入文字注釋。,7 . 4 Simulink基本模塊,7.4.1 基本模塊Simulink的基本模塊包括多個子模塊庫,如圖7.9所示。,7.4.1 基本模塊,1.輸入信號源模塊庫(Sour
15、ces)輸入信號源模塊用來向模型提供輸入信號,沒有輸入口,但至少有1個輸出口。常用的輸入信號源模塊如表7.1所示。,7.4.1 基本模塊,2.接收模塊庫(Sinks)接收模塊用來接收模塊信號,常用的接收模塊如表7.2所示。,7.4.1 基本模塊,3.連續(xù)系統(tǒng)模塊庫(Continuous)連續(xù)系統(tǒng)模塊是構(gòu)成連續(xù)系統(tǒng)的環(huán)節(jié),常用的連續(xù)系統(tǒng)模塊如表7.3所示。,7.4.1 基本模塊,4.離散系統(tǒng)模塊庫(Discrete)離散系統(tǒng)
16、模塊用來構(gòu)成離散系統(tǒng)的環(huán)節(jié),常用的離散系統(tǒng)模塊如表7.4所示。,7.4.2 常用模塊的參數(shù)和屬性設(shè)置,1.模塊參數(shù)設(shè)置(1)正弦信號源(Sine Wave)。雙擊正弦信號源模塊,會出現(xiàn)如圖7.10所示的“參數(shù)設(shè)置”對話框。,7.4.2 常用模塊的參數(shù)和屬性設(shè)置,(2)階躍信號源(Step)。階躍信號模塊是輸入信號源,其模塊參數(shù)對話框如圖7.11所示。,,7.4.2 常用模塊的參數(shù)和屬性設(shè)置,(3)從工作空間獲取數(shù)據(jù)(From W
17、orkspace)。從工作空間獲取數(shù)據(jù)模塊的輸入信號源?!纠?.2】 在工作空間計算變量t和y,將其運(yùn)算的結(jié)果作為系統(tǒng)的輸入。>> t=0:0.1:10;>> y=sin(t);>> t=t';>> y=y';,7.4.2 常用模塊的參數(shù)和屬性設(shè)置,將“From Workspace”模塊的“參數(shù)設(shè)置”對話框打開,如圖7.12(a)所示,在“Data”欄填寫“[
18、t,y]”,單擊“OK”按鈕,則在模型窗口中該模塊顯示如圖7.12(b)所示。用示波器作為接收模塊,可以查看輸出波形為正弦波。,,7.4.2 常用模塊的參數(shù)和屬性設(shè)置,(4)從文件獲取數(shù)據(jù)(From file)。從文件獲取數(shù)據(jù)是指從mat數(shù)據(jù)文件中獲取數(shù)據(jù)。將【例7.2】中的數(shù)據(jù)保存到.mat文件。>> t=0:0.1:2*pi;>> y=sin(t);>> y1=[t;y];>&g
19、t; save Ex0702 y1 %保存在“Ex0702.mat”文件中將“From File”模塊的“參數(shù)設(shè)置”對話框打開,如圖7.13所示,在“File name”欄填寫“Ex0702.mat”,單擊“OK”按鈕。用示波器作為接收模塊,可以查看輸出波形。,7.4.2 常用模塊的參數(shù)和屬性設(shè)置,(5)傳遞函數(shù)(Transfer function)。傳遞函數(shù)模塊是用來構(gòu)成連續(xù)系統(tǒng)結(jié)構(gòu)的模塊,其模塊參數(shù)對話框如圖7.14所示。
20、,7.4.2 常用模塊的參數(shù)和屬性設(shè)置,若在圖7.14中設(shè)置“Denominator”為“[1 1.414 1]”,則在模型窗口中的顯示如圖7.15所示。,7.4.2 常用模塊的參數(shù)和屬性設(shè)置,(6)示波器(Scope)。示波器模塊用來接收輸入信號并實時顯示信號波形曲線,還可以把數(shù)據(jù)送入工作空間。示波器窗口的工具欄可以調(diào)整顯示的波形。顯示正弦信號的示波器,如圖7.16所示。,7.4.2 常用模塊的參數(shù)和屬性設(shè)置,示波器的參數(shù)設(shè)置如
21、下。① 示波器的y坐標(biāo)設(shè)置如圖7.17(a)所示。通過用鼠標(biāo)右鍵單擊坐標(biāo)框,在快捷菜單中選擇“Axes properties”,就會出現(xiàn)“y坐標(biāo)設(shè)置”對話框,在“Y-min”和“Y-max”中設(shè)置坐標(biāo)上下限,在“Title”中設(shè)置坐標(biāo)的文字標(biāo)注。② 示波器的參數(shù)設(shè)置可以通過單擊圖7.16中工具欄上的Parameters選項卡中“打開參數(shù)對話框”按鈕,出現(xiàn)如圖7.17(b)所示的“參數(shù)設(shè)置”對話框,在“Time range”欄中設(shè)置顯
22、示信號范圍,默認(rèn)auto時為仿真時間范圍,用戶可以設(shè)置,如果信號實際持續(xù)時間超過該范圍,則超出范圍的信號在示波器中不顯示。,,7.4.2 常用模塊的參數(shù)和屬性設(shè)置,③ “Sampling”區(qū)包含2個下拉菜單:“Decimation”表示頻度,默認(rèn)值為1,表示每隔1個數(shù)據(jù)點顯示;“Sample time”表示顯示點的采樣時間步長,默認(rèn)值為0,表示連續(xù)信號,大于0表示離散信號的時間間隔,?1表示由輸入信號決定。④ 如圖7.17(b)中的
23、“Number of axes”欄表示示波器的輸入端口個數(shù),默認(rèn)值為1,表示只有1個輸入,如果設(shè)置為2則表示有2個輸入端口,如圖7.18(a)所示。⑤ “參數(shù)設(shè)置”對話框中的“Data history”圖標(biāo)如圖7.18(b)所示,“Limit data points to last”欄表示緩沖區(qū)接受數(shù)據(jù)的長度,默認(rèn)為5 000,不管示波器是否打開,只要仿真啟動,緩沖區(qū)就接受信號數(shù)據(jù)。,,,,7.4.2 常用模塊的參數(shù)和屬性設(shè)置,2.
24、模塊屬性設(shè)置每個模塊的屬性對話框的內(nèi)容都相同,選中模塊后單擊鼠標(biāo)右鍵打開快捷菜單,選擇“Block Properties…”菜單項就可以打開“模塊屬性”對話框,如圖7.19所示,包括3個選項卡:“General”、“Block Annotation”和“Callbacks”。,7 . 5 復(fù)雜系統(tǒng)仿真與分析,7.5.1 仿真設(shè)置Simulink的仿真參數(shù)都有默認(rèn)的設(shè)置,但如果需要修改仿真參數(shù),則可以在仿真運(yùn)行前對仿真參數(shù)進(jìn)行設(shè)置
25、。在模型窗口選擇菜單“Simulation”→“Configuration parameters…”命令,則會打開“參數(shù)設(shè)置”對話框,如圖7.20所示。,7.5.1 仿真設(shè)置,1.Solver頁的參數(shù)設(shè)置Solver頁的參數(shù)設(shè)置有如下幾項。(1)Simulation time。① 仿真的起始時間(Start time):默認(rèn)為0,單位為s。② 仿真的結(jié)束時間(Stop time):默認(rèn)為10,單位為s。(2)Solver o
26、ptions。仿真的過程一般是求解微分方程組,“Solve options”的內(nèi)容是針對解微分方程組的設(shè)置。當(dāng)求解類型為變步長時,有以下設(shè)置。 “Max step size”:設(shè)置最大步長,默認(rèn)為auto,最大步長為(Stop time-Start time)/50。② “Min step size”:設(shè)置最小步長,默認(rèn)為auto。③ “Initial step size”:設(shè)置初始步長,默認(rèn)為auto。④ “Relative
27、 tolerance”:設(shè)置相對容許誤差限。⑤ “Absolute tolerance”:設(shè)置絕對容許誤差限。,7.5.1 仿真設(shè)置,當(dāng)求解類型為定步長時,有以下設(shè)置。① “Fixed step size”:設(shè)置固定步長,默認(rèn)為auto,不能設(shè)置誤差限。② “Mode”:設(shè)置模型類型,有“MuliTasking”、“Single Tasking”和“Auto”3種。③ “Solver”:設(shè)置仿真解法的具體算法類型。變步長的算
28、法有:discrete、ode45、ode23、ode113、ode15s、ode23s、ode23t和ode23tb,默認(rèn)使用ode45算法。定步長的算法有:discrete、ode5、ode4、ode3、ode2和ode1。(3)Solver diagnostic controls。根據(jù)需要設(shè)置仿真診斷參數(shù),可以達(dá)到不同的輸出效果。,7.5.1 仿真設(shè)置,2.Data Import/Outport(數(shù)據(jù)輸入/輸出)頁的設(shè)置在
29、Simulink“參數(shù)設(shè)置”對話框左側(cè)選擇“Data Import/Extport”,如圖7.21所示。,7.5.2 連續(xù)系統(tǒng)仿真,【例7.3】 建立二階系統(tǒng)的仿真模型。(1)在“Sources”模塊庫選擇“Step”模塊,在“Continuous”模塊庫選擇“Transfer Fcn”模塊,在“Math Operations”模塊庫選擇“Sum”模塊,在“Sinks”模塊庫選擇“Scope”模塊。(2)連接各模塊,從信號線引出
30、分支點,構(gòu)成閉環(huán)系統(tǒng)。(3)設(shè)置模塊參數(shù),打開“Sum”模塊“參數(shù)設(shè)置”對話框,如圖7.22所示。將“Icon shape”設(shè)置為“rectangular”,將“List of signs”設(shè)置為“|+?”,其中“|”表示上面的入口為空。,7.5.2 連續(xù)系統(tǒng)仿真,(4)添加信號線文本注釋。雙擊信號線,出現(xiàn)編輯框后,輸入文本,其模型如圖7.23所示。,7.5.2 連續(xù)系統(tǒng)仿真,(5)仿真并分析。單擊工具欄的“Start simul
31、ation”按鈕開始仿真,在示波器上顯示出階躍響應(yīng)。在Simulink模型窗口,選擇菜單“Simulation”→“Simulation parameters…”命令,在“Solver”頁將“Stop time”設(shè)置為15,單擊“Start simulation”按鈕,示波器顯示的時間為15 s。,7.5.2 連續(xù)系統(tǒng)仿真,再單擊示波器工具欄的自動刻度按鈕(Autoscale),波形將以窗口的最大值、最小值為縱坐標(biāo)的上、下限?;蛘?/p>
32、將系統(tǒng)的結(jié)構(gòu)修改成為使用積分模塊(Integrator)和零極點模塊(Zero-Pole)串聯(lián),反饋使用“Math Operations”模塊庫中的“Gain”模塊構(gòu)成反饋環(huán)的增益為?1,二階系統(tǒng)模型如圖7.25所示。,7.5.2 連續(xù)系統(tǒng)仿真,如果將示波器換成“Sinks”模塊庫中的“Out”模塊 ;然后在仿真參數(shù)設(shè)置對話框的“Workspace I/O”頁(工作空間輸入/輸出),勾選“Time”和“Ou
33、tput”欄,并分別設(shè)置保存在工作空間的時間量和輸出變量為“tout”和“yout”,則仿真后在工作空間就可以使用這2個變量繪制曲線,如圖7.26所示。>> plot(tout,yout),7.5.2 連續(xù)系統(tǒng)仿真,【例7.4】 建立控制系統(tǒng),控制環(huán)節(jié)采用PID控制,并使用simulink進(jìn)行PID的參數(shù)整定。Simulink的“Continuous”模塊庫中有“PID Controller”模塊,可以作為PID控制
34、器。系統(tǒng)結(jié)構(gòu)如圖7.27所示。,7.5.2 連續(xù)系統(tǒng)仿真,(1)先整定比例環(huán)節(jié)Kp的值,將Ki和Kd都設(shè)置為0,調(diào)整Kp在示波器使輸出波形達(dá)到臨界穩(wěn)定即等幅振蕩波形。Kp從大到小不斷調(diào)整同時查看示波器波形直到等幅振蕩,得出Kp=12.5,示波器波形如圖7.28所示。,,7.5.2 連續(xù)系統(tǒng)仿真,(2)調(diào)整Ki和Kd,使波形達(dá)到合適的輸出。從上圖得出等幅振蕩周期T=15S,K=12.5。>> K=12.5;>&
35、gt; T=15;>> Kp=0.6*KKp = 7.5000>> Ki=1.2*K/TKi = 1>> Kd=0.072*K*TKd = 13.5000,7.5.2 連續(xù)系統(tǒng)仿真,設(shè)置PID模塊的參數(shù)為變量,如圖7.29所示,在命令窗口設(shè)置參數(shù)值。,7.5.2 連續(xù)系統(tǒng)仿真,查看示波器波形,如果不滿足超調(diào)量和過渡時間則再進(jìn)行調(diào)整。如圖7.30(a)為示波器Ki
36、=1時的顯示波形,圖7.30(b)為調(diào)整Ki=0.5時的波形,超調(diào)量比較小。,,,7.5.3 離散系統(tǒng)仿真,【例7.5】 控制部分為離散環(huán)節(jié),被控對象為2個連續(xù)環(huán)節(jié),其中1個有反饋環(huán)。反饋環(huán)引入了零階保持器,輸入為階躍信號。創(chuàng)建模型并仿真的方法如下。(1)選擇1個“Step”模塊,2個“Transfer Fcn”模塊,2個“Sum”模塊,2個“Scope”模塊,1個“Gain”模塊,在“Discrete”模塊庫選擇1個“Disc
37、rete Filter”和1個“Zero-Order Hold”模塊。(2)連接模塊。將反饋環(huán)的“Gain”模塊和“Zero-Order Hold”模塊翻轉(zhuǎn)。(3)設(shè)置參數(shù)。將“Discrete Filter”和“Zero-Order Hold”模塊的“Sample time”都設(shè)置為0.1s。,7.5.3 離散系統(tǒng)仿真,(4)添加文本注釋,離散系統(tǒng)框圖如圖7.31所示。(5)設(shè)置顏色。Simulink為幫助用戶方便地跟蹤不同
38、采樣頻率的運(yùn)作范圍和信號流向,可以采用不同的顏色表示不同的采樣頻率,選擇菜單“Format”→“Sample time color”命令,就可以看到不同采樣頻率的模塊顏色不同。,7.5.3 離散系統(tǒng)仿真,(6)開始仿真。在Simulink模型窗口,選擇菜單“Simulation”→“Simulation parameters…”命令,將“Max step size”設(shè)置為0.05s,則2個示波器“Scope”(d(k)示波器)和“Sc
39、ope1”(y(t)示波器)的顯示如圖7.32所示。,,,7.5.3 離散系統(tǒng)仿真,(7)修改參數(shù),將“Discrete Filter”模塊的“Sample time”設(shè)置為0.6s,“Zero-Order Hold”模塊的“Sample time”不變;選擇菜單“Edit”→“Update diagram”命令修改顏色,就可以看到“Discrete Filter”模塊的顏色變化了;然后開始仿真,可以看出當(dāng)T=0.6,Tk=0.1時,
40、系統(tǒng)出現(xiàn)振蕩。示波器顯示如圖7.33所示。,,,,7.5.3 離散系統(tǒng)仿真,(8)修改參數(shù),將“Discrete Filter”和“Zero-Order Hold”模塊的“Sample time”都設(shè)置為0.6s,更新框圖顏色,開始仿真。當(dāng)T=Tk=0.6時,系統(tǒng)出現(xiàn)強(qiáng)烈的振蕩。示波器顯示如圖7.34所示。,,,7.5.4 仿真結(jié)構(gòu)參數(shù)化,【例7.6】 將【例7.5】中的模塊結(jié)構(gòu)參數(shù)用變量表示,離散系統(tǒng)框圖如圖7.35所示。,,,
41、7.5.4 仿真結(jié)構(gòu)參數(shù)化,將參數(shù)設(shè)置放在Ex0705_1.m文件中。% Ex0705_1 參數(shù)設(shè)置T=0.1; %控制環(huán)節(jié)采樣時間Tk=0.6; %零階保持器采樣時間k=0.03; %Gain增益zt1=1.44;zt2=?1.26;zt3=1;zt4=?1;tf11=6.7;tf12=0.1;tf13=1;tf21=1;tf22=3;tf23=1在MATLAB工作空間運(yùn)行該
42、文件。>> Ex0705_1,7 . 6 子系統(tǒng)與封裝,7.6.1 建立子系統(tǒng)1.在已建立的模型中新建子系統(tǒng)(1)先打開或新建1個模型,建立模型中的各模塊并用信號線連接。(2)在模型窗口中,用鼠標(biāo)拖曳1個虛線框以將需要建立子系統(tǒng)的部分框起來,然后選擇菜單“Edit”→“Create subsystem”命令,這時原來虛線框中的部分就被1個“Subsystem”模塊代替。(3)更改子系統(tǒng)名。如新建的子系統(tǒng)名默認(rèn)為
43、“Subsystem”,以后建立的子系統(tǒng)則在名稱后面加數(shù)字,可以更改為有一定含義的名稱,以便于分析時查看。(4)重命名輸入、輸出端口名稱,如新建的子系統(tǒng)中的默認(rèn)輸入端口名為“In1”、“In2”、…,輸出端口名為“Out1”、“Out2”、…。,7.6.1 建立子系統(tǒng),【例7.7】 打開【例7.5】建立的模型,將控制對象中的第1個連續(xù)環(huán)節(jié)中的反饋環(huán)建立為1個子系統(tǒng)。在模型窗口中,將控制對象中的第1個連續(xù)環(huán)節(jié)的反饋環(huán)用鼠標(biāo)拖出的虛
44、線框框住,選擇菜單“Edit”→“Create subsystem”命令,則子系統(tǒng)如圖7.36所示。,7.6.1 建立子系統(tǒng),2.在已有的子系統(tǒng)基礎(chǔ)上建立如果要在已有的子系統(tǒng)基礎(chǔ)上建立1個子系統(tǒng),可以按以下步驟。(1)將已有的子系統(tǒng)復(fù)制到新窗口。(2)雙擊打開子系統(tǒng)模型窗口,重新放置模塊,建立連接和輸入、輸出端口。(3)將子系統(tǒng)與其他模塊連接。(4)修改子系統(tǒng)名和其他參數(shù)。,7.6.1 建立子系統(tǒng),【例7.8】 在【例7
45、.7】的基礎(chǔ)上建立新子系統(tǒng),將【例7.7】模型的控制對象中的第1個對象環(huán)節(jié)作為1個完整的子系統(tǒng)。將圖7.36中的所有對象都復(fù)制到新的空白模型窗口中,雙擊打開子系統(tǒng)“Subsystem”,則出現(xiàn)如圖7.37所示的子系統(tǒng)模型窗口,添加模型構(gòu)成反饋環(huán)形成閉環(huán)系統(tǒng),如圖7.38所示。,,,7.6.1 建立子系統(tǒng),將系統(tǒng)模型修改為如圖7.39所示的包含子系統(tǒng)的模型。,7.6.2 條件執(zhí)行子系統(tǒng),1.使能子系統(tǒng)(Enabled Subsyst
46、em)建立使能子系統(tǒng)的步驟如下。(1)建立1個新模型。(2)在“Ports & Subsystems”子模塊庫選擇“Enabled Subsystem” 模塊,放在子系統(tǒng)模型窗口中。(3)將“Enabled Subsystem”模塊的“In1”、“Out1”和“Enable”( )3個端口與其他模塊連接。其中“Enable”端口為使能的條件控制信號。(4)設(shè)置“Enabled Subsystem”模塊的參數(shù)。雙擊
47、打開該模塊的模型窗口,如圖7.40所示。其內(nèi)部結(jié)構(gòu)為“In1”和“Out1”連接,“Enable”單獨。,7.6.2 條件執(zhí)行子系統(tǒng),在圖7.40中雙擊“Enable”模塊,出現(xiàn)如圖7.41(a)所示的對話框,“States when enabling”欄有2個下拉選項:“held”表示當(dāng)使能系統(tǒng)再次執(zhí)行時,保持上一次執(zhí)行后的狀態(tài),“reset”表示再次執(zhí)行時復(fù)位到初始狀態(tài)。在圖7.40中雙擊“Out1”模塊,出現(xiàn)如圖7.41(b)
48、所示的對話框,“Output when disabled”欄有2個下拉選項:“held”表示當(dāng)子系統(tǒng)停止執(zhí)行后,輸出端口的值保持輸出值;“reset”表示停止執(zhí)行后輸出端口復(fù)位到初始值。,,,,7.6.2 條件執(zhí)行子系統(tǒng),【例7.9】 建立一個用使能子系統(tǒng)控制正弦信號為半波整流信號的模型。模型由正弦信號“Sine Wave”為輸入信號源,示波器“Scope”為接收模塊,使能子系統(tǒng)“Enabled Subsystem”為控制模塊,連
49、接模塊,將“Sine Wave”模塊的輸出作為“Enabled Subsystem”的控制信號,其模型如圖7.42(a)所示。開始仿真,由于“Enabled Subsystem”的控制為正弦信號,大于0時執(zhí)行輸出,小于0時就停止,則示波器顯示為半波整流信號,如圖7.42(b)所示。,,,7.6.2 條件執(zhí)行子系統(tǒng),2.觸發(fā)子系統(tǒng)(Triggered Subsystem)建立觸發(fā)子系統(tǒng)的步驟如下。(1)建立1個新模型。(2)在“
50、Ports & Subsystems”子模塊庫選擇“Triggered Subsystem”模塊 ,放在子系統(tǒng)模型窗口中。(3)將“Triggered Subsystem”模塊的“In1”、“Out1”和“Triggered ”( )3個端口與其他模塊連接,其中“Triggered ”端口為觸發(fā)條件控制信號。(4)設(shè)置“Triggered Subsystem”模塊的參數(shù)。雙擊打開該模塊的模型窗口,
51、其內(nèi)部結(jié)構(gòu)為“In1”和“Out1”連接,“Trigger”單獨。,7.6.2 條件執(zhí)行子系統(tǒng),【例7.10】 建立1個用觸發(fā)子系統(tǒng)控制正弦信號輸出階梯波形的模型。連接模塊,將“Pulse Generator”模塊的輸出作為“Triggered Subsystem”的控制信號,其模型如圖7.43(a)所示。開始仿真,由于“Triggered Subsystem”的控制為“Pulse Generator”模塊的輸出,示波器顯示如圖
52、7.43(b)所示。,,7.6.2 條件執(zhí)行子系統(tǒng),3.使能觸發(fā)子系統(tǒng)(Enabled and Triggered Subsystem)使能觸發(fā)子系統(tǒng)是觸發(fā)子系統(tǒng)和使能子系統(tǒng)的組合,含有觸發(fā)信號和使能信號2個控制信號輸入端,觸發(fā)事件發(fā)生后,Simulink檢查使能信號是否大于0,大于0就開始執(zhí)行。,7.6.3 子系統(tǒng)的封裝,1.封裝子系統(tǒng)的步驟封裝子系統(tǒng)的步驟如下。(1)選中子系統(tǒng)雙擊打開,給需要進(jìn)行賦值的參數(shù)指定1個變量名。
53、(2)選擇菜單“Edit”→“Mask subsystem”命令,出現(xiàn)封裝對話框。(3)在封裝對話框中的設(shè)置參數(shù),主要有“Icon”、“Parameters”、“Initialization”和“Documentation”4個選項卡。2.Icon選項卡Icon選項卡用于設(shè)定封裝模塊的名字和外觀,其參數(shù)設(shè)置如圖7.44所示。,7.6.3 子系統(tǒng)的封裝,3.Parameters選項卡Parameters選項卡用于輸入變量名稱和
54、相應(yīng)的提示,其參數(shù)設(shè)置如圖7.45所示。,7.6.3 子系統(tǒng)的封裝,4.Initialization選項卡Initialization選項卡用于初始化封裝子系統(tǒng),在“Initialization commands ”中輸入MATLAB命令,當(dāng)裝載模塊,開始仿真或更新模塊框圖時運(yùn)行初始化命令。5.Documentation選項卡Documentation選項卡用于編寫與該封裝模塊對應(yīng)的Help和說明文字,分別有“Mask type
55、”、“Mask Description”和“Mask help”欄。(1)Mask type欄:用于設(shè)置模塊顯示的封裝類型。(2)Mask Description欄:用于輸入描述文本。(3)Mask help欄:用于輸入幫助文本,即當(dāng)在所顯示的封裝子系統(tǒng)“參數(shù)設(shè)置”對話框中單擊“Help”按鈕時出現(xiàn)的文本。,7.6.3 子系統(tǒng)的封裝,6.按鈕設(shè)置參數(shù)設(shè)置對話框中的“Apply”按鈕用于將修改的設(shè)置應(yīng)用于封裝模塊;“Unmask
56、”按鈕用于將封裝撤銷,則雙擊該模塊就不會出現(xiàn)定制的對話框。【例7.11】 創(chuàng)建1個二階系統(tǒng),并將子系統(tǒng)進(jìn)行封裝。創(chuàng)建1個二階系統(tǒng),將其閉環(huán)系統(tǒng)構(gòu)成子系統(tǒng)并封裝,將阻尼系數(shù)zeta和無阻尼頻率wn作為輸入?yún)?shù)。(1)創(chuàng)建模型,并將系統(tǒng)的阻尼系數(shù)用變量zeta表示,無阻尼頻率用變量wn表示。二階系統(tǒng)模型如圖7.46所示。,7.6.3 子系統(tǒng)的封裝,(2)用虛線框框住反饋環(huán),若選擇菜單“Edit”→“Create Subsystem
57、”命令,則產(chǎn)生子系統(tǒng)模型,如圖7.47所示。,,7.6.3 子系統(tǒng)的封裝,(3)封裝子系統(tǒng),若選擇菜單“Edit”→“Mask subsystem”命令,則出現(xiàn)封裝對話框,將zeta和wn作為輸入?yún)?shù)。在Icon選項卡中設(shè)置的“Drawing commands”欄中寫文字并畫曲線,命令如下:disp('二階系統(tǒng)')plot([0 1 2 3 10], ?exp(?[0 1 2 3 10])),7.6.3 子系統(tǒng)
58、的封裝,在Parameters選項卡中,單擊“Add” 按鈕添加2個輸入?yún)?shù),設(shè)置“Prompt”分別為“阻尼系數(shù)”和“無阻尼振蕩頻率”,并設(shè)置“type”欄分別為“popup”和“edit”,對應(yīng)的“Dialog variable”為“zeta”和“wn” ,設(shè)置“Popups”為“0 0.3 0.5 0.707 1 2”,如圖7.48(a)所示。在Initialization選項卡中初始化輸入?yún)?shù),如圖7.48(b)所示。
59、,,,7.6.3 子系統(tǒng)的封裝,在Documentation選項卡中輸入提示和幫助信息,如圖7.48(c)所示。,7.6.3 子系統(tǒng)的封裝,封裝子系統(tǒng)與其他的模塊一樣,有自己的圖標(biāo)、參數(shù)設(shè)置對話框和工作空間,并獨立于MATLAB的工作空間和其他模塊空間,如圖7.49所示。,,7 . 7 用MATLAB命令創(chuàng)建和運(yùn)行Simulink模型,1.sim命令sim在命令窗口可以方便地對模型分析和仿真。語法:[t,x,y]=sim(&
60、#39;model',timespan,options,ut) %利用輸入?yún)?shù)進(jìn)行仿真,輸出矩陣[t,x,y1,y2, …]=sim('model',timespan,options,ut)%利用輸入?yún)?shù)進(jìn)行仿真,逐個輸出,,,7 . 7 用MATLAB命令創(chuàng)建和運(yùn)行Simulink模型,【例7.12】 根據(jù)方程組 由狀態(tài)方程建立系統(tǒng)模型,輸入u為階躍信號,顯示其輸出波形,系統(tǒng)模型圖如圖7.5
61、0所示。>> k1=4;>> k2=2;>> k3=0.5;>> [t,x,y]=sim('Ex0711',[0,15]);%運(yùn)行模型>> plot(t,x),,,7 . 7 用MATLAB命令創(chuàng)建和運(yùn)行Simulink模型,2.simset命令simset命令用來為sim函數(shù)建立或編輯仿真參數(shù)或規(guī)定算法,并把設(shè)置結(jié)果保存在一個結(jié)構(gòu)變量中。語
62、法:OPTIONS = simset('NAME1',VALUE1,'NAME2',VALUE2,...)%設(shè)置屬性的屬性值【例7.12續(xù)】 修改仿真的參數(shù),采用ode23解法器仿真。>> opts=simset('solver','ode23');>> [t,x,y]=sim('Ex0711',[0,15]);3.si
63、mget命令simget命令用來獲得模型的參數(shù)設(shè)置值。語法:Value = simget(MODEL,property)%獲取屬性值,,7 . 7 用MATLAB命令創(chuàng)建和運(yùn)行Simulink模型,4.linmod命令linmod命令用來運(yùn)行模型并獲得其狀態(tài)空間的數(shù)學(xué)模型。語法:[A,B,C,D]=linmod('SYS')【例7.12續(xù)】 獲取本系統(tǒng)的數(shù)學(xué)模型參數(shù),得出傳遞函數(shù)表達(dá)式。>
64、;> [A,B,C,D]=linmod('Ex0711_1');%將mdl模型轉(zhuǎn)換成為狀態(tài)空間模型>> [num,den]=ss2tf(A,B,C,D);%將狀態(tài)空間模型轉(zhuǎn)換成傳遞函數(shù)>> G=tf(num,den)Transfer function:s + 2-----s + 1,7 . 7 用MATLAB命令創(chuàng)建和運(yùn)行Simulink模型,獲取系統(tǒng)的數(shù)學(xué)模型需要將該系
65、統(tǒng)的輸入和輸出模塊修改為“In1”和“Out1”,如圖7.51所示。,7 . 8 S函數(shù),7.8.1 S函數(shù)的介紹1.S函數(shù)的作用S函數(shù)的作用如下:? 可以在Simulink中增加一個用戶編寫的通用模塊;? 在Simulink中使用動畫;? 充當(dāng)硬件的驅(qū)動;? 將系統(tǒng)表示成為一系列數(shù)學(xué)方程。2.S函數(shù)的工作原理首先了解一下Simulink模型的結(jié)構(gòu),如圖7.52所示。,,7.8.1 S函數(shù)的介紹,輸入u、輸出y和狀
66、態(tài)x的數(shù)學(xué)關(guān)系為:,,7.8.1 S函數(shù)的介紹,Simulink的仿真過程如圖7.53所示,仿真過程主要由初始化和運(yùn)行兩個過程。圖中的流程中“計算微分”、“計算輸出”和“更新離散狀態(tài)”對應(yīng)于上面的輸入、輸出和狀態(tài)的數(shù)學(xué)關(guān)系式。,,,7.8.2 S函數(shù)的編寫,(1)sfuntmpl主函數(shù)。function [sys,x0,str,ts,simStateCompliance] = sfuntmpl(t,x,u,flag)switch
67、 flag,%flag是S函數(shù)的標(biāo)記,指向不同的子函數(shù) case 0,%初始化子函數(shù) [sys,x0,str,ts,simStateCompliance]=mdlInitializeSizes; case 1,%計算微分子函數(shù) sys=mdlDerivatives(t,x,u); case 2,%更新離散狀態(tài)子函數(shù) sys=mdlUpdate(t,x,u);
68、case 3,%計算輸出子函數(shù) sys=mdlOutputs(t,x,u); case 4,%計算下一個采樣時刻點 sys=mdlGetTimeOfNextVarHit(t,x,u); case 9,%結(jié)束仿真 sys=mdlTerminate(t,x,u); otherwise DAStudio.error('Simulink:blocks:unh
69、andledFlag', num2str(flag)); endflag是標(biāo)識S函數(shù)當(dāng)前所處的仿真階段,以便執(zhí)行相應(yīng)的子函數(shù);結(jié)合圖7.53可以看出不同的flag在仿真過程中的執(zhí)行時刻。主函數(shù)sfuntmpl的格式:function [sys,x0,str,ts,simStateCompliance] = sfuntmpl(t,x,u,flag),,7.8.2 S函數(shù)的編寫,(2)初始化函數(shù)mdlInitializeSi
70、zes。function [sys,x0,str,ts,simStateCompliance]=mdlInitializeSizessizes = simsizes;%調(diào)用simsizes函數(shù),用于設(shè)置模塊參數(shù)的結(jié)構(gòu)sizes.NumContStates = 0;%模塊的連續(xù)變量的個數(shù)sizes.NumDiscStates = 0;%模塊的離散變量的個數(shù)sizes.NumOutputs = 0;%%模塊的輸
71、出變量的個數(shù)sizes.NumInputs = 0;%模塊的輸入變量的個數(shù)sizes.DirFeedthrough = 1;%模塊的直通前向通道數(shù),默認(rèn)值為1sizes.NumSampleTimes = 1; %模塊的采樣周期個數(shù),默認(rèn)值為1sys = simsizes(sizes);%給sys賦值x0 = [];%向模塊賦初值,默認(rèn)值為[ ]str = [];%特殊保留變量ts =
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- simulink交互式仿真集成環(huán)境
- 第7章 環(huán)境監(jiān)控計劃
- 第7章人的作業(yè)環(huán)境
- 創(chuàng)業(yè)計劃第7章 環(huán)境管理
- simulink仿真基礎(chǔ)
- 第7章 綠化及環(huán)境保護(hù)
- 第7章
- 第7章_萃取
- 第7章、暗器
- 第7、8章
- 第7章 顏色
- 第7章.doc
- 第7章 墻體
- 基于simulink的svpwm仿真
- simulink仿真演示外文翻譯
- 實驗8 simulink仿真-答案
- carsim與simulink聯(lián)合仿真
- simulink仿真簡介【文獻(xiàn)綜述】
- simulink及閉環(huán)系統(tǒng)仿真
- carsim與simulink聯(lián)合仿真
評論
0/150
提交評論