




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
畢業(yè)設(shè)計(論文)-牛頭刨床六桿機構(gòu)運動分析河南理工大學(xué)本科畢業(yè)設(shè)計,論文,摘要在工程技術(shù)領(lǐng)域,經(jīng)常會遇到一些需要反復(fù)操作,重復(fù)性很高的工作,如果能有一個供反復(fù)操作且操作簡單的專用工具,圖形用戶界面就是最好的選擇。如在本設(shè)計中對于牛頭刨床平面六桿機構(gòu)來說,為了保證結(jié)構(gòu)參數(shù)與運動參數(shù)不同的牛頭刨床的運動特性,即刨刀在切削過程中接近于等速運動從而保證加工質(zhì)量和延長刀具壽命,以及刀具的急回性能從而提高生產(chǎn)率,這樣的問題如果能夠通過設(shè)計一個模型平臺,之后只需改變參量就可以解決預(yù)期的問題,這將大大的提高設(shè)計效率。設(shè)計本設(shè)計中正是通過建立牛頭刨床六桿機構(gòu)的數(shù)學(xué)模型,然后用MATLAB程序出一個友好的人機交互的圖形界面,并將數(shù)學(xué)模型參數(shù)化,使用戶只需改變牛頭刨床的參數(shù)就可以方便的實現(xiàn)運動分析和運動仿真,用戶可以形象直觀地觀察到牛頭刨床的運動軌跡、速度變化及加速度變化規(guī)律。關(guān)鍵詞:牛頭刨床六桿機構(gòu)MATLAB運動仿真程序開發(fā)1河南理工大學(xué)本科畢業(yè)設(shè)計,論文,AbstractIntheengineeringarea,oftenrepeatedlyencounteredsomeoperationalneeds,repetitivehighly,andiftheoperationcanberepeatedforasimpleoperationanddedicatedtoolgraphicaluserinterfaceisthebestchoice.Asintheplanergraphicdesignforsixpolebodies,andcampaignstoensurethestructuralparametersofdifferentparametersplanermovementcharacteristics,planningtoolintheprocessofcuttingclosetoequalcampaigntoensureprocessingqualityandextendedlifecutleryandcutleryrushbacktotheperformanceenhancingproductivity,Ifsuchissuescanbeadoptedtodesignamodelplatformparametercanbechangedonlyaftertheexpectedsettlement,whichwillgreatlyenhancetheefficiencyofthedesign.Itisthroughtheestablishmentofthisdesignplanersixpolebodiesmathematicalmodel,andthenuseMATLABtodeviseproceduresofafriendlyaircraftintheworldgraphicsinterface,andmathematicalmodelsoftheparameters,sothatusersonlyneedtochangetheparametersplanercanfacilitatetherealizationofmovementanalysisandsportssimulation,Userscanvisualimageobservedinplanermovementtrajectories,speedchangesandaccelerationchanges.Keywords:Planer6polebodiesMATLABCampaignsimulationProceduredevelopment.2河南理工大學(xué)本科畢業(yè)設(shè)計,論文,目錄1緒論...............................................................42牛頭刨床六桿機構(gòu)運動分析程序設(shè)計2.1MATLAB介紹................................................52.2MATLAB的特點..............................................62.3用MATLAB處理工程問題優(yōu)缺點................................73牛頭刨床運動分析的模型3.1基本概念與原理...............................................93.2牛頭刨床六桿機構(gòu)的數(shù)學(xué)模型.................................94圖形用戶界面GUI4.1界面設(shè)計的原則.............................................134.2功能要求..................................................164.3界面結(jié)構(gòu)設(shè)計................................................174.4程序框圖的設(shè)計.............................................195運動仿真程序界面設(shè)計與編程實現(xiàn)5.1句柄圖形體系.................................................215.1.1圖形對象、對象句柄和句柄圖形樹結(jié)構(gòu).....................225.1.2對象屬性..............................................235.1.3對象句柄的獲取方法.....................................235.1.4對象句柄的獲取和設(shè)置...................................255.2主界面參數(shù)含義.............................................275.3界面制作步驟................................................276總結(jié).............................................................497致謝..............................................................508參考書目..........................................................519附錄程序源代碼....................................................523河南理工大學(xué)本科畢業(yè)設(shè)計,論文,1緒論1.1本課題的意義機構(gòu)運動分析是不考慮引起機構(gòu)運動的外力的影響,而僅從幾何角度出發(fā),根據(jù)已知的原動件的運動規(guī)律(通常假設(shè)為勻速運動),確定機構(gòu)其它構(gòu)件上各點的位移、速度、加速度,或構(gòu)件的角位移、角速度、角加速度等運動參數(shù)。無論是分析研究現(xiàn)有機械的工作性能,還是優(yōu)化綜合新機械,機構(gòu)運動分析都是十分重要的。通過對機構(gòu)的位移和軌跡分析,可以考察某構(gòu)件能否實現(xiàn)預(yù)定的位置、構(gòu)件上某點能否實現(xiàn)預(yù)定的軌跡要求,可以確定從動件的行程或所需的運動空間,據(jù)此判斷運動中是否發(fā)生碰撞干涉或確定機構(gòu)的外形輪廓尺寸。通過速度和加速度分析可以了解機構(gòu)從動件的速度、加速度的變化規(guī)律能否達到工作要求。而在本設(shè)計課題中通過對機構(gòu)的加速度和速度分析,就可以在設(shè)計牛頭刨床的導(dǎo)桿機構(gòu)時保證刨刀在切削過程中接近于等速運動,從而保證加工質(zhì)量和延長刀具壽命;此外還保證了刀具的急回性能,從而提高了生產(chǎn)率。1.2六桿機構(gòu)的研究現(xiàn)狀:以機電一體化為核心的現(xiàn)代機械系統(tǒng)不斷創(chuàng)新,推動著現(xiàn)代機構(gòu)學(xué)不斷發(fā)展。平面連桿機構(gòu)運動綜合在工程應(yīng)用中有重要的意義,一直為機構(gòu)學(xué)領(lǐng)域的經(jīng)典課題之一。較早時人們主要用幾何圖解法,但是其求解精度和適用范圍都受到了極大的限制。隨著計算機技術(shù)的發(fā)展,在軌跡綜合中引入了計算機,并開始出現(xiàn)代數(shù)法和優(yōu)化法,把機構(gòu)學(xué)問題轉(zhuǎn)化為數(shù)學(xué)問題。1.3本課題的目的本課題的目的是通過編制MATLAB程序,從而設(shè)計出一個用戶界面,用戶可以通過對界面上面參數(shù)的操作而實現(xiàn)對牛頭刨床運動分析和運動仿真,以此觀察牛頭刨床的運動特性是否合乎要求。4河南理工大學(xué)本科畢業(yè)設(shè)計,論文,2MATLAB軟件介紹2.1MATLAB軟件介紹如今,計算機技術(shù)已經(jīng)被應(yīng)用于各行各業(yè),科研和工程計算領(lǐng)域也不例外。對于經(jīng)常需要大量數(shù)據(jù)進行分析處理或者對復(fù)雜問題進行計算求解的科研工作者來說,計算機技術(shù)的引入大大的降低了工作強度,是原本復(fù)雜的工作變得簡單,從而極大的提高了工作效率。隨著科學(xué)研究的不斷深入,以及工程應(yīng)用不斷朝著專業(yè)化、精確化方向發(fā)展,科研工作者以及工程技術(shù)人員對計算機技術(shù)的要求也越來越高。面對越來越繁重的科學(xué)以及工程計算任務(wù),雖然用傳統(tǒng)的c或Fortran語言也能完成任務(wù),但是程序設(shè)計者所承擔的編程工作是極為繁重的,而且要求程序設(shè)計者對算法有比較深入的理解,這就使工作人員不得不將大量的時間和精力放在與研究課題關(guān)系不大的計算編程上來。為了減輕科技工作者的壓力,使工作人員將時間和精力更多的放在建立模型等關(guān)鍵性的工作中,許多公司相繼開發(fā)了一系列的數(shù)學(xué)應(yīng)用軟件,如MATHEMATICA、Maple、MATHCAD以及MATLAB等,其中MATLAB以其強大的功能和極高的編程效率吸引了眾多的用戶。MATLAB是MATRIXLABORATORY(“矩陣實驗室”)的縮寫,是由美國MATHWORKS公司開發(fā)的集數(shù)值計算、符號計算和圖形可視化三大基本功能于一體的,功能強大、操作簡單的語言。是國際公認的優(yōu)秀數(shù)學(xué)應(yīng)用軟件之一。20世紀80年代初期,CleveMoler與JohnLittle等利用C語言開發(fā)了新一代的MATLAB語言,此時的MATLAB語言已同時具備了數(shù)值計算功能和簡單的圖形處理功能。1984年,CleveMoler與JohnLittle等正式成立了MATHWORKS公司,把MATLAB語言推向市場,并開始了對MATLAB工具箱等的開發(fā)設(shè)計。1993年,MATHWORKS公司推出了基于個人計算機的MATLAB4.0版本,到了1997年又推出了MATLAB5.X版本(Release11),并在2000年又推出了最新的MATLAB65河南理工大學(xué)本科畢業(yè)設(shè)計,論文,版本(Release12),如今,MATLAB7.0已經(jīng)問世。現(xiàn)在,MATLAB已經(jīng)發(fā)展成為適合多學(xué)科的大型軟件,在世界各高校,MATLAB已經(jīng)成為線性代數(shù)、數(shù)值分析、數(shù)理統(tǒng)計、優(yōu)化方法、自動控制、數(shù)字信號處理、動態(tài)系統(tǒng)仿真等高級課程的基本教學(xué)工具。特別是最近幾年,MATLAB在我國大學(xué)生數(shù)學(xué)建模競賽中的應(yīng)用,為參賽者在有限的時間內(nèi)準確、有效的解決問題提供了有力的保證。2.2MATLAB軟件的特點MATLAB是一種高度集成化的科學(xué)計算環(huán)境,是集數(shù)值計算和圖形處理等功能于一體的工程計算應(yīng)用軟件。MATLAB不僅可以處理代數(shù)問題和數(shù)值分析問題,而且還具有強大的圖形處理和仿真模擬等功能。MATLAB能夠很好的幫助工程師及科學(xué)家解決實際問題,它經(jīng)過20多年來的不斷完善和改進,已經(jīng)成為公認的優(yōu)秀的數(shù)學(xué)應(yīng)用軟件之一。概括地講,整個MATLAB系統(tǒng)由兩部分組成,即MATLAB內(nèi)核及輔助工具箱,兩者的調(diào)用構(gòu)成了MATLAB的強大功能。MATLAB語言以數(shù)組為基本數(shù)據(jù)單位,包括控制流語句、函數(shù)、數(shù)據(jù)結(jié)構(gòu)、輸入輸出及面向?qū)ο蟮忍攸c的高級語言,它具有以下主要特點:1)MATLAB的程序設(shè)計語言編程效率較高,運算符和庫函數(shù)極其豐富,語言簡潔,編程效率高,MATLAB除了提供和C語言一樣的運算符號外,還提供廣泛的矩陣和向量運算符。利用其運算符號和庫函數(shù)可使其程序相當簡短,兩三行語句就可實現(xiàn)幾十行甚至幾百行C或FORTRAN的程序功能,從而極大的簡化了線性運算,而線性運算是整個數(shù)值計算的基礎(chǔ),所以以矩陣作為基本語言要素可以提高數(shù)值計算的編程效率。MATLAB本身擁有豐富的庫函數(shù),并具有結(jié)構(gòu)化的流程控制語句和運算符,用戶可以在使用的過程中方便自如的使用。2)既具有結(jié)構(gòu)化的控制語句(如for循環(huán)、while循環(huán)、break語句、if語句和switch語句),又有面向?qū)ο蟮木幊烫匦浴?河南理工大學(xué)本科畢業(yè)設(shè)計,論文,3)圖形功能強大。它既包括對二維和三維數(shù)據(jù)可視化、圖像處理、動畫制作等高層次的繪圖命令,也包括可以修改圖形及編制完整圖形界面的、低層次的繪圖命令。4)功能強大的工具箱。工具箱可分為兩類:功能性工具箱和學(xué)科性工具箱。功能性工具箱主要用來擴充其符號計算功能、圖示建模仿真功能、文字處理功能以及與硬件實時交互的功能。而學(xué)科性工具箱是專業(yè)性比較強的,如優(yōu)化工具箱、統(tǒng)計工具箱、控制工具箱、小波工具箱、圖象處理工具箱、通信工具箱等。5)易于擴充。除內(nèi)部函數(shù)外,所有MATLAB的核心文件和工具箱文件都是可讀可改的源文件,用戶可修改源文件和加入自己的文件,它們可以與庫函數(shù)一樣被調(diào)用。當然,任何事物都不是十全十美的。與C、Fortran等傳統(tǒng)的程序設(shè)計語言相比,MATLAB的程序設(shè)計語言的一個顯著缺點即使循環(huán)代碼執(zhí)行效率較低,這是與其執(zhí)行方式直接相關(guān)的。MATLAB編寫的程序在應(yīng)用的過程中為解釋執(zhí)行,既不需要編譯生成也不生成可執(zhí)行文件,而是解釋一句,執(zhí)行一句,其速度是可想而知的了。當然這個問題也不是不可以解決的,由于MATLAB以矩陣作為基本的程序設(shè)計語言要素,對于在c、Fortran的那個編程語言中需要使用循環(huán)來解決的問題,MATLAB程序設(shè)計語言中巧妙的利用矩陣的特點,就可以避免使用循環(huán)代碼。所以,通過對MATLAB的深入學(xué)習(xí),提高編程技巧,完全可以做到揚長避短,并充分發(fā)揮MATLAB語言的強大功能。目前,MATLAB已經(jīng)成為國際上公認的優(yōu)秀數(shù)學(xué)應(yīng)用軟件之一。2.3用MATLAB處理工程問題優(yōu)缺點MATLAB是MATHWOTKS公司于1982年推出的一套高性能的數(shù)值計算和可視化軟件。它集數(shù)值分析、矩陣運算、信號處理和圖形顯示于一體,構(gòu)成了一個方便、界面友好的用戶環(huán)境。它還包括了TOOLBOX(工具箱)的各類問題的求解工具,可用來求解特定學(xué)科的問題。其特點是:7河南理工大學(xué)本科畢業(yè)設(shè)計,論文,(1)可擴展性:MATLAB最重要的特點是易于擴展,它允許用戶自行建立指定功能的M文件。對于一個從事特定領(lǐng)域的工程師來說,不僅可利用MATLAB所提供的函數(shù)及基本工具箱函數(shù),還可方便地構(gòu)造出專用的函數(shù),從而大大擴展了其應(yīng)用范圍。當前支持MATLAB的商用Toolbox(工具箱)有數(shù)百種之多。而由個人開發(fā)的Toolbox則不可計數(shù)。(2)易學(xué)易用性:MATLAB不需要用戶有高深的數(shù)學(xué)知識和程序設(shè)計能力,不需要用戶深刻了解算法及編程技巧。(3)高效性:MATLAB語句功能十分強大,一條語句可完成十分復(fù)雜的任務(wù)。如FFT語句可完成對指定數(shù)據(jù)的快速傅立葉變換,這相當于上百條C語言語句的功能。它大大加快了工程技術(shù)人員從事軟件開發(fā)的效率。據(jù)MATHWOKS公司聲稱,MATLAB軟件中所包含的MATLAB源代碼相當于70萬行C代碼。由于MATLAB具有如此之多的特點,在歐美高等院校,MATLAB已成為應(yīng)用于線性代數(shù)、自動控制理論、數(shù)理統(tǒng)計、數(shù)字信號處理、時間序列分析、動態(tài)系統(tǒng)仿真等高級課程的基本教學(xué)工具;在研究單位、工業(yè)部門,MATLAB也被廣泛用于研究和解決各種工程問題。當前在全世界有超過40萬工程師和科學(xué)家使用它來分析和解決問題。然而MATLAB自身所存在的某些缺點限制了它的應(yīng)用范圍。(1)MATLAB是一種解釋性語言,因此它的實時效率是相當差的。(2)MATLAB程序不能脫離其環(huán)境運行,因為MATLAB不是計算機語言,雖然如今它已經(jīng)可以進行編譯,但是還不太方便。8河南理工大學(xué)本科畢業(yè)設(shè)計,論文,3牛頭刨床運動分析的模型3.1基本概念與原理機構(gòu)運動分析的任務(wù)是在已知機構(gòu)尺寸及原動件運動規(guī)律的情況下,確定機構(gòu)中其他構(gòu)件上某些點的軌跡、位移、速度、加速度和構(gòu)件的角位移、角速度及角加速度。上述這些內(nèi)容,不論是設(shè)計新的機器,還是為了了解現(xiàn)有機械的運動性能,都是十分必要的,而且它還是研究機械動力性能的必要基礎(chǔ)和前提。對于牛頭刨床來說,其刨刀在工作行程中應(yīng)該接近等速,,而回程速度卻應(yīng)高于前者速度,從而提高效率。為了確定牛頭刨床的設(shè)計是否滿足要求,就必須對其進行運動分析。機構(gòu)運動分析的方法很多,主要有圖解法和解析法。當需要簡捷直觀地了解機構(gòu)的某個或某幾個位置的運動特性時,采用圖解法比較方便,而且精度也能滿足實際問題的要求。而當需要精確地知道或要了解機構(gòu)在整個運動循環(huán)過程中的運動特性時,采用解析法并借助于計算機,不僅可以獲得很高的計算精度及一系列位置的分析結(jié)果,并能繪出機構(gòu)相應(yīng)的運動線圖,同時還可以把機構(gòu)分析和機構(gòu)綜合問題聯(lián)系起來,以便于機構(gòu)的優(yōu)化設(shè)計。本設(shè)計正是基于這些用MATLAB編程實現(xiàn)牛頭刨床的運動分析以及圖解法無法實現(xiàn)的運動仿真。3.2牛頭刨床的數(shù)學(xué)模型如下圖所示為牛頭刨床的機構(gòu)簡圖。設(shè)已知結(jié)構(gòu)參數(shù)為:L1,L3,L5,G,H,原動件的轉(zhuǎn)角φ1和轉(zhuǎn)速n1。解:如圖,先建立一個直角坐標系,并標出各桿矢及其方位角。其中有四個未知變量φ3,φ5,P及S。為求解需建立兩個封閉矢量方程,為此需利用兩個封閉圖形ABDA及DEFD。1)求φ3、ω3及α3由封閉形ABDA可得9河南理工大學(xué)本科畢業(yè)設(shè)計,論文,………(1)LHP,,1分別用i和j點積上式兩端,有LPcoscos,,,113HLP,,sinsin,,113聯(lián)解上面兩個式子可得:,,,,,arctan[(sin)/cos]HLL31111PL,cos/cos,,113圖3—1牛頭刨床結(jié)構(gòu)模型式(1)對時間t求導(dǎo)數(shù),注意P為變量,有,,tt,,LePePe,,…………(2)11133310河南理工大學(xué)本科畢業(yè)設(shè)計,論文,,可用點積上式兩端以消去,并利用矢量方程解析法,有,e33,PVL,,,,,,,sin()BB231113,nttt用點積(2)兩端可消去,并注意到,則eeeee,,,,P33113,,,,,,,,,LPcos()/331113再將式(2)對時間t求導(dǎo),則有22,,,,,,,,ntntt,,,,LePePePePe,,,,21113333333....nttt,可分別用和點積上式兩端,以消去和,注意,則eeeee,,,,Pe3331133,,,,,,,,,,,,,LPPcos()111332,,,,,,,,,LPsin()2,,,113133,,t22得=aPL,,,,,,,cos()PBB2331113,,,2,,,,,,,,,aLPP[sin()2]/33113132)求s、、VaFF由封閉圖形DEFAD可得………………(3)LLGS,,,35分別用i和j點積上面的式子兩端,有LLScoscos,,,,3355LLGsinsin,,,,3355有上面第二個式子可得,,,,arcsin[(sin)/]GLL5335由上面第一個式子可得11河南理工大學(xué)本科畢業(yè)設(shè)計,論文,SLL,,coscos,,3344對上面的(3)式對時間t取導(dǎo)可得,,,tt,,LeLeSi,,…………..(4)333555點積上式,可得分別用j、e5,,,,,,,,,LLcos/(cos)5533355,SVL,,,,,,,,sin()/cosF33355(4)式對時間t求導(dǎo)可得2,,,,,,,,tntn,,,,LeLeLeLeSi,,,,333333555555分別用就j和點積上面的式子可得e52,,,,,,,,,,,,,,,,,,,(sinsincos)/(cos)LLLL5533355533355,,22SaLLL,,,,,,,[sin()cos()]/cos,,,,,,,,E3335333555512河南理工大學(xué)本科畢業(yè)設(shè)計,論文,4圖形用戶界面GUI用戶界面或接口是指:人與機器之間或程序之間交互作用的工具和方法。如、鍵盤、鼠標、跟蹤球、話筒都可以成為與計算機交換信息的接口。GraphicUserInterface)則是指有窗口、光標、按鍵、圖形用戶界面(GUI:菜單、文字說明等對象構(gòu)成的一個用戶界面。用戶通過一定的方法(如鼠標或鍵盤)選擇、激活這些圖形對象,使計算機產(chǎn)生某種動作或變化,比如實現(xiàn)計算、繪圖等。4.1界面設(shè)計的原則GUI的設(shè)計包括編寫源代碼之前的所有工作。設(shè)計者必須重視設(shè)計工作,不能急于編寫源代碼。否則,編程員思路不清晰,開發(fā)過程中回走很多彎路,因而開發(fā)的效率低下,并且設(shè)計出的GUI也不一定讓人滿意。那么如何進行成功的設(shè)計,就應(yīng)該從以下兩個方面予以考慮:(1)GUI設(shè)計的指導(dǎo)原則(2)GUI設(shè)計應(yīng)遵循的步驟。指導(dǎo)原則:可以用就個字來概括優(yōu)秀的設(shè)計標準:簡潔性、一致性、熟悉性。簡潔性意味著界面簡單明了,直接清晰。擁護可以很快的提取出對自己有用的信息。熟悉性意味著系統(tǒng)設(shè)計時盡量保持與該類流行界面的相似,比如VC的對話框風(fēng)格、視圖的風(fēng)格、MATLAB的Figure風(fēng)格。這樣用戶操作起來就容易上手,誤操作率比較低。以上三點也許過于抽象,具體過程中不宜操作。其實,只要在設(shè)計整個過程中貫穿以人為本的設(shè)計理念,設(shè)計出的界面自然會達到以上要求。設(shè)計者應(yīng)該經(jīng)??紤]以下兩個問題:(1)用戶在沒有熟悉界面之前,完成一個操作需要多長時間,13河南理工大學(xué)本科畢業(yè)設(shè)計,論文,(2)用戶在熟悉界面后,完成一個普通操作需要多長時間,簡潔性、一致性、熟悉性圍繞著上述兩個問題展開。它們有時也存在著矛盾的地方,比如會為了一致性而犧牲簡潔性。這種取舍的標準應(yīng)著眼于用戶,要看是否便于用戶操作。用戶應(yīng)該是設(shè)計者心中的上帝。1)簡潔性:簡潔是一種直觀的美,它是設(shè)計者所要達到的主要目標,通過GUIDE,我們很容易向界面添加許多功能。但是功能強大并不一定代表成功,有時增加一些功能反而顯得畫蛇添足。GUI本來是從圖像的角度幫助用戶理解客觀世界的,但是繽紛蕪雜的表面想象卻很容易掩蓋事物的真相,影響擁護做出正確的判斷,這當然是不可取的。設(shè)計者一定要警惕這種盲目追求強大的心理。a注重形式圖像往往給人一種直觀的感受,告訴人們事物發(fā)展的趨勢,數(shù)字有助于將這種趨勢量化,增強人們對發(fā)展趨勢的認識。但是并不意味著圖像必須借助于數(shù)字。b縮小交互區(qū)域如果能在一個界面中完成的事情堅決不要放在兩個界面中完成。這也上操作簡潔性的一種間接體現(xiàn)。這樣除了增加圖形的可讀性,還減輕了不同截面之間數(shù)據(jù)的傳遞負擔。關(guān)于這一點在本設(shè)計中就有涉及。比較以下兩個設(shè)計:14河南理工大學(xué)本科畢業(yè)設(shè)計,論文,圖4—1多界面窗口圖4—2單界面窗口結(jié)果由以上兩個設(shè)計不難發(fā)現(xiàn)在第二種設(shè)計中只需要通過按鈕就可以實現(xiàn)預(yù)期的功能,而無須像第一種設(shè)計中那樣在不同的界面中進行切換。c用圖形輸入代替數(shù)值輸入15河南理工大學(xué)本科畢業(yè)設(shè)計,論文,對于用戶來說,在圖形用戶界面下,圖形輸入比數(shù)值輸入更加方便。為了從各個角度來觀察一個三維幾何形體,我們需要不斷地進行坐標系的轉(zhuǎn)化。用數(shù)值輸入的方法,困難程度難以想象,其復(fù)雜性會讓用戶望而卻步,而圖形輸入的方式則能很好地解決上述問題。2)一致性:一致性的含義很廣泛,既包括操作指令的前后一致,也包括操作界面中各種圖形對象擺放位置的一致性。這個原則基于以下認識,即用戶的操作經(jīng)驗應(yīng)有助于用戶完成后面的操作;設(shè)計者不應(yīng)該給用戶太多意外,否則會讓用戶一頭霧水;前面執(zhí)行這個命令是一種用法,于是產(chǎn)生了歧義。優(yōu)秀的界面設(shè)計往往注重這個問題。3)熟悉性。設(shè)計遵循的步驟:圖4—3設(shè)計遵循的步驟4.2功能要求本次論文的結(jié)果是設(shè)計出如上述4—2所示的圖形用戶界面,該界面應(yīng)該具有以下功能:1)在編輯框中輸入牛頭刨床的參數(shù)后,點擊“運算”按鈕,實現(xiàn)后臺的運算,并把運算的結(jié)果存儲在數(shù)據(jù)文件mydata.mat中。16河南理工大學(xué)本科畢業(yè)設(shè)計,論文,2)在1)完成后,用戶點擊“數(shù)據(jù)顯示”按鈕,彈出“數(shù)據(jù)顯示”窗口,并顯示牛頭刨床運動分析的結(jié)果數(shù)據(jù)。3)同上,在完成1)后,用戶點擊“運動線圖”按鈕,彈出“運動線圖”窗口,并在窗口中分別顯示牛頭刨床刨頭的“位移——曲柄轉(zhuǎn)角”、“速度——曲柄轉(zhuǎn)角”、“加速度——曲柄轉(zhuǎn)角”的曲線圖。4)同上,在完成1)后,用戶點擊“運動仿真”按鈕,彈出“運動仿真”窗口,并在窗口中顯示牛頭刨床動態(tài)仿真的結(jié)果。4.3界面結(jié)構(gòu)設(shè)計根據(jù)上述4.1和4.2,在本設(shè)計的界面設(shè)計中確立以下思路:由于本設(shè)計是對牛頭刨床進行運動分析和運動仿真,所以在界面中應(yīng)該首先創(chuàng)建五個框架區(qū),分別顯示結(jié)構(gòu)參數(shù),結(jié)構(gòu)模型,初始數(shù)據(jù),運動參數(shù)和命令按鈕;然后在相應(yīng)的框架區(qū)中分別創(chuàng)建text文本和edit編輯框以及命令按鈕,以使用戶可以通過對參數(shù)的改變來實現(xiàn)相應(yīng)的控制;最后,除“運算”和“退出”按鈕在后臺操作外,其它的按鈕“數(shù)據(jù)顯示”、“運動分析”、“運動仿真”被按下都會彈出相應(yīng)的操作界面。以下是預(yù)期的界面:17河南理工大學(xué)本科畢業(yè)設(shè)計,論文,圖4—4預(yù)期主界面圖4—5預(yù)期數(shù)據(jù)結(jié)果顯示界面窗口18河南理工大學(xué)本科畢業(yè)設(shè)計,論文,圖4—6預(yù)期的運動分析界面窗口圖4—7預(yù)期運動仿真界面4.4程序框圖的設(shè)計程序框圖如下所示:19河南理工大學(xué)本科畢業(yè)設(shè)計,論文,程序框圖圖4—8以上既是總界面的結(jié)構(gòu),也是軟件的總結(jié)構(gòu),也同時是程序流程圖。20河南理工大學(xué)本科畢業(yè)設(shè)計,論文,5運動仿真程序界面設(shè)計與編程實現(xiàn)界面制作包括界面設(shè)計和程序?qū)崿F(xiàn)。具體制作步驟如下:1)分析界面所要求實現(xiàn)的主要功能,明確設(shè)計任務(wù);2)在稿紙上面繪出界面草圖,并站在使用者的角度來審查草圖;3)按構(gòu)思的草圖,上機制作(靜態(tài))界面,并檢查之;態(tài)功能的程序,對功能進行逐項檢查。4)編寫界面動以上過程,僅僅是一般原則。在設(shè)計中,步驟之間也許要交叉執(zhí)行或復(fù)合執(zhí)行;設(shè)計和實現(xiàn)過程往往不是一步到位的,可能需要反復(fù)修改,才能獲得滿意的界面。在MATLAB軟件中,所提供的界面的基本設(shè)計方法共有兩種:一種是用戶自己編寫并調(diào)用函數(shù)生成界面;另一種是直接使用MATLAB提供的GUI設(shè)計工具。第二種方法雖然簡單,但是不利于我們更加熟悉MATLAB的編程語言以及鍛煉我們的思維和設(shè)計能力,加上邏輯性紊亂,所以本設(shè)計中的四個界面全是采用第一種方法制作,也就是編寫函數(shù)。在這四個界面的實現(xiàn)中,大體又可分為兩類:一、主界面的實現(xiàn)。二、功能界面的實現(xiàn)。在本章內(nèi)容展開之前,有必要介紹句柄圖形的知識,因為這是MATLAB可視化的內(nèi)核,與本章界面的制作關(guān)系密切。5.1句柄圖形體系句柄圖形是一種面向?qū)ο蟮睦L圖系統(tǒng)。該系統(tǒng)提供創(chuàng)建計算機圖形所必需的各種軟件。它所支持的指令,可直接創(chuàng)建線、文字、網(wǎng)線、面以及圖形用戶界面。MATLAB的各種高層圖形指令如:plot,mesh等都是以句柄圖形軟件為基礎(chǔ)寫成21河南理工大學(xué)本科畢業(yè)設(shè)計,論文,的,因此句柄圖形被稱為低層圖形。這也是在這里要首先介紹句柄圖形的原因所在。5.1.1圖形對象、對象句柄和句柄圖形樹結(jié)構(gòu)(1)圖形對象MATLAB把用于數(shù)據(jù)可視化和界面制作的基本繪圖要素成為句柄圖形對象。構(gòu)成MATLAB句柄圖形對象體系的11個圖形對象如圖5—1中方塊所示每個圖形對象都可以獨立操作。在MATLAB中生成的每個具體圖形,由若干個不同對象構(gòu)成。每個圖形對象不必包含全部對象,但是每個圖形必須具備根屏幕和圖形窗。圖5—1句柄圖形樹結(jié)構(gòu)(2)句柄每個具體對象都有一個“與生俱來、終生不變”的身份,即句柄。句柄的存取圖形對象惟一規(guī)范識別符。不同對象的句柄不可能重復(fù)和混淆。每個計算機,根對象只有一個,即屏幕。它的句柄值總是0。而簡稱為圖的圖形窗的句柄總是正整數(shù),它是用來標示圖形窗序號。除以上兩種對象外,其余對象句柄則是雙精度浮點數(shù)。22河南理工大學(xué)本科畢業(yè)設(shè)計,論文,(3)句柄圖形的結(jié)構(gòu)在句柄圖形體系中,各圖形對象并非平等,它們之間的關(guān)系可用圖5—1的樹層次結(jié)構(gòu)表示。5.1.2對象屬性(1)屬性所有對象都有一組定義和刻畫其外貌和性狀的屬性(Properties)。屬性有兩部分組成:屬性名和屬性值,即屬性二元對(Property_Name,Property_Value)。在創(chuàng)建和修改屬性的指令中,屬性名和屬性值總是成對出現(xiàn)。屬性名是英文詞組字符串。該英文詞組字符串每個單詞的第一個字母大寫,而單詞間沒有空格,;例如‘LineStyle’,‘ColorMap’等。這樣書寫的目的是便于閱讀。至于在指令中援引屬性名時,為用戶輸入的方便,MATLAB采取了兩個措施:第一,不分字母大小寫,都同樣識別;第二,只要不引起歧義,屬性名不必全寫。不同的屬性值將使對象有不同的表現(xiàn)。(2)缺省屬性在創(chuàng)建圖形對象時,MATLAB并不需要用戶對每個屬性加以定義。因為倘若用戶不對屬性加以定義,MATLAB總會自動給對象的每個屬性賦予廠家定義的屬性。當然用戶如果希望創(chuàng)建具有個性的圖形,那么就可以通過指令對某些屬性進行定義。5.1.3對象句柄的獲取方法要設(shè)置圖形對象屬性值,首先要知道該對象的句柄。因此,掌握對象句柄的獲取方法十分重要。1)基本方法(1)從圖形創(chuàng)建指令獲得句柄所有高層或低層指令都能通過以下格式產(chǎn)生句柄。H_GC=GraphicCommand(……)繪圖同時給出句柄的調(diào)用指令H_GC。23河南理工大學(xué)本科畢業(yè)設(shè)計,論文,本設(shè)計中主程序創(chuàng)建主界面窗口并獲取其句柄的程序代碼如下:h1=figure('position',[2020800600],...'name','牛頭刨床運動分析',...'numbertitle','off',...%不顯示標題數(shù)目'defaultuicontrolfontsize',6,...'defaultuicontrolunits','normalized',...'menubar','none',...%隱去菜單條以便接下來自己制作菜單'resize','off');%主窗口的大小不能改變(2)追溯法獲取圖柄若一個對象的句柄已知,那么可用以下格式追溯獲得其“父”或“子”的句柄。H_pa=get(H_known,’Parent’)獲取H_known句柄對象之“父”的句柄H_ch=get(H_known,’Children’)獲取H_known句柄對象之“子”的句柄本設(shè)計中主程序創(chuàng)建主界面“初始數(shù)據(jù)”框架后,可利用上述格式獲取其“父”句柄:h1_framec=uicontrol(...'parent',h1,...'style','frame',...'position',[0.050.050.30.3],...'foregroundcolor','b');H_pa=get(h1_framec,’Parent’)H_pa=h1獲取h1_framec句柄對象之“父”的句柄為h1。(3)當前對象句柄的獲取MATLAB有以下三種專用獲取圖柄的指令:前兩個是直接指令式的;后一個24河南理工大學(xué)本科畢業(yè)設(shè)計,論文,必須與鼠標配合使用。gcf返回當前圖形窗口的句柄gca返回當前軸的句柄gco返回“被鼠標最近點擊”的圖形對象的句柄本設(shè)計中在計算程序caculate1函數(shù)中,從主程序當中讀取句柄值handles=guihandles(gcf);(4)根據(jù)圖形對象特性獲取句柄利用對象特性搜索對象句柄可以得到較高的搜索速度。具體指令如下:H=findobj(H_ori,PN,PV)在H_ori指定對象上,尋找與屬性(PN,PV)匹配的對象句柄。(5)根據(jù)對象“標簽”獲取句柄用戶可以通過“Tag”屬性,給對象一個“標簽”。此后,就可以通過“標簽”獲取該對象的句柄。設(shè)置“標簽”的兩個方法:第一,創(chuàng)建時賦名第二,用set賦名據(jù)標簽獲取對象句柄:如果屏幕上有多個圖形窗,且有的窗口又有多個子圖,那么獲取帶“標簽”對象句柄的簡捷指令是:hax=findobj(0,‘Tag’,‘A4’)。本設(shè)計中在計算程序caculate1函數(shù)中,從主程序當中讀取牛頭刨床參量L1的句柄值L1=get(handles.hL1,'string');L1=str2num(L1);%%把字符轉(zhuǎn)換為數(shù)值5.1.4對象句柄的獲取和設(shè)置(1)創(chuàng)建對象時設(shè)置屬性H_GC=GraphicCommand(……,PN,PV)利用“屬性對”設(shè)置的繪圖指令25河南理工大學(xué)本科畢業(yè)設(shè)計,論文,H_GC=GraphicCommand(……,PS)利用“構(gòu)架”進行屬性設(shè)置的繪圖指令[說明]1)GraphicCommand代表所有合法的MATLAB高層或低層繪圖命令2)(PN,PV)是屬性名、屬性值構(gòu)成的屬性對。屬性對的數(shù)目沒有限制3)PS是域名為屬性名的構(gòu)架數(shù)組(2)get和setget(H)獲取H句柄對象所有屬性的當前值get(H,PN)獲取H句柄對象由PN指定屬性的當前值set(H)顯示H句柄對象所有可設(shè)置屬性名和全部供選屬性值set(H,PN)顯示H句柄對象由PN指定屬性的全部供選屬性值set(H,PN,PV,。。。)設(shè)置H句柄對象的PN屬性名取PV屬性值set(H,PS)利用構(gòu)架數(shù)組設(shè)置H的屬性值[說明]1)(PN,PV)是屬性名、屬性值構(gòu)成的屬性對。屬性對的數(shù)目沒有限制2)PS是域名為屬性名的構(gòu)架數(shù)組(3)對象屬性設(shè)置示例本設(shè)計中數(shù)據(jù)顯示窗口中創(chuàng)建顯示數(shù)據(jù)的listbox時,把listbox的‘string’,1屬性設(shè)置為‘vars1’的程序如下:h2_zhuanjiaoslist=uicontrol(...'parent',h2,...'style','listbox',...'position',[0.100.100.200.75],...'fontsize',14);vars1=phi1';26河南理工大學(xué)本科畢業(yè)設(shè)計,論文,set(h2_zhuanjiaoslist,'string',vars1);5.2主界面參數(shù)含義在主界面中參數(shù)的含義如下表所示:—1主界面參數(shù)含義表5參數(shù)名稱參數(shù)含義L1原動件AB的長度L3從動件DE的長度L5從動件EF的長度HAD的長度G刨頭距離底座的豎直高度從動件DE的轉(zhuǎn)角,3P滑塊2到底座的距離從動件EF的轉(zhuǎn)角,5S滑塊6的位移原動件AB的轉(zhuǎn)速n1原動件AB的轉(zhuǎn)角,1轉(zhuǎn)向原動件AB的轉(zhuǎn)向5.3界面制作步驟5.3.1創(chuàng)建主界面窗口創(chuàng)建窗口的函數(shù)為figure,它有兩種調(diào)用形式:(1)figure,單獨的figure創(chuàng)建一個新的窗口,并且返回它的句柄值。(2)figure(H),使H為當前的窗口,強制它在屏幕其他窗口的上面;假如H窗口不存在,同時H為整數(shù),這是將創(chuàng)建句柄為H的窗口,如下例。27河南理工大學(xué)本科畢業(yè)設(shè)計,論文,本設(shè)計中主程序創(chuàng)建主界面窗口的程序代碼如下:h1=figure('position',[2020800600],...'name','牛頭刨床運動分析',...'numbertitle','off',...%不顯示標題數(shù)目'defaultuicontrolfontsize',6,...'defaultuicontrolunits','normalized',...'menubar','none',...%隱去菜單條以便接下來自己制作菜單'resize','off');%主窗口的大小不能改變5.3.2創(chuàng)建主界面自制菜單PC平臺上,缺省情況下產(chǎn)生的MATLAB圖形窗總有一個頂層菜單條,它包含五個標準菜單項:文件(file)、編輯(edit)、工具(tools)、窗口(windows)和幫助(help)。每個菜單項在點擊的時候都回產(chǎn)生一個下拉菜單(Pull-downmenu)。這標準菜單受界面菜單‘MenuBar’屬性管理。該屬性有兩個取值[none|figure]。當屬性值取‘none’時,圖形窗不出現(xiàn)標準菜單(及工具條);當屬性取‘figure’時,圖形窗顯示標準菜單,如圖5—2所示。如上面例子隱去缺省菜單條的目的正是為了制作自制菜單,自制用戶菜單,通過uimenu指令創(chuàng)建。其典型的調(diào)用格式為:圖5—2缺省的菜單條Hm=uimenu('PropertyName1',value1,'PropertyName2',value2,...)28河南理工大學(xué)本科畢業(yè)設(shè)計,論文,[說明]1)Hm為該用戶菜單的句柄。H_parent為其父對象的句柄。該父對象只能是圖形窗對象,或另一用戶菜單對象。假如H_parent輸入宗量缺省,那么菜單項將建立在當前圖形窗的頂層菜單條上。2)‘PropertyName’和‘PropertyValue’構(gòu)成屬性二元對,它們定義用戶菜單的屬性。本設(shè)計中主程序創(chuàng)建主界面窗口自制菜單的程序如下:h1_file_menu=uimenu(h1,'label','文件');h1_save_menu=uimenu(h1_file_menu,'label','保存');h1_exit_menu=uimenu(h1_file_menu,'label','退出','callback','closeall');h1_help_menu=uimenu(h1,'label','幫助','callback','msgbox(''-360度<=φ1<=360度'',''help'',''modal'');');h1_about_menu=uimenu(h1,'label','關(guān)于','callback','msgbox(''作者:河南理工大學(xué)邵翔宇楊廣磊email:sxy454003@163.com2006年五月版權(quán)所有'',''about'',''modal'');');h1_acknowledge_menu=uimenu(h1,'label','支持','callback','msgbox(''在畢業(yè)設(shè)計的過程中得到了王小林院長和謝剛老師的耐心指導(dǎo)和大力支持非常感謝~'',''acknowledge'',''modal'');');本例的結(jié)果如圖5—3所示:在上例中用到了消息顯示對話框msgbox,從本質(zhì)上說,對話框也是一類窗口;而從功能上說,對話框是用來要求用戶輸入某些信息或給用戶提供某些信息而暫時出現(xiàn)的一個窗口。即對話框是用戶與計算機之間進行交互操作的一種手段,通過對話框,用戶可以通知計算機一些用戶所做的選擇,也可以輸入一些參數(shù)給計算機,并且計算機功能也給用戶提供一些信息或各種運行結(jié)果等。msgbox的調(diào)用格式為:msgbox(Message)29河南理工大學(xué)本科畢業(yè)設(shè)計,論文,msgbox(Message,Title)msgbox(Message,Title,Icon)msgbox(Message,Title,'custom',IconData,IconCMap)msgbox(Message,...,CreateMode)圖5—3自制菜單結(jié)果此外,在主界面的設(shè)計中還用到了warndlg,它的調(diào)用格式為:Handle=warndlg(Warnstring,DlgTitle)產(chǎn)生警告信息框并返回其句柄[說明]1)參數(shù)Warnstring是一個字符串變量,他表示了在對話框中要顯示的警告信息內(nèi)容2)參數(shù)DlgTitle是一個字符串變量,它表示對話框的名稱本設(shè)計中主程序創(chuàng)建主界面窗口自制警告信息對話框的程序如下:warndlg('歡迎你使用牛頭刨床六桿機構(gòu)運動分析程序','!!!hello!!!','modal');圖5—4信息框的設(shè)計結(jié)果5.3.3創(chuàng)建主界面的五個框架,各個編輯框、靜態(tài)文本和按鈕在MATLAB系統(tǒng)中,共定義了9種不同類型的控件。這9種控件分別為:命令按鈕(PushButton)、單選按鈕(RadioButton)、檢查框(CheckBox)、列表框30河南理工大學(xué)本科畢業(yè)設(shè)計,論文,(ListBox)、下拉式菜單(PopupMenu)、滑塊(Slider)、編輯框(EditBox)、靜態(tài)文字(StaticText)、框架(Frame)??丶荕ATLAB所定義的10個基本圖形對象之一,在某一圖形窗口中的各種控件都是uicontrol命令實現(xiàn)的。它的調(diào)用格式:hcontrol=uicontrol('PropertyName1',value1,'PropertyName2',value2,...)[功能]:在句柄為handle的圖形窗口中實現(xiàn)一個控件,并返回該控件的句柄到hControl變量。[說明]:1)在所實現(xiàn)的控件中,其PropertyName1屬性的屬性值為value1;PropertyName2屬性的屬性值為value22)該控件的“雙親”句柄為handle,若缺省該參數(shù),則其“雙親”為當前窗口3)對于該命令所實現(xiàn)的控件,其屬性值確定了該控件的外觀顯示特征及各種特點4)當某一控件的取值被改變之后,會導(dǎo)致系統(tǒng)去執(zhí)行由其‘callback’屬性所確定的一些響應(yīng)序列5)屬性‘style’確定了控件的基本外觀特征?!畇tyle’屬性的取值及其所表示的控件種類見表5—2表5—2控件style屬性取值及其對應(yīng)的控件種類Style屬性的取值控件種類Style屬性的取值控件種類PushbuttonpushPopupmenu命令按鈕下拉式菜單Radiobutton,radioSlider單選按鈕滑塊Checkbox,checkEdit檢查框編輯框Listbox,listText列表框靜態(tài)文字Frame框架本設(shè)計中主程序創(chuàng)建主界面窗口框架的程序如下(因篇幅有限,只能列舉兩個31河南理工大學(xué)本科畢業(yè)設(shè)計,論文,框架的創(chuàng)建程序):h1_framec=uicontrol(...'parent',h1,...'style','frame',...'position',[0.050.050.30.3],...'foregroundcolor','b');h1_framej=uicontrol(...'parent',h1,...'style','frame',...'position',[0.050.450.30.50],...'foregroundcolor','b');圖5—5主界面框架的設(shè)計結(jié)果32河南理工大學(xué)本科畢業(yè)設(shè)計,論文,本設(shè)計中在主窗口中創(chuàng)建編輯框和靜態(tài)文本的程序如下(限于篇幅這里指列舉部分程序):h1_jgtext=uicontrol(...'parent',h1,...'style','text',...'position',[0.050.950.150.05],...'string','結(jié)構(gòu)參數(shù)',...'backgroundcolor','w',...'fontsize',16);h1_cstext=uicontrol(...'parent',h1,...'style','text',...'position',[0.050.350.150.05],...'string','初始數(shù)據(jù)',...'backgroundcolor','w',...'fontsize',16);h1_ydtext=uicontrol(...'parent',h1,...'style','text',...'position',[0.400.300.150.05],...'string','運動參數(shù)',...'backgroundcolor','w',...'fontsize',16);h1_jl1text=uicontrol(...33河南理工大學(xué)本科畢業(yè)設(shè)計,論文,'parent',h1,...'style','text',...'position',[0.100.870.050.05],...'string','L1');h1_jl1edit=uicontrol(...'tag','hL1',...'parent',h1,...'style','edit',...'string','125',...'position',[0.150.870.100.05],...'backgroundcolor','w',...'fontsize',6);h1_jl1htext=uicontrol(...'parent',h1,...'style','text',...'position',[0.260.870.050.05],...'string','mm',...'fontsize',8);本例的結(jié)果如圖5—6所示34河南理工大學(xué)本科畢業(yè)設(shè)計,論文,圖5—6靜態(tài)文本和編輯框的設(shè)計結(jié)果本設(shè)計中在主窗口中創(chuàng)建命令按鈕的程序如下(限于篇幅這里只舉出部分程序):b=imread('saoxy','jpg');h1_mxjgbutton=uicontrol(...'parent',h1,...'style','push',...'cdata',b,...'position',[0.400.350.550.65],...'backgroundcolor','w',...'fontsize',8);h1_databutton=uicontrol(...35河南理工大學(xué)本科畢業(yè)設(shè)計,論文,'parent',h1,...'style','push',...'position',[0.800.230.150.05],...'string','數(shù)據(jù)顯示',...'fontsize',12,...'backgroundcolor','w',...'callback','fig_data');%設(shè)置回調(diào)函數(shù)為fig_data本例的結(jié)果如下頁圖5—7所示:在本例中值得注意的是程序的設(shè)計過程當中遇到的最主要的問題是如何把牛頭刨床的結(jié)構(gòu)模型圖讀到主界面的特定位置。最初只是用imread把圖像讀進去,但是這是就出現(xiàn)了圖像不能定位的問題。后來用imread與pushbutton結(jié)合,把pushbutton的“cdata”屬性設(shè)置為圖像的數(shù)據(jù)矩陣,就完美的解決了這個問題。另外,在本例中“運算”、“數(shù)據(jù)顯示”、“運動分析”和“運動仿真”的“callback”除“運算”在后臺操作外,其它都有“callback”生成相應(yīng)子窗口。36河南理工大學(xué)本科畢業(yè)設(shè)計,論文,圖5—7在主界面中讀入結(jié)構(gòu)模型并添加按鈕的設(shè)計結(jié)果5.3.4創(chuàng)建數(shù)據(jù)顯示窗口在這個窗口的設(shè)計中,首先還是用figure生成窗口,然后用load從數(shù)據(jù)文件mydata.mat中讀取變量值。接下來分別創(chuàng)建四個靜態(tài)文本和列表框以顯示數(shù)據(jù),最后,創(chuàng)建“運動線圖”和“退出”按鈕。在,,,,,,中,利用,,,,、,,,,指令實現(xiàn)數(shù)據(jù)文件的存取是各版都采用的基本方法。它的具體調(diào)用格式如下:saveFileName把全部內(nèi)存變量保存為FileName.mat文件saveFileNamev1v2把變量v1,v2保存為FileName.mat文件saveFileNamev1v2-append把變量v1,v2添加到FileName.mat文件saveFileNamev1v2,ascii把變量v1,v2保存為FileName,位ASCII文件saveFileNamev1v2,ascii,double把變量v1,v2保存為FileName16位ASCII文件loadFileName把FileName.mat文件中的全部變量裝入內(nèi)存loadFileName把FileName.mat文件中的變量v1,v2裝入內(nèi)存saveFileNamev1v2,ascii把FileNameASCII文件中的變量v1,v2裝入內(nèi)存[說明]:v1,v2代表變量名;制定的變量個數(shù)不限,只要內(nèi)存或文件存在;變量名與變量名之間必須以空格相分開。本設(shè)計中在數(shù)據(jù)顯示窗口中讀取變量值的程序如下:%從mydata.mat文件中讀取phi1SVFaFloadmydataphi1SVFaF37河南理工大學(xué)本科畢業(yè)設(shè)計,論文,圖5—8load命令的調(diào)用結(jié)果本設(shè)計中在數(shù)據(jù)顯示窗口中為顯示變量數(shù)據(jù)分別采用靜態(tài)文本和列表框的結(jié)果的程序如下(部分):采用靜態(tài)文本:h2_zhuanjiaotext=uicontrol(...'parent',h2,...'style','text',...'position',[0.100.850.200.05],...'string','AB轉(zhuǎn)角φ1(轉(zhuǎn)/秒)',...'fontsize',12);h2_zhuanjiaostext=uicontrol(...'parent',h2,...'style','text',...'position',[0.100.100.200.75],...'fontsize',14);38河南理工大學(xué)本科畢業(yè)設(shè)計,論文,vars1=phi1';set(h2_zhuanjiaoslist,'string',vars1);采用列表框:h2_zhuanjiaotext=uicontrol(...'parent',h2,...'style','text',...'position',[0.100.850.200.05],...'string','AB轉(zhuǎn)角φ1(轉(zhuǎn)/秒)',...'fontsize',12);h2_zhuanjiaoslist=uicontrol(...'parent',h2,...'style','listbox',...'position',[0.100.100.200.75],...'fontsize',14);vars1=phi1';set(h2_zhuanjiaoslist,'string',vars1);39河南理工大學(xué)本科畢業(yè)設(shè)計,論文,圖5—9采用靜態(tài)文本顯示數(shù)據(jù)的結(jié)果5.3.5創(chuàng)建運動分析界面窗口運動分析界面窗口的設(shè)計也是先用figure命令創(chuàng)建界面窗口,然后創(chuàng)建“運動分析”和“退出”按鈕,在此設(shè)置“運動分析”的“callback”為“graph”,至此運動分析界面窗口的設(shè)置結(jié)束。比較原動件的轉(zhuǎn)速分別為30/pirad/s和100rad/s的牛頭刨床運動分析曲線圖,結(jié)果如下頁圖5—11和5—12所示。40河南理工大學(xué)本科畢業(yè)設(shè)計,論文,圖5—10采用列表框顯示數(shù)據(jù)的結(jié)果圖5—11n1=30/,rad/s時牛頭刨床運動分析的結(jié)果41河南理工大學(xué)本科畢業(yè)設(shè)計,論文,圖5—12n1=100rad/s時牛頭刨床運動分析的結(jié)果由以上兩個圖片可清楚的看到牛頭刨床在工作行程中的速度較為平穩(wěn),近似于等速,這就保證了刨刀的壽命和加工質(zhì)量;另外可以清楚的看到牛頭刨床在回程時速度變化很快,這正是牛頭刨床的急回特性,從而提高了生產(chǎn)效率。通過比較兩個結(jié)果還可以發(fā)現(xiàn)在原動件轉(zhuǎn)速改變的情況下,牛頭刨床的速度和位移曲線變化不大,而只有加速度的大小變化較大。5.3.6創(chuàng)建運動仿真界面窗口這個窗口的創(chuàng)建與其它窗口的創(chuàng)建大體相同,不過不同的是這里沒有設(shè)置“callback”,而是直接把運動分析程序加在界面窗口的創(chuàng)建之后。需要注意的是這里實現(xiàn)運動仿真的時候采用了動畫的實現(xiàn)的方法。在MATLAB中動畫的實現(xiàn)有兩種方式:1)影片動畫(movie):預(yù)先制作圖形,存放在圖形緩沖區(qū),然后逐禎播放。這種動畫適用于難以實時快速繪制的復(fù)雜畫面。這種方法計算量大、占用內(nèi)存多。而快速回放,使人眼不感覺到停止的連貫程度,對計算機硬件業(yè)是不低的要求。42河南理工大學(xué)本科畢業(yè)設(shè)計,論文,2)實時動畫:保持圖形窗中大部分的像素顏色不變,而只是更新部分像素的顏色構(gòu)成運動圖像。這種動畫適用于每次變化較少、圖形精度要求不是很高的場合。在本篇設(shè)計中正是采用的這種方法,它的制作步驟為:(1)畫出初始圖形;(2)計算活動對象的新位置,并在新位置上將它顯示出來;(3)擦除原來位置上原有對象,刷新屏幕;(4)重復(fù)前面兩個步驟。按照上面的思路,首先在運動仿真窗口中繪制初始圖形,這用到plot指令,它的調(diào)用格式為:plot(X,S)plot(X,Y,S)plot(X1,Y1,S1,X2,Y2,S2,X3,Y3,S3,...)其中s是用來指定線形、色彩、數(shù)據(jù)點形的選擇字符串。它可以缺省。但是那個時候這些設(shè)置將由MATLAB的默認設(shè)置確定。在運動仿真窗口的設(shè)計中plot指令的應(yīng)用舉例:loadmydataAx=0;Ay=H;Bx11=Bx(1);By11=By(1);plot([Ax,Bx11],[Ay,By11],'g','linewidth',2);接下來計算活動對象對新位置時使用了for循環(huán)語句。它的語法結(jié)構(gòu)為:forx=array(commands)end[說明]43河南理工大學(xué)本科畢業(yè)設(shè)計,論文,其中,for指令后的變量x稱為循環(huán)變量,而for與end之間的組命令commands稱為循環(huán)體。循環(huán)體被重復(fù)執(zhí)行的次數(shù)是確定的,該次數(shù)由for指令后面的數(shù)組array的列數(shù)決定。換言之,循環(huán)變量依次取數(shù)組的各列,對于每個變量值,循環(huán)體被執(zhí)行一次。在本設(shè)計實現(xiàn)運動仿真時的循環(huán)體如下:fmat=moviein(119);n=0;fori=1:3:357n=n+1;Bx11=Bx(i);By11=By(i);Ex11=Ex(i);Ey11=Ey(i);Fx11=Fx(i);Fy11=Fy(i);plot([Ex11,Fx11],[Ey11,Fy11],'r','linewidth',2);holdonplot([Dx,Ex11],[Dy,Ey11],'r','linewidth',2);plot([Ax,Bx11],[Ay,By11],'g','linewidth',2);plot(Dx,Dy,'ko','markersize',8,'markerfacecolor','y');plot(Bx11,By11,'ks','markersize',8,'markerfacecolor','y');plot(Ex11,Ey11,'ko','markersize',8,'markerfacecolor','y');plot(Ax,Ay,'ko','markersize',8,'markerfacecolor','y');plot(Fx11,Fy11,'ks','markersize',8,'markerfacecolor','y');plot(x1,y1,'r');44河南理工大學(xué)本科畢業(yè)設(shè)計,論文,plot(x2,y2,'r');holdoffdrawnowAxis(theAxes);%使用相同的坐標fmat(:,n)=getframe;end在以上這些步驟都完成之后要想把動畫播放出來需要用到的是movie指令,它的調(diào)用格式為:M(i)=getframemovie(M,k)以不超過每秒12楨的速度把M中的動畫播放K次在本例中實現(xiàn)播放動畫的程序為:movie(fmat,10);圖5—13運動仿真窗口設(shè)計結(jié)果5.3.7回調(diào)函數(shù)caculate1的設(shè)計45河南理工大學(xué)本科畢業(yè)設(shè)計,論文,回調(diào)函數(shù)caculate1負責(zé)著整個界面的后臺數(shù)值運算和窗口之間數(shù)據(jù)的傳遞,占著舉足輕重的地位。在這個程序的設(shè)計中先要從主程序中獲取編輯框的句柄值,這點在4.1.4節(jié)中已經(jīng)敘述過,這里不再贅述。然后把前面所述牛頭刨床運動分析的數(shù)學(xué)模型程序化。值得注意的是這里的變量大多都是數(shù)組,因此在計算的過程中一定要分清變量的乘與數(shù)組乘,除與數(shù)組除。最后用save把變量數(shù)據(jù)值存儲在數(shù)據(jù)文件mydata.mat中。5.3.8回調(diào)函數(shù)graph的設(shè)計在這程序的設(shè)計中先要用load把數(shù)據(jù)文件讀入內(nèi)存,然后用plot指令繪制運動線圖。值得注意的是在運動分析窗口中要顯示3個運動線圖,即要對窗口進行分割,雖然我們可以通過坐標平移的方法達到這個要求,但是這種方法操作起來比較麻煩。對于這類問題,MATALB提供了兩種方法:一種是使用同一個坐標系繪制多個圖形;另一種是利用圖形窗口的分割實現(xiàn)多幅圖形的繪制。圖形窗口分割函數(shù)subplot的調(diào)用格式為:subplot(m,n,p)[說明]1)各個繪圖區(qū)域的編號原則是“先上后下,先左后右”即與矩陣元素下表的排列次序一致。2)MATLAB最多允許99的分割,并且它允許每個繪圖區(qū)域都以不同的坐,標系單獨繪制圖形。3)如我們用了subplot命令后又想使用MATLAB缺省的一幅圖一個圖形窗口的方式,則必須執(zhí)行subplot(1,1,1)指令,或者執(zhí)行清除窗口分割命令clf在本設(shè)計中設(shè)計graph函數(shù)時分割窗口的程序舉例:loadmydataphi1SVFaF;%把phi1由弧度轉(zhuǎn)化成度phi1=phi1*180/pi;46河南理工大學(xué)本科畢業(yè)設(shè)計,論文,%畫位移曲線subplot(3,1,1);plot(phi1,S);v=axis;v(2)=450;axis(v);ylabel('s(m)');title('刨頭F點的位移曲線');%畫速度曲線subplot(3,1,2);plot(phi1,VF);v=axis;v(2)=450;axis(v);ylabel('v(m/s)');title('刨頭F點的速度曲線');%畫加速度曲線subplot(3,1,3);plot(phi1,aF);v=axis;v(2)=450;axis(v);xlabel('\phi_1(degrees)');ylabel('a(m/s^2)');title('刨頭F點的加速度曲線');47河南理工大學(xué)本科畢業(yè)設(shè)計,論文,至此牛頭刨床運動分析與運動仿真的界面制作與程序設(shè)計結(jié)束,遺憾的是在運動仿真的實現(xiàn)過程中出現(xiàn)的屏幕閃的問題沒有能夠解決。48河南理工大學(xué)本科畢業(yè)設(shè)計,論文,5、總結(jié)假如說,在20世紀90年代,控制類相關(guān)學(xué)科新舊教材的區(qū)別性標志是“教材是否包含MATLANB內(nèi)容”,那么進入21世紀后,MATLAB對教材的影響以嶄新摒棄那些手工計算、計算尺計算、手搖或電動計的形式出現(xiàn):新教材正在更徹底地算機、電子模擬計算機時代建立的“老的但是長久被當作經(jīng)典的”表述、分析和計算方法,而逐步地建立以現(xiàn)代計算工具(包括軟硬件)為平臺的新表述、分析和計算方法,其中包括采用交互式圖形用戶界面去完成各種表述、分析和計算目的。通過本次畢業(yè)設(shè)計的制作,使我對MATLAB有了更深刻的了解。它精確的數(shù)值計算,強大的繪圖功能,為我們問題的處理帶來了極好的效果極大的方便。它那簡潔的程序,讓我們不再為編程而頭痛。通過畢業(yè)設(shè)計對MATLAB的使用,有以下幾點感觸:一、MATLAB的程序代碼編寫相對簡單,可以通過MATLAB自帶的函數(shù)按數(shù)學(xué)表達式直接編寫以完成工程計算問題。二、MATLAB直接對矩陣和數(shù)組操作,這樣省去了煩人的循環(huán),加快了程序的運行速度。三、在整個設(shè)計的過程中,程序的調(diào)試占著舉足輕重的地位。對于初學(xué)者來說,初期程序難免有錯誤之處,這時如何找到錯誤所在并糾正錯誤,無疑成為整個程序編寫過程中的重要環(huán)節(jié),因此在一個完整的設(shè)計中,程序編寫完畢只是完成整個工作量的60%左右。49河南理工大學(xué)本科畢業(yè)設(shè)計,論文,6致謝本篇論文是在王小林院長和謝剛老師的支持、指導(dǎo)和鼓勵下完成的,他們對本人的設(shè)計提出了很多可具操作性和實用性的意見和建議。曾經(jīng)為一個問題未能解決而通宵達旦,然而到了老師那里就輕而易舉的解決,因此,沒有他們的教誨,本人的畢業(yè)設(shè)計是不可能完成的,在此對王小林院長和謝剛老師表示最誠摯的感謝~另外感謝答辯組的老師們在百忙之中,對我的論文進行指正,祝你們工作愉快。50河南理工大學(xué)本科畢業(yè)設(shè)計,論文,7參考書目[1]孫恒編著《機械原理》北京:高教出版社2004.5[2]師忠秀等編著《機械原理課程設(shè)計》北京:機械工業(yè)出版社2003.5[3]張志勇等編著《精通MATLAB6.5版》北京:北航出版社2003.3[4]高會生等譯《MATLAB原理與工程應(yīng)用》北京:電子工業(yè)出版社2002.6[5]Stephen,.chapman著《MATLAB編程》北京:科學(xué)出版社2003[6]周明等著《MATLAB圖形技術(shù)》西安:西北工業(yè)大學(xué)出版社1999.11[7]陳揚等著《MATLAB6.x圖形編程與圖像處理》西安:西安電子科技大學(xué)出版社2002.10[8]云舟工作室編著《MATLAB6.5數(shù)學(xué)建模基礎(chǔ)教程》北京:人民郵電出版社2001.7[9]網(wǎng)冠科技編著《MATLAB時尚創(chuàng)作,,,例》北京:機械工業(yè)出版社2002.6[10]樓順天等編著《MATLAB5.x程序設(shè)計語言》西安:西安電子科大學(xué)出版社2000.4[11]陸鐘呂等編著《平面連桿機構(gòu)綜合》哈爾濱:哈爾濱船舶工程學(xué)院出版社1992.4[12]江見鯨主編《高等學(xué)校畢業(yè)設(shè)計(論文)指導(dǎo)手冊》北京:高等教育出版社1992.2[13]王洪欣主編《機械原理課程上機指導(dǎo)與實踐》南京:東南大學(xué)出版社200551河南理工大學(xué)本科畢業(yè)設(shè)計,論文,8附錄程序源代碼1)主程序%主程序functionflgofniutoubaochuang%創(chuàng)建主窗口%screensize=get(0,'screensize');h1=figure('position',[2020800600],...'name','牛頭刨床運動分析',...'numbertitle','off',...%不顯示標題數(shù)目'defaultuicontrolfontsize',6,...'defaultuicontrolunits','normalized',...'menubar','none',...%隱去菜單條以便接下來自己制作菜單'resize','off');%主窗口的大小不能改變%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%在主窗口中添加菜單h1_file_menu=uimenu(h1,'label','文件');h1_save_menu=uimenu(h1_file_menu,'label','保存');h1_exit_menu=uimenu(h1_file_menu,'label','退出','callback','closeall');h1_help_menu=uimenu(h1,'label','幫助','callback','msgbox(''-360度<=φ1<=360度'',''help'',''modal'');');h1_about_menu=uimenu(h1,'label','關(guān)于','callback','msgbox(''
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年套管結(jié)晶機成套設(shè)備行業(yè)深度研究分析報告
- 別墅銷售合同范本
- 2025-2030年中國半自動水墨印刷開槽機項目投資可行性研究分析報告
- 2025年中國精制抗炭疽血清行業(yè)市場全景評估及投資策略咨詢報告
- 2025年卷繞機行業(yè)發(fā)展研究報告
- 建材認購合同范本
- 職業(yè)學(xué)院校舍建設(shè)項目實施方案
- 七年級英語下冊任務(wù)型閱讀知識點總結(jié)及經(jīng)典習(xí)題(含答案)經(jīng)典
- 公路風(fēng)險評估報告范文
- 2024年機動車尾氣治理行業(yè)市場發(fā)展監(jiān)測及投資前景展望報告
- 2025-2030年園藝修剪機器人行業(yè)深度調(diào)研及發(fā)展戰(zhàn)略咨詢報告
- 企業(yè)數(shù)字化轉(zhuǎn)型戰(zhàn)略-深度研究
- 2025年東營科技職業(yè)學(xué)院高職單招數(shù)學(xué)歷年(2016-2024)頻考點試題含答案解析
- 《幼小銜接家長會》課件
- Unit 4 A glimpse of the future 說課稿-2023-2024學(xué)年高二下學(xué)期英語外研版(2019)選擇性必修第三冊001
- 鄉(xiāng)村建設(shè)規(guī)劃許可培訓(xùn)
- 加氣站安全課件
- GB/T 45037-2024糧油機械扒谷機
- 品管圈PDCA改善案例-降低住院患者跌倒發(fā)生率
- 分布式計算平臺設(shè)計與實現(xiàn)
- 團聚體與土壤有機質(zhì)轉(zhuǎn)化-洞察分析
評論
0/150
提交評論