本系列教程來(lái)源于出版書籍《基于MATLAB編程基礎(chǔ)與典型應(yīng)用書籍》今妄,如涉及版權(quán)問(wèn)題团滥,請(qǐng)聯(lián)系:156204968@qq.com昏兆。 出版社:人民郵電出版社枫虏, 頁(yè)數(shù):525。
本系列教程目前基于MATLABR2006a,可能對(duì)于更高級(jí)版本的功能和函數(shù)有差異隶债,教程中如有問(wèn)題腾它,請(qǐng)聯(lián)系:156204968@qq.com
Simulink工具箱包含大量的動(dòng)態(tài)仿真庫(kù),能夠?qū)?shí)際系統(tǒng)進(jìn)行動(dòng)態(tài)仿真死讹,而且可以非常方便地實(shí)現(xiàn)Simulink與Matlab之間的交互操作瞒滴,使用Matlab命令行進(jìn)行Simulink模型的仿真,數(shù)據(jù)交換等赞警。同時(shí)可以編寫M函數(shù)或者S函數(shù)進(jìn)行復(fù)雜系統(tǒng)的Simulink仿真妓忍。本章主要介紹Simulink建模與仿真的基本知識(shí)以及應(yīng)用實(shí)例分析。
15.1 Simulink簡(jiǎn)介
Simulink是一個(gè)用來(lái)進(jìn)行動(dòng)態(tài)系統(tǒng)建模仅颇、仿真和分析的軟件包单默。Simulink提供了大量的仿真元件庫(kù),非常方便搭建忘瓦、分析和仿真各種動(dòng)態(tài)系統(tǒng)搁廓,包括連續(xù)系統(tǒng)、離散系統(tǒng)和混合系統(tǒng)耕皮。Simulink交互式的開(kāi)發(fā)界面方便用戶直接拖放境蜕,連接元件,設(shè)置模塊屬性和仿真參數(shù)凌停,實(shí)現(xiàn)動(dòng)態(tài)系統(tǒng)的建模仿真粱年。同時(shí),Simulink強(qiáng)大的擴(kuò)展功能罚拟,包括M文件編程技術(shù)台诗,S-函數(shù)編程級(jí)數(shù),子系統(tǒng)創(chuàng)建封裝技術(shù)等方便用戶開(kāi)發(fā)自己的仿真工具箱赐俗;Simulink中集成了大量的專業(yè)模塊庫(kù)拉队,包括信號(hào)處理DSP模塊庫(kù),電力系統(tǒng)仿真模塊庫(kù)阻逮,通信系統(tǒng)模塊庫(kù)等粱快,廣泛地應(yīng)用與社會(huì)各領(lǐng)域中。綜合起來(lái)叔扼,Simulink工具箱具備以下強(qiáng)大的功能事哭。
(1)優(yōu)越的交互式界面,操作簡(jiǎn)單
Simulink模塊庫(kù)瀏覽窗口提供了大量的仿真元件庫(kù)以及其他專業(yè)模塊庫(kù)瓜富,用戶只需要啟動(dòng)Simulink仿真環(huán)境鳍咱,在Simulink Library Browser的窗口選擇需要的模塊,用鼠標(biāo)拖放元件与柑,然后連接流炕,就可以建立仿真模型澎现,同時(shí)子系統(tǒng)概念可以幫助用戶對(duì)獨(dú)立的仿真功能模塊進(jìn)行封裝,使系統(tǒng)模型更加簡(jiǎn)潔清晰每辟。這種簡(jiǎn)單的元件拖放剑辫,連接,仿真的過(guò)程渠欺,使Simulink建模變得非常容易直觀妹蔽。
(2)豐富的模塊庫(kù),應(yīng)用領(lǐng)域廣泛
Simulink仿真環(huán)境下提供了大量的模塊庫(kù)挠将,包括連續(xù)模塊庫(kù)胳岂、離散模塊庫(kù)、非線性模塊庫(kù)舔稀、信號(hào)與系統(tǒng)模塊庫(kù)乳丰、數(shù)學(xué)模塊庫(kù)、子系統(tǒng)模塊庫(kù)内贮、輸入輸出模塊庫(kù)和函數(shù)查表模塊庫(kù)产园。通過(guò)使用這些模塊庫(kù),能夠非常輕松地描述實(shí)際物理模型夜郁。除了Simulink工具箱外什燕,Simulink仿真開(kāi)發(fā)環(huán)境集成了大量專業(yè)模塊庫(kù),包括數(shù)字信號(hào)處理模塊庫(kù)竞端、通信系統(tǒng)模塊庫(kù)屎即、控制系統(tǒng)模塊庫(kù)、神經(jīng)網(wǎng)絡(luò)系統(tǒng)模塊庫(kù)事富、電力系統(tǒng)仿真模塊庫(kù)等技俐,使Simulink的應(yīng)用領(lǐng)域幾乎擴(kuò)展到工業(yè)生產(chǎn)的各行各業(yè),包括通訊衛(wèi)星系統(tǒng)统台、航空航天系統(tǒng)雕擂、汽車系統(tǒng)、金融系統(tǒng)饺谬、電機(jī)系統(tǒng)和控制系統(tǒng)等。
(3)模塊庫(kù)易于擴(kuò)展谣拣,移植性好
Simulink仿真平臺(tái)中集成了大量的模塊庫(kù)募寨,能夠滿足一般用戶的仿真需求。同時(shí)Simulink子系統(tǒng)的概念可以方便地實(shí)現(xiàn)模塊庫(kù)擴(kuò)展森缠。在一些大型系統(tǒng)仿真中拔鹰,仿真模型元件眾多,此時(shí)需要建立各種獨(dú)立功能模塊子系統(tǒng)贵涵,并進(jìn)行封裝列肢,使之成為一個(gè)獨(dú)立的功能子模塊恰画,用戶可以將自己建立的子系統(tǒng)組成模塊庫(kù),并添加到Simulink仿真平臺(tái)的庫(kù)瀏覽窗口中瓷马,方便使用拴还。對(duì)于一些復(fù)雜系統(tǒng),Simulink仿真環(huán)境下可以使用S-函數(shù)來(lái)實(shí)現(xiàn)欧聘,它可以使用Matlab片林,C,C++怀骤,F(xiàn)ortran和Ada等語(yǔ)言來(lái)編寫费封,實(shí)現(xiàn)連續(xù)系統(tǒng)、離散系統(tǒng)和混合系統(tǒng)等蒋伦,這些不同語(yǔ)言下的相關(guān)數(shù)值算法弓摘,不用修改就可以直接移植到Simulink開(kāi)發(fā)環(huán)境下,因此模塊庫(kù)的移植性非常好痕届。
(4)仿真手段靈活韧献,接口豐富
在Simulink仿真環(huán)境下,仿真手段靈活爷抓,一方面可以通過(guò)交互式界面菜單按鈕的使用進(jìn)行系統(tǒng)模型仿真势决,同時(shí)也可以通過(guò)命令行形式進(jìn)行模型仿真。交互式界面的仿真方法簡(jiǎn)單快捷蓝撇,但是當(dāng)需要對(duì)仿真模型進(jìn)行重復(fù)仿真果复,或者仿真模型中模塊參數(shù)動(dòng)態(tài)變化等情況下,這種交互式操作的仿真手段帶來(lái)極大不便渤昌,于是命令行仿真手段凸現(xiàn)優(yōu)勢(shì)虽抄,通過(guò)命令行仿真,可以實(shí)現(xiàn)動(dòng)態(tài)改變模型參數(shù)独柑,進(jìn)行多次模型的重復(fù)仿真和數(shù)據(jù)分析等迈窟。在Simulink仿真環(huán)境下,與Matlab數(shù)據(jù)交換方式靈活忌栅,非常方便用戶對(duì)仿真結(jié)果進(jìn)行數(shù)據(jù)整理分析车酣。
15.2 Simulink啟動(dòng)和文件建立
在了解了Simulink基本組成和功能介紹后,可以利用Simulink仿真平臺(tái)建立仿真模型對(duì)實(shí)際物理模型進(jìn)行仿真索绪。本節(jié)將主要介紹Simulink仿真平臺(tái)的啟動(dòng)湖员,仿真模型的建立以及Simulink庫(kù)文件的建立。
15.2.1 Simulink的啟動(dòng)
在啟動(dòng)Simulink仿真環(huán)境前瑞驱,應(yīng)該首先啟動(dòng)Matlab娘摔。在Matlab工作環(huán)境中,啟動(dòng)Simulink主要有以下三種方法唤反。
(1)用命令行Simulink啟動(dòng)Simulink開(kāi)發(fā)環(huán)境凳寺,在Matlab的命令行窗口(Command Window)中直接鍵入命令:
>> simulink
回車(Enter)后就會(huì)新開(kāi)啟一個(gè)Simulink Library Browser的窗口鸭津,如圖15.2所示。
(2) 第二種方法是使用Matlab工具欄按鈕
啟動(dòng)Simulink仿真平臺(tái)肠缨。如圖15.2所示.
(3)用命令行Simulink3啟動(dòng)Simulink開(kāi)發(fā)環(huán)境逆趋,在Matlab的命令窗口(Command Window)中直接鍵入命令:
>> Simulink3
回車(Enter)后就會(huì)啟動(dòng)一個(gè)標(biāo)題為L(zhǎng)ibrary: Simulink3的新窗口,如圖15.3所示怜瞒。從圖中可以看到Simulink庫(kù)中的一些主要模塊庫(kù)父泳,雙擊模塊庫(kù),即可看到對(duì)應(yīng)模塊庫(kù)中的元件列表吴汪。例如鼠標(biāo)左鍵雙擊連續(xù)模塊庫(kù)(Continuous)惠窄,或者用鼠標(biāo)右鍵的菜單中單擊【Open Block】選項(xiàng),,就可以在新窗口中看到連續(xù)模塊庫(kù)中所包含的模塊元件漾橙,如圖15.4所示杆融。
15.2.2 Mdl文件的建立
如圖15.2所示,啟動(dòng)了Matlab/Simulink仿真平臺(tái)后霜运,需要建立一個(gè)空白的仿真模型脾歇,即.mdl文件。新建一個(gè)空白的系統(tǒng)仿真模型可以有以下幾個(gè)方法:
(1)如圖15.2所示淘捡,單擊主窗口【File】菜單下的【New】藕各,選擇【Model】選項(xiàng),或者在Simulink主窗口下按CTRL+N的快捷鍵同樣可以創(chuàng)立空白的仿真模型焦除。
(2)在Simulink主窗口中工具欄中的建立一個(gè)空白的仿真文檔激况,用打開(kāi)一個(gè)當(dāng)前路徑下保存過(guò)的仿真模型。
(3)在Matlab主窗口的菜單欄【File】下的【New】膘魄,選擇【Model】選項(xiàng)乌逐。
圖15.5為新建的仿真模型,按CTRL+S快捷鍵或者選擇菜單欄【File】菜單下的【Save】選項(xiàng)创葡,,輸入仿真模型的文件名浙踢,然后設(shè)置模塊參數(shù)與系統(tǒng)的仿真參數(shù),就可以完成一個(gè)簡(jiǎn)單系統(tǒng)的仿真了灿渴。在這個(gè)仿真模型中洛波,使用了輸入源模塊庫(kù)(Sources)中的正弦波發(fā)生器模塊(Sine Wave),數(shù)學(xué)模塊庫(kù)(Math operations)中的絕對(duì)值模塊(Abs)骚露,以及輸出模塊庫(kù)(Sink)中的示波器模塊(Scope)蹬挤。三個(gè)模塊的功能敘述以及參數(shù)設(shè)置如下:
(1)正弦波發(fā)生器模塊(Sine Wave):用來(lái)產(chǎn)生一定幅值和一定頻率的正弦波信號(hào)
(2)取絕對(duì)值模塊(Abs):實(shí)現(xiàn)絕對(duì)值功能,屬性設(shè)置使用默認(rèn)設(shè)置愕鼓。
(3)示波器模塊(Scope):示波器默認(rèn)情況下只有一個(gè)輸入端钙态,但很多情況下為了觀測(cè)多路不同的輸出信號(hào),需要增加示波器的輸入端口菇晃,這時(shí)需要設(shè)置示波器的屬性册倒。雙擊Scope模塊,單擊工具欄按鈕磺送,彈出如圖15.7所示的示波器參數(shù)設(shè)置窗口驻子。
在【General】屬性頁(yè),根據(jù)需要輸入端口數(shù)量設(shè)置Number of axes估灿。Time Range編輯框中輸入示波器時(shí)間軸的顯示范圍崇呵。在【Data history】屬性頁(yè)中,去掉Limit data points to last選項(xiàng)馅袁,使信號(hào)能夠完全顯示與示波器中域慷。如果需要對(duì)示波器的數(shù)據(jù)進(jìn)行處理,可以選擇Save data to workspace選項(xiàng)司顿,定義保存變量的名稱芒粹,以及數(shù)據(jù)類型。在保存示波器數(shù)據(jù)時(shí)大溜,提供三種不同的數(shù)據(jù)格式:第一種是Structure with time化漆;第二種是Struct;第三種是Array钦奋。下面章節(jié)中將詳細(xì)介紹這三種不同數(shù)據(jù)類型保存的數(shù)據(jù)形式以及它們之間的差異座云。
(4)當(dāng)完成了仿真模型所有模塊的參數(shù)設(shè)置后,并且正確設(shè)置系統(tǒng)仿真參數(shù)付材,就可以進(jìn)行模型的仿真朦拖。在模型窗口(圖15.5所示)中,單擊菜單欄【Simulation】下的【Configuration parameters】選項(xiàng)厌衔,或者按CTRL+E快捷鍵璧帝,即可彈出仿真參數(shù)設(shè)置對(duì)話框,如圖15.8所示富寿。首先在仿真時(shí)間組件中設(shè)置仿真的起始時(shí)間和終止時(shí)間睬隶。在求解組合框中锣夹,首先選擇仿真算法,采用變步長(zhǎng)算法或者定步長(zhǎng)算法苏潜,變步長(zhǎng)算法包括離散算法(discrete)银萍、ode45、 ode23,恤左、ode113,峭梳、ode15s迂猴、 ode23s,、ode23t和ode23tb算法;在定步長(zhǎng)仿真中驳概,包括離散算法派敷、ode1气忠、ode2诫钓、ode3、ode4蹄皱、ode5算法览闰。然后設(shè)置仿真算法步長(zhǎng),包括初始步長(zhǎng)巷折,最小步長(zhǎng)和最大步長(zhǎng)設(shè)置压鉴,以及誤差容忍度的設(shè)置,包括絕對(duì)誤差和相對(duì)誤差設(shè)置锻拘。
當(dāng)仿真模型所有模塊參數(shù)和仿真參數(shù)設(shè)置完成后油吭,就可以進(jìn)行仿真系統(tǒng)的仿真。單擊模型窗口(圖15.5所示)中菜單欄【Simulation】下的【Start】選項(xiàng)署拟,或者按快捷鍵CTRL+T婉宰,或者單擊工具欄按鈕進(jìn)行模型仿真,結(jié)果如圖15.9所示推穷。
示波器在不同保存數(shù)據(jù)格式下心包,數(shù)據(jù)結(jié)構(gòu)不盡相同。當(dāng)數(shù)據(jù)格式設(shè)置為Structure with time時(shí)馒铃,仿真結(jié)束后蟹腾,在命令窗口中輸入:
>> compare_sine
compare_sine =
time: [200001x1 double]
signals: [1x2 struct]
blockName: 'sim_book_1/Scope'
可以看出,示波器保存的是包含時(shí)間和信號(hào)數(shù)據(jù)的結(jié)構(gòu)體区宇,同時(shí)還有示波器模塊的名稱娃殖。而信號(hào)數(shù)據(jù)也是一個(gè)結(jié)構(gòu)體。在命令窗口中輸入:
>> signals_struct=compare_sine.signals
signals_struct =
1x2 struct array with fields:
values
dimensions
label
title
plotStyle
如果要獲取時(shí)間和信號(hào)的數(shù)據(jù)可以分別用以下的命令:
>> time=compare_sine.time;%獲取仿真時(shí)間數(shù)據(jù)
>> pre_signal=compare_sine.signals(1).values;%獲取第一個(gè)信號(hào)的數(shù)據(jù)
>> aft_signal=compare_sine.signals(2).values; %獲取第二個(gè)信號(hào)的數(shù)據(jù)
當(dāng)數(shù)據(jù)格式設(shè)置為Struct時(shí)议谷,仿真結(jié)束后炉爆,在命令窗口中輸入:
>> compare_sine
compare_sine =
time: []
signals: [1x2 struct]
blockName: 'sim_book_1/Scope'
發(fā)現(xiàn)此時(shí)示波器數(shù)據(jù)中時(shí)間數(shù)據(jù)為空集,并沒(méi)有保存時(shí)間的數(shù)據(jù)。信號(hào)數(shù)據(jù)同第一種數(shù)據(jù)格式一種為1x2 struct結(jié)構(gòu)體數(shù)據(jù)芬首。
第三種數(shù)據(jù)結(jié)構(gòu)Array必須是示波器為單輸入時(shí)才能保存為數(shù)組鲫凶。在多輸入情況下,必須以結(jié)構(gòu)體形式保存數(shù)據(jù)衩辟。
1.示波器圖形編輯和數(shù)據(jù)處理方法
從圖15.9可以看出,示波器仿真結(jié)果無(wú)法直接進(jìn)行編輯波附,而且以黑色為圖形背景艺晴,不利于工程論文圖形美觀需求。因此需要對(duì)示波器圖形或者數(shù)據(jù)進(jìn)行重新處理掸屡。以下提供5種基本的處理方式封寞。
(1)按下鍵盤的屏幕打印按鈕【PrintScreen】,然后粘貼到Windows位圖編輯器仅财,即Windows下自帶的畫圖板軟件狈究,選擇圖像單擊右鍵,選擇【反色】即可盏求;
(2)在Scope屬性頁(yè)中的Data history屬性頁(yè)抖锥,選中 Save Data to Workplace單選框,然后在Variable Name編輯框中指定變量名碎罚,F(xiàn)ormat下拉按鈕下選擇示波器保存數(shù)據(jù)類型磅废,將仿真數(shù)據(jù)保存在工作窗口下,使用plot命令繪制仿真結(jié)果如圖15.10示荆烈;
(3)直接在模型的輸出信號(hào)線上添加To Workplace模塊拯勉,在工作窗口中將仿真數(shù)據(jù)使用plot命令繪制出來(lái);
(4)直接在模型的輸出信號(hào)線上添加Outport模塊憔购,用plot命令繪制tout和yout宫峦;
(5)仿真模型仿真結(jié)束后,等示波器Scope顯示出來(lái)圖像以后玫鸟,在Matlab的命令行窗口中輸入:
>> set(0,'ShowHiddenHandles','On')
>> set(gcf,'menubar','figure')
單擊菜單欄的【Insert】選項(xiàng)导绷,鼠標(biāo)會(huì)變成十字形狀,然后再圖像的任意一處雙擊左鍵出現(xiàn)一個(gè)對(duì)話框PropertyEditor屎飘,選中style在窗口的右邊會(huì)出現(xiàn)color選項(xiàng)诵次,就可以任意修改波形背景顏色,同時(shí)也可以對(duì)曲線顏色以及坐標(biāo)軸進(jìn)行設(shè)置,結(jié)果如圖15.11所示枚碗。
在命令行窗口中輸入以下繪圖命令逾一,結(jié)果如圖15.10所示。
>> subplot(2,1,1)
>> time=compare_sine.time;
>> pre_signal=compare_sine.signals(1).values;
>> aft_signal=compare_sine.signals(2).values;
>> plot(time,pre_signal)
>> grid on
>> xlabel('Time(sec)');ylabel('original signal')
>> subplot(2,1,2)
>> plot(time,aft_signal)
>> grid on
>> xlabel('Time(sec)');ylabel('absolute signal')
以上通過(guò)一個(gè)簡(jiǎn)單的系統(tǒng)模型演示了Simulink建模與仿真的基本步驟肮雨。相信讀者通過(guò)這一部分的學(xué)習(xí)能夠大致了解一個(gè)Simulink仿真模型建立的步驟遵堵,示波器數(shù)據(jù)圖像化顯示的基本方法,以及仿真數(shù)據(jù)的交互式處理。在后續(xù)章節(jié)中陌宿,會(huì)更加詳細(xì)地介紹Simulink模塊庫(kù)各模塊的功能锡足,使用方法和應(yīng)用場(chǎng)所,通過(guò)更加深入的學(xué)習(xí)壳坪,相信讀者能夠輕松地建立相對(duì)簡(jiǎn)單的Simulink仿真模型舶得。對(duì)于復(fù)雜系統(tǒng),離散-連續(xù)混合系統(tǒng)的仿真爽蝴,在介紹完命令行仿真技術(shù)沐批,S-function建模仿真后,相信讀者能夠針對(duì)一些綜合的復(fù)雜系統(tǒng)蝎亚,進(jìn)行建模和仿真九孩。
作者:德特?cái)?shù)據(jù)
聯(lián)系方式:156204968@qq.com