- 機電系統(tǒng)聯(lián)合仿真與集成優(yōu)化案例解析
- 李劍峰等編著
- 802字
- 2018-12-29 16:02:25
第2章 常用分析軟件介紹
本章將對機械、控制、液壓等不同領(lǐng)域常用的幾種商用分析軟件進行簡單介紹,這幾種典型分析軟件也是本書后續(xù)章節(jié)需要用到的。本書所有實例均可以在MATLAB 2007a、ADAMS 2005、RecurDyn 6.3、AMESim 7A、iSIGHT 9.0以上版本軟件調(diào)試通過。
2.1 MATLAB軟件介紹
2.1.1 MATLAB的發(fā)展歷程和影響
在20世紀(jì)70年代后期,時任美國新墨西哥大學(xué)計算機科學(xué)系主任的Cleve Moler教授為了減輕學(xué)生的編程負(fù)擔(dān),為學(xué)生設(shè)計了一組調(diào)用LINPACK和EISPACK庫程序的“通俗易用”的接口,此即用Fortran編寫的萌芽狀態(tài)的MATLAB。MATLAB名字由MATrix和LABoratory兩詞的前三個字母組合而成。
經(jīng)過幾年的校際流傳,在Little的推動下,由Little、Moler、Steve Bangert合作,于1984年成立了MathWorks公司,并把MATLAB正式推向市場。此后,MATLAB的內(nèi)核采用C語言編寫,還新增了數(shù)據(jù)圖視功能。
MATLAB以軟件形式出現(xiàn)后,僅短短幾年,就以其良好的開放性和運行的可靠性,使原先控制領(lǐng)域里的封閉式軟件包(如英國的UMIST,瑞典的LUND和SIMNON,德國的KEDDC)紛紛淘汰。在時間進入20世紀(jì)90年代的時候,MATLAB已經(jīng)成為國際控制界認(rèn)可的標(biāo)準(zhǔn)計算軟件。
20世紀(jì)90年代初期,在國際上30多個數(shù)學(xué)類科技應(yīng)用軟件中,MATLAB在數(shù)值計算方面獨占鰲頭,而Mathematica和Maple則分居符號計算軟件的前兩名。
MathWorks公司于1993年推出了適用于Windows操作系統(tǒng)的MATLAB 4.0版本,4.x版在繼承和發(fā)展其原有的數(shù)值計算和圖形可視能力的同時,開發(fā)了一些新的工具包。
(1)推出了Simulink。這是一個交互式操作的動態(tài)系統(tǒng)建模、仿真、分析集成環(huán)境。它提供了圖形化的求解各種數(shù)學(xué)模型的工具。
(2)開發(fā)了能夠與外部進行直接數(shù)據(jù)交換的組件,使MATLAB具有進行實時數(shù)據(jù)分析、處理和硬件開發(fā)的能力。
(3)推出了符號計算工具包。1993年,MathWorks公司從加拿大滑鐵盧大學(xué)購得Maple的使用權(quán),以Maple為“引擎”開發(fā)了Symbolic Math Toolbox 1.0。
1997年春,MATLAB 5.0版問世,與4.x相比,現(xiàn)今的MATLAB擁有更豐富的數(shù)據(jù)類型和結(jié)構(gòu)、更友好的面向?qū)ο箝_發(fā)工具箱。從2006年開始MATLAB改為每年的上下半年出兩個版本,即MATLAB 2006a和MATLAB 2006b。
在國際學(xué)術(shù)界和大學(xué),MATLAB都得到了廣泛的應(yīng)用,在大學(xué)教科書中,如應(yīng)用代數(shù)、數(shù)理統(tǒng)計、自動控制、數(shù)字信號處理、模擬與數(shù)字通信等課程的教科書都把MATLAB作為學(xué)習(xí)內(nèi)容,可以說MATLAB已經(jīng)成為工科專業(yè)碩士生、博士生必須掌握的基本工具。
在眾多工業(yè)部門和設(shè)計研究單位,MATLAB被認(rèn)為是進行開發(fā)研究的首選軟件工具。如美國National Instruments公司信號測量、分析軟件LabVIEW,Cadence公司信號和通信分析設(shè)計軟件SPW等,或者利用MATLAB進行二次開發(fā),或者以MATLAB為主要支撐。又如HP公司的VXI硬件,TM公司的DSP,Gage公司的各種硬卡、儀器等都支持MATLAB的直接應(yīng)用。
2.1.2 MATLAB/Simulink功能簡介
MATLAB是一種用于算法開發(fā)、數(shù)據(jù)可視化、數(shù)據(jù)分析及數(shù)值計算的高級技術(shù)計算語言和交互式環(huán)境,使用MATLAB,可以比使用傳統(tǒng)的編程語言(如C、C++和Fortran)更快地解決工程計算問題。
MATLAB是MATLAB產(chǎn)品家族的基礎(chǔ),它提供了基本的數(shù)學(xué)算法,例如,矩陣運算、數(shù)值分析算法,MATLAB集成了二維和三維圖形功能,以完成相應(yīng)數(shù)值可視化的工作,并且提供了一種交互式的高級編程語言——M語言,利用M語言可以通過編寫腳本或者函數(shù)文件實現(xiàn)用戶自己的算法。MATLAB Compiler是一種編譯工具,它能夠?qū)⒛切㎝語言編寫的函數(shù)文件編譯生成為函數(shù)庫、可執(zhí)行文件COM組件等。這樣就可以擴展MATLAB的功能,使MATLAB能夠同其他高級編程語言(如C/C++語言)進行混合應(yīng)用,取長補短,以提高程序的運行效率,豐富程序開發(fā)的手段。利用M語言還開發(fā)了相應(yīng)的MATLAB專業(yè)工具箱函數(shù)供用戶直接使用,這些工具箱應(yīng)用的算法是開放的、可擴展的,用戶不僅可以查看其中的算法,還可以針對一些算法進行修改,甚至允許開發(fā)自己的算法擴充工具箱的功能。目前,MATLAB產(chǎn)品的工具箱有40多個,分別涵蓋了數(shù)據(jù)獲取、科學(xué)計算、控制系統(tǒng)設(shè)計與分析、數(shù)字信號處理、數(shù)字圖像處理、金融財務(wù)分析以及生物遺傳工程等專業(yè)領(lǐng)域。
MATLAB的應(yīng)用范圍非常廣,包括信號和圖像處理、通信、控制系統(tǒng)設(shè)計、測試和測量、財務(wù)建模和分析,以及計算生物學(xué)等眾多應(yīng)用領(lǐng)域。附加的工具箱(單獨提供的專用MATLAB函數(shù)集)擴展了MATLAB環(huán)境,以解決這些應(yīng)用領(lǐng)域內(nèi)特定類型的問題。
目前,MATLAB產(chǎn)品族可以用來進行以下工作:
(1)數(shù)值分析;
(2)數(shù)值和符號計算;
(3)工程與科學(xué)繪圖;
(4)控制系統(tǒng)的設(shè)計;
(5)數(shù)字圖像處理;
(6)數(shù)字信號處理;
(7)通信系統(tǒng)設(shè)計與仿真;
(8)財務(wù)與金融工程。
Simulink是MATLAB最重要的組件之一,它提供一個動態(tài)系統(tǒng)建模、仿真和綜合分析的集成環(huán)境,2.1.4節(jié)將單獨介紹。
2.1.3 MATLAB功能特點
1.數(shù)學(xué)運算功能強大
MATLAB可用于線性代數(shù)中的所有向量、矩陣相關(guān)運算,數(shù)值分析中的線性和非線性方程組求解,常微分方程組和偏微分方程組的數(shù)值計算等。MATLAB數(shù)值運算的每個元素都可看做復(fù)數(shù),運算包括加、減、乘、除、函數(shù)運算等;通過MATLAB的符號工具箱,可以解決在數(shù)學(xué)、應(yīng)用科學(xué)和工程計算領(lǐng)域中常遇到的符號計算問題,因此幾乎所有的工程領(lǐng)域都可以看到MATLAB的應(yīng)用。
如,做矩陣乘法 c=ab,若采用其他高級語言實現(xiàn),則需要調(diào)用子程序,或編寫煩瑣的多重循環(huán)來實現(xiàn),在MATLAB中則直接輸入
a=[12;34]; b=[123;456]; c=ab
短短簡明的三條語句就可以計算出結(jié)果。
2.編程效率高
MATLAB語言規(guī)則與書寫數(shù)學(xué)公式相似,命令表達方式與標(biāo)準(zhǔn)的數(shù)學(xué)表達式非常相近。MATLAB既有基本的庫函數(shù),又有大量針對各專業(yè)應(yīng)用的工具箱,使MATLAB適用于不同領(lǐng)域。這些庫函數(shù)和工具箱都可以直接調(diào)用,因而使用非常方便,甚至許多專用工具箱都已做成交互式的界面,更加方便用戶的使用。
MATLAB的Notebook為用戶提供了強大的文字處理功能,允許用戶從Word訪問MATLAB的數(shù)值計算和可視化結(jié)果。
如系統(tǒng)傳遞函數(shù)為,求階躍響應(yīng)(圖2.1)。在MATLAB中輸入以下語句,立即可以求出結(jié)果
num=[1 2] den=[1 2 3] G=tf(num,den) step(G)

圖2.1 階躍響應(yīng)
3.強大的聯(lián)機幫助功能
當(dāng)用戶有了明確的問題定義,要想在MATLAB中找到相應(yīng)的解決方法非常容易,只要在幫助中搜索相應(yīng)問題關(guān)鍵字,就可以找到相關(guān)內(nèi)容。MATLAB的幫助不僅僅提供解決方法的簡明扼要的理論知識,還會有簡單的使用例題讓使用者模仿操作,進一步還有各學(xué)科領(lǐng)域、各種工具的DEMO,這是一般軟件無法比擬的。
2.1.4 Simulink簡介及特點
Simulink是MathWorks公司隨MATLAB一道發(fā)行的功能非常強大的動態(tài)系統(tǒng)建模和仿真通用軟件包,該軟件為用戶的建模和仿真過程提供了完善、靈活的可視化設(shè)計和調(diào)試環(huán)境,并且包含豐富的基本功能模塊庫和眾多專業(yè)領(lǐng)域的工具箱。
Simulink提供了一個建立動態(tài)系統(tǒng)模型方塊圖的圖形用戶接口(GUI),這個創(chuàng)建過程只要單擊和拖動鼠標(biāo)操作就能完成,特別對于復(fù)雜系統(tǒng)建模更快捷,而且用戶可以立即看到系統(tǒng)的仿真結(jié)果,并且Simulink還提供了虛擬現(xiàn)實工具箱,如圖2.2所示,用戶可以采用數(shù)學(xué)模型直接驅(qū)動幾何模型,進行所需的各種動畫演示,使仿真更形象、逼真。
Simulink可以處理的系統(tǒng)包括線性、非線性系統(tǒng);離散、連續(xù)及混合系統(tǒng);單任務(wù)、多任務(wù)離散事件系統(tǒng)。
Simulink模塊庫按功能可以分為以下8類子庫:
(1)Continuous(連續(xù)模塊)。
(2)Discrete(離散模塊)。
(3)Function & Tables(函數(shù)和平臺模塊)。
(4)Math(數(shù)學(xué)模塊)。
(5)Nonlinear(非線性模塊)。
(6)Signals & Systems(信號和系統(tǒng)模塊)。
(7)Sinks(接收器模塊)。
(8)Sources(信號源模塊)。

圖2.2 Simulink模型驅(qū)動的虛擬現(xiàn)實工具箱
Simulink的主要特點有如下三點。
1)交互式的圖形編輯器用于組合和管理直觀的模塊圖
用戶只需要知道系統(tǒng)原理的數(shù)學(xué)方程就可以搭建系統(tǒng)仿真模型,無須編程,有成熟高效的求解算法庫,直接從中選擇合適的求解算法即可。
如微分方程 ′y=ty|t=0=0,若采用數(shù)值方法編程求解,則需編寫或調(diào)用求解微分方程的數(shù)值算法,但在Simulink中只需要建立以下模型,就可以得到形象的輸出,如圖2.3所示。

圖2.3 模型及解
2)提供API用于與其他仿真程序的連接或與手寫代碼集成
支持M語言和C語言方式的功能模塊擴展,提供了S函數(shù)模塊,該模塊可以采用Fortran、C或C++語言或M語言編寫,S函數(shù)使Simulink建模方式更靈活,具有更強的復(fù)雜系統(tǒng)建模功能,可以生成實時仿真代碼,直接用于半實物仿真。
3)豐富的可擴充的預(yù)定義模塊庫
Simulink具有開放式結(jié)構(gòu),用戶可以自定義模塊庫,擁有自己的圖標(biāo),同時Simulink還具有功能強大的各種工具箱,如神經(jīng)網(wǎng)絡(luò),模糊數(shù)學(xué),控制系統(tǒng)開發(fā),圖像處理等。