平面四桿機(jī)構(gòu)Matlab仿真及優(yōu)化設(shè)計帶開題報告.zip,平面,機(jī)構(gòu),Matlab,仿真,優(yōu)化,設(shè)計,開題,報告
平面四桿機(jī)構(gòu) MATLAB 仿真及優(yōu)化設(shè)計
摘 要
在研究機(jī)構(gòu)學(xué)時,由于需要處理大量的數(shù)據(jù),并且處理過程繁瑣容易出錯,所以需要研究人員找到一種可以直接處理矩陣運(yùn)算的通用方法,在研究大量的實(shí)際問題后,人們發(fā)現(xiàn),大多數(shù)的實(shí)例都可構(gòu)造成矩陣方程來進(jìn)行運(yùn)算,MATLAB 恰好具備這一運(yùn)算特性,能夠滿足人們在機(jī)構(gòu)學(xué)研究中的要求。
本設(shè)計選取平面四桿機(jī)構(gòu)作為研究對象,首先對其進(jìn)行運(yùn)動學(xué)和動力學(xué)的分析,在此基礎(chǔ)上,建立相應(yīng)的數(shù)學(xué)模型,選擇 MATLAB 作為研究工具,建立 Simulink 仿真模型, 對平面四桿機(jī)構(gòu)的運(yùn)動學(xué)特性進(jìn)行研究。再使用 MATLAB 自身的 GUI 功能,設(shè)計出一個平面四桿機(jī)構(gòu)的運(yùn)動學(xué)分析交互式界面,使得用戶只需要輸入相應(yīng)的參數(shù),即可得到相應(yīng)的分析結(jié)果。最后再根據(jù)所有的仿真分析結(jié)果進(jìn)行優(yōu)化設(shè)計,得到四桿機(jī)構(gòu)參數(shù)的最優(yōu)設(shè)計參數(shù)。
該方法對平面四桿機(jī)構(gòu)的仿真設(shè)計及優(yōu)化處理提供了一種新的解決方案,對平面四桿機(jī)構(gòu)的設(shè)計和優(yōu)化提供了一定的幫助,不僅提高了效率和準(zhǔn)確性,而且對解決其他類似的問題也具有一定的參考價值。
關(guān)鍵詞:機(jī)構(gòu)學(xué);平面四桿機(jī)構(gòu);MATLAB;仿真分析;優(yōu)化設(shè)計
I
ABSTRACT
In the mechanism research,there is a large amount of data which needs to be processed, and the process is so cumbersome and error-prone. So researchers need to find a general method that can handle matrix operations directly. After researching many practical problems, people found that most of the examples can be constructed as matrix equations for operation.
MATLAB has this feature that can meet people's demands in institutional research.
This design chooses a planar four-link mechanism as a research object. First, analyze the kinematics and dynamics, and then, establish a mathematical model. Selecting MATLAB as a research tool and establishing a Simulink simulation model to research the kinematics of the planar four-link mechanism. Then use MATLAB's own function to design a kinematics analysis interactive interface of a planar four-link mechanism. User should only enter the corresponding parameters, you can get the corresponding analysis results. Finally, according to the results of all simulation analysis, the optimal design parameters of the four-link mechanism are obtained.
This method provides a new solution for the simulation design and optimization of the planar four-link mechanism. It has given a hand to the design and optimization of the planar four-link mechanism, which not only improves the efficiency and accuracy, but also has certain reference value for solving other similar problems..
Keyword:Institutional;Planar four-link mechanism;MATLAB;Motion Analysis; Optimized design
II
目 錄
摘 要 I
ABSTRACT II
1 緒論 1
1.1 課題背景 1
1.2 國內(nèi)外研究現(xiàn)狀和發(fā)展 1
1.3 課題主要任務(wù) 3
2 平面四桿機(jī)構(gòu)的運(yùn)動學(xué)分析 4
2.1 概述 4
2.2 實(shí)例分析 4
3 基于 MATLAB 的運(yùn)動分析及程序設(shè)計 8
3.1 MATLAB 概述 8
3.2 M 文件編寫 8
3.3 基于 MATLAB 的 Simulink 模型的建立 10
3.4 程序運(yùn)行結(jié)果 12
4 曲柄滑塊機(jī)構(gòu)的 GUI 設(shè)計 15
4.1 GUI 概述 15
4.2 問題概況 15
4.3 數(shù)學(xué)分析 16
4.4 界面設(shè)計 17
4.5 主要代碼設(shè)計流程 19
4.6 界面結(jié)果展示 21
5 平面四桿機(jī)構(gòu)的優(yōu)化設(shè)計 22
5.1 四桿的優(yōu)化設(shè)計方法 22
5.2 建立數(shù)學(xué)模型 22
5.3 實(shí)例計算 24
6 結(jié) 論 26
參 考 文 獻(xiàn) 27
附錄 1:外文翻譯 28
附錄 2:外文原文 36
附錄 3:主要程序代碼 45
致 謝 49
I
平面四桿機(jī)構(gòu)MATLAB 仿真及優(yōu)化設(shè)計
1 緒論
1.1 課題背景
隨著科技的進(jìn)步和計算機(jī)技術(shù)的飛速發(fā)展,機(jī)械工程學(xué)的發(fā)展也在加速。連桿機(jī)構(gòu)中多桿機(jī)構(gòu)方向和多學(xué)科兩個方面,未來會相互融合、相互滲透。在機(jī)構(gòu)、控制系統(tǒng)和原動機(jī)結(jié)合成的整個機(jī)構(gòu)系統(tǒng)中,通過對整個機(jī)構(gòu)系統(tǒng)的研究,從分析運(yùn)動學(xué)、動力學(xué)特征以及其對動力分配的影響,到改進(jìn)對機(jī)構(gòu)的性能的改造和發(fā)展機(jī)構(gòu)的新用途[15],這將是連桿機(jī)構(gòu)未來發(fā)展趨勢。
連桿機(jī)構(gòu)由于其簡單的結(jié)構(gòu),較大的可承受載荷,多樣性的連桿曲線等特性,廣泛的應(yīng)用于眾多領(lǐng)域。機(jī)構(gòu)運(yùn)動學(xué)仿真就是根據(jù)給定的原動件的運(yùn)動規(guī)律,得出機(jī)構(gòu)中其余構(gòu)件的運(yùn)動參數(shù)[13]。無論是分析現(xiàn)有機(jī)構(gòu)的工作性能,還是優(yōu)化新機(jī)械機(jī)構(gòu),仿真都是十分重要的。通過仿真能夠形象直觀的看出機(jī)構(gòu)的運(yùn)動軌跡、所需要的空間以及是否干涉,同時速度分析可以確定機(jī)構(gòu)從動件的速度是否符合要求,加速度分析可以提供慣性力計算的數(shù)據(jù)[13]。
研究該課題的目的在于找到一個通用的方法,用以研究平面四桿機(jī)構(gòu),將平面四桿機(jī)構(gòu)的運(yùn)動學(xué)特性用圖表、曲線的方式直觀明了的表示出來,優(yōu)化平面四桿機(jī)構(gòu)的設(shè)計流程,減少設(shè)計時間的同時提高設(shè)計精度,結(jié)合當(dāng)下的科學(xué)技術(shù),使用計算機(jī)軟件進(jìn)行輔助設(shè)計,具有很強(qiáng)的優(yōu)越性。
1.2 國內(nèi)外研究現(xiàn)狀和發(fā)展
近幾十年來,國內(nèi)外的一些學(xué)者和研究機(jī)構(gòu)對連桿機(jī)構(gòu)的分析和綜合研究已取得了顯著的成績。
對于連桿機(jī)構(gòu)分析,提出了以單開鏈為單元的理論與方法,以拓?fù)涮卣鳛榛A(chǔ)的新機(jī)構(gòu)組成原理,為了揭示機(jī)構(gòu)特征與動力學(xué)方程、運(yùn)動學(xué)方程之間的聯(lián)系,創(chuàng)立了一套數(shù)學(xué)模型。連桿機(jī)構(gòu)取得的成就有:
(1)提出了一套綜合桿組的概念,創(chuàng)立了連桿機(jī)構(gòu)通過速度、位置、加速度等運(yùn)動參數(shù)綜合分析的理論和方法;(2)在連桿機(jī)構(gòu)的綜合研究中引入了計算機(jī)技術(shù),建立了傳動特征和導(dǎo)引特性的數(shù)據(jù)庫,并通過局部軌跡特征的建立,提高了設(shè)計精度、加快了設(shè)計速度;(3)提出了機(jī)架桿方向結(jié)構(gòu)誤差與從動桿桿長機(jī)構(gòu)誤差的概念,并通過改進(jìn)遺傳算法,完成軌跡機(jī)構(gòu)和函數(shù)生成機(jī)構(gòu)的優(yōu)化。20 世紀(jì)中期,開始將計算機(jī)技術(shù)應(yīng)用到連桿機(jī)構(gòu)的綜合研究中[15]。對于鉸鏈四桿機(jī)構(gòu)綜合的幾何方法,一些學(xué)者將其公式化,首次實(shí)現(xiàn)將計算機(jī)應(yīng)用到四桿機(jī)構(gòu)相應(yīng)函數(shù)的最優(yōu)組合中,將超越方程組和代數(shù)方程組的求解放在計算機(jī)上進(jìn)行,從而獲得機(jī)構(gòu)有關(guān)的參數(shù)。60 年代后,位移矩陣法也
- 49 -
被應(yīng)用到機(jī)構(gòu)的綜合求解中,同樣是通過求解超越方程組和非線性方程組,得到綜合機(jī)構(gòu)的有關(guān)參數(shù)。
關(guān)于連桿機(jī)構(gòu)的理論,科學(xué)家在過去幾百年的研究過程中已經(jīng)取得了巨大的成績。在 18 世紀(jì)后期,第一次工業(yè)革命的發(fā)展浪潮中,機(jī)械工程學(xué)科也得到了快速的發(fā)展。因
此機(jī)構(gòu)學(xué)也成了一門獨(dú)立的新學(xué)科。在 13 世紀(jì)前期,人們就已經(jīng)開始廣泛應(yīng)用連桿機(jī)構(gòu)理論[15]。而出現(xiàn)得最早、結(jié)構(gòu)最簡單、應(yīng)用最廣泛的一種機(jī)構(gòu)就是四桿機(jī)構(gòu)。在連桿機(jī)構(gòu)研究的研究中,最早開始是 18 世紀(jì)的科學(xué)家瓦特。早在 1784 年的時候,在瓦特發(fā)明的蒸汽機(jī)里,他就應(yīng)用了四桿機(jī)構(gòu),其目的是為活塞提供近似直線運(yùn)動。然而,就算瓦特將這項(xiàng)技術(shù)應(yīng)用到蒸汽機(jī)里,連桿機(jī)構(gòu)也并沒有得到快速的發(fā)展。主要原因是缺乏相關(guān)文獻(xiàn)來記載其運(yùn)動特性方面研究的理論基礎(chǔ),然而,與連桿機(jī)構(gòu)理論相關(guān)的記載一直未曾出現(xiàn),直到在 19 世紀(jì) 80 年代后才有相關(guān)文獻(xiàn)出現(xiàn)。19 世紀(jì)之后,各機(jī)構(gòu)開始重視連桿機(jī)構(gòu)的研究,德國機(jī)構(gòu)學(xué)學(xué)派是最重視這項(xiàng)研究,且貢獻(xiàn)最大的學(xué)派,其研究成果在世界上也處于領(lǐng)先狀態(tài)。第二次世界大戰(zhàn)之后,在計算機(jī)技術(shù)騰飛的同時,連桿機(jī)構(gòu)也在生產(chǎn)中得到應(yīng)用,開拓了許多研究領(lǐng)域,有了新的突破。在機(jī)構(gòu)學(xué)的研究中,四桿機(jī)構(gòu)作為連桿機(jī)構(gòu)中最基本的形式,雖然在其他方面的研究有了突破,但在運(yùn)動學(xué)和動力學(xué)方面四桿機(jī)構(gòu)的研究還需努力。對于五桿機(jī)構(gòu)及其以上的多桿多自由度機(jī)構(gòu),我們的研究還遠(yuǎn)遠(yuǎn)不夠。平面四桿機(jī)構(gòu)由于簡單,所以僅僅能實(shí)現(xiàn)簡單的功能,但隨著機(jī)械手、機(jī)械自動化機(jī)器人的發(fā)展,在機(jī)構(gòu)運(yùn)動和動力特性方面,人們有了更高的要求,國際上也十分注重這方面的研究。
MATLAB 的出現(xiàn)極大的幫助了機(jī)構(gòu)學(xué)的研究,MATLAB 能夠快速而精確的運(yùn)算復(fù)雜函
數(shù),同時 MATLAB 內(nèi)部有很多簡潔方便且實(shí)用的工具箱,能夠?yàn)闄C(jī)構(gòu)的分析和仿真提供相當(dāng)大的便利,軟件支持多種語言的擴(kuò)展、語法簡單、門檻低、使用方便,這樣就為機(jī)構(gòu)學(xué)的研究提供了一個很好的環(huán)境。
MATLAB 軟件具有系統(tǒng)建模方便直觀、仿真功能強(qiáng)大等特點(diǎn),能為機(jī)械系統(tǒng)的建模仿真提供一個強(qiáng)大而方便的工具。使用 MATLAB 軟件的 Simulink 仿真工具用于機(jī)械工程中機(jī)構(gòu)的運(yùn)動學(xué)仿真,簡單,直觀,只需通過 M 文件編寫運(yùn)動學(xué)方程,設(shè)定特殊時刻為初始值就可以得到任意時刻的位置、速度、加速度的值,并可以觀察它們在運(yùn)動周期內(nèi)的變化。通過基于 MATLAB 的強(qiáng)大的矩陣運(yùn)算能力,還可以方便得到三者之間的關(guān)系,這是一般解析方法所不及的[14]。就目前情況而言,MATLAB 已經(jīng)不再是“矩陣實(shí)驗(yàn)室”,而成為國際上最流行的科學(xué)與工程計算的軟件工具,以及一種具有廣泛應(yīng)用前景的全新的計算機(jī)高級編程語言,它在國內(nèi)外高校和科研部門正扮演著越來越重要的角色,功能也越來越強(qiáng)大,不斷適應(yīng)新的要求提出新的解決辦法[13]??梢灶A(yù)見,在科學(xué)運(yùn)算和科學(xué)繪
圖領(lǐng)域,MATLAB 語言將長期保持其獨(dú)一無二的地位,使用 MATLAB 可以很好地對機(jī)械系統(tǒng)進(jìn)行分析,為連桿機(jī)構(gòu)的建模仿真提供一個強(qiáng)大而方便的工具。
1.3 課題主要任務(wù)
本課題的主要研究內(nèi)容是平面四桿機(jī)構(gòu)的運(yùn)動學(xué)仿真分析及優(yōu)化設(shè)計,其主要任務(wù)如下:
(1)機(jī)構(gòu)運(yùn)動的數(shù)學(xué)模型的建立。建立數(shù)學(xué)模型的過程其實(shí)就是對機(jī)構(gòu)進(jìn)行詳細(xì)分析的過程,如角速度的分析,加速度的分析等,建立矩陣模型,用數(shù)學(xué)方法求出其他所需的值;
(2)使用 MATLAB 進(jìn)行 M 文件的編寫。根據(jù)數(shù)學(xué)模型編寫出相應(yīng)的 M 文件,用于實(shí)際問題的解決;
(3) Simulink 仿真模型的建立。使用 Simulink 進(jìn)行仿真,能夠快速準(zhǔn)確的顯示出速度隨時間的圖像、加速度隨時間的圖像等;
(4) GUI 人機(jī)交互界面的設(shè)計。做出一個簡潔直觀的界面、同時實(shí)現(xiàn)人機(jī)的友好交互,用戶可根據(jù)自己的實(shí)際需求輸入不同的參數(shù),從而得到相應(yīng)的圖像;
(5)將仿真得出的圖像進(jìn)行分析。根據(jù)前面工作所得到的參數(shù)數(shù)據(jù),結(jié)合實(shí)際情況分析,對平面四桿機(jī)構(gòu)的優(yōu)化提出意見。
2 平面四桿機(jī)構(gòu)的運(yùn)動學(xué)分析
2.1 概述
平面四桿機(jī)構(gòu)的連接形式一般為低副連接,一般由四個剛性構(gòu)件組成,四個剛性構(gòu)件均在同一平面內(nèi)運(yùn)動。
平面四桿機(jī)構(gòu)是機(jī)械學(xué)科中的最常見的一種機(jī)構(gòu),在各種機(jī)器設(shè)備中有大量的應(yīng)用, 而鉸鏈四桿機(jī)構(gòu)作為平面四桿機(jī)構(gòu)中具有代表性的一種,它是平面四桿機(jī)構(gòu)的基本形式, 其他類型的四桿機(jī)構(gòu)都可以看作是鉸鏈四桿機(jī)構(gòu)的衍生形式。對于四桿機(jī)構(gòu)的各桿,如 表 2.1 所示:
表 2.1 四桿機(jī)構(gòu)各桿的定義
連架桿
與機(jī)架直接相連
連桿
不與機(jī)架連接
曲柄
能夠 360°回轉(zhuǎn)
搖桿
只能在某一角度范圍內(nèi)往復(fù)擺動
根據(jù)主動桿是否可以作為曲柄,可將鉸鏈四桿機(jī)構(gòu)分為三類:1)曲柄搖桿機(jī)構(gòu);2) 雙曲柄機(jī)構(gòu);3)雙搖桿機(jī)構(gòu)。
由于平面四桿機(jī)構(gòu)有很多類型,因此我們不一一研究,只選取了兩個具有代表性的機(jī)構(gòu),即鉸鏈四桿機(jī)構(gòu)和曲柄滑塊機(jī)構(gòu)作為研究對象。
2.2 實(shí)例分析
設(shè)定一個平面四桿機(jī)構(gòu),取左側(cè)固定機(jī)架與連桿相交的端點(diǎn)作為坐標(biāo)原點(diǎn),建立一個平面直角坐標(biāo)系。
取固定機(jī)架為連桿 1,順時針方向依次為連桿 2、連桿 3、連桿 4,連桿長度分別為
r1、r2、r3 和 r4。規(guī)定各連桿和 x 軸正方向之間的夾角為θ(連桿角度),四桿機(jī)構(gòu)的矢量圖如圖 2.1 所示:
圖 2.1 四連桿機(jī)構(gòu)矢量圖
四個連桿角度分別為q1 、q2 、q3 和q4 ,其中q1 =0°。
設(shè)定四連桿的基本條件為: r1 =100mm; r2 =30mm; r3 =80mm; r4 =60mm。我們可以由圖得到一個矢量方程 R2 + R3 = R1 + R4
2.2.1 求解角速度w3 、w4 和加速度a3 、a4 的數(shù)學(xué)分析
(2.1)
為了方便將矢量方程求導(dǎo),首先需要將矢量方程分別沿 x 方向和 y 方向分解,得到兩個標(biāo)量表達(dá)式,即:
r2 cosq2 + r3 cosq3 = r1 cosq1 + r4 cosq4 r2 sinq2 + r3 sinq3 = r1 sinq1 + r4 sinq4 式中,q1 恒為零。
對式(2.2)和式(2.3)求時間倒數(shù),有:
-w2sinq2 -w3sinq3 = -w4r4sinq4
4
w2cosq2 + w3cosq3 = w r4cosq4
式中, w 為q 對時間的一階導(dǎo)數(shù)。
(2.2)
(2.3)
(2.4)
(2.5)
由于式(2.4)和式(2.5)確定了一種關(guān)系,用來制約平面四桿機(jī)構(gòu)中三個可動連桿間的相對轉(zhuǎn)動速率,在本例中,假定連桿 2 與一臺電動機(jī)相連,該電動機(jī)能夠提足夠大的驅(qū)動力使連桿 2 以 6000r/min 的速度勻速轉(zhuǎn)動,此時w2 為機(jī)構(gòu)的輸入。對式(2.4) 和式(2.5)進(jìn)行整理,得:
-w3r3sinq3 + w4r4sinq4 = w2r2sinq2
w3r3cosq3 -w4r4cosq4 = -w2r2cosq2
化為矩陣形式為:
(2.6)
(2.7)
? -r3 sinq3
r4 sinq4
? ?w3 ? = ?w2r2 sinq2 ?
? r cosq -r cosq ÷ ?w ÷ ? -w r cosq ÷
è 3 3 4 4 ? è 4 ? è
2 2 2 ?
(2.8)
對式(2.2)和式(2.3)求二階導(dǎo)數(shù),也就是對式(2.6)和式(2.7)再進(jìn)行求導(dǎo), 整理,轉(zhuǎn)化成矩陣形式,可得:
-r3 sinq3
r4 sinq4
é r cosq
-r cosq
ù éa
ù = é
2 2 3 3
4 4 ù
a3
r2a2 sinq2 +w2r cosq2 +w2r cosq3 -w2r cosq4
? 3 3 4 4 ? ? 4 ? ? -r2a2 cosq2 +w2r sinq2 +w2r sinq3 -w2r sinq4
(2.9)
2.2.2 求解位置q3 和q4 的數(shù)學(xué)分析:
2 2 3 3
4 4 ?
當(dāng) t=0 時,假定q2 =0,利用牛頓-辛普森方法求解位置方程的精確值。假設(shè)這兩個方程包含兩個未知量,這個問題可以表示為:
f1 (x1, x2 ) = 0
f2 (x1, x2 ) = 0
(2.10)
(2.11)
假設(shè)估計值為 X i ,精確值為 X i ,精確值與估計值之間的差值為Dxi 。用等式表達(dá)為:
f1 (x1 + Dx1, x2 + Dx2 ) = 0
f2 (x1 + Dx1, x2 + Dx2 ) = 0
運(yùn)用泰勒公式將式(2.12)等號左邊的部分展開,為:
(2.12)
(2.13)
f (x , x
) = f (x , x ) +
Dx
+ Dx
+ é高階項(xiàng)ù
(2.14)
1 1 2 1 1 2
x1 ,x2
1 2 ? ?
同理將式(2.11)展開,與式(2.14)合并,忽略不計高階項(xiàng),得到:
ì? f
( x ,x
)= f
( x , x
)+d f1 Dx + d f1 Dx
1 1 2 1 1 2
í
d x1
x1 ,x2
1 d x2
x1 ,x2 2
f ( x ,x
)= f
( x ,x
)+d f2 Dx +d f2 Dx
?? 2 1 2 2 1 2
d x1
x1 ,x2
1 d x2
x1 ,x2 2
(2.15)
轉(zhuǎn)化為矩陣形式為:
? d f1
d f1 ?
(f1 ( x1 ,x2 ) )+ ? d x1
x1 ,x2
d x2
x1 ,x2
÷ (Dx1
)= (0 )
f2 ( x1 ,x2 )
? d f2
d f2 ÷
Dx2 0
(2.16)
è d x1
x1 ,x2
d x2
x1 ,x2 ?
式(2.16)中給出了估計值與精確值之間差值的計算方法,為求Dxi ,將式轉(zhuǎn)化為:
? d f1
d f1 ?-1
(Dx1
)= ? d x1
x1 ,x2
d x2
x1 ,x2 ÷
(- f1 ( x1 ,x2 ) )
Dx2
? d f2
d f2 ÷
- f2 ( x1 ,x2 )
(2.17)
è d x1
x1 ,x2
d x2
x1 ,x2 ?
對于四連桿機(jī)構(gòu),可以將式(2.2)和式(2.3)轉(zhuǎn)化為:
f1(q3 ,q4 ) = r2cosq2 + r3cosq3 - r1 - r4cosq4 f1(q3 ,q4 ) = r2 sinq2 + r3 sinq3 - r4 sinq4 由于:
q3 = q3 + Dq3
q4 = q4 + Dq4
Dq4
r3 cosq3
-r4 cosq4
- f2 (q3 ,q4 )
(2.22)
所以有:
(2.18)
(2.19)
(2.20)
(2.21)
3 3 3 3 3 1 3 4
(Dq
)= (-r sinq
r sinq )-1 (- f (q
,q ) )
3 基于 MATLAB 的運(yùn)動分析及程序設(shè)計
3.1 MATLAB 概述
MATLAB 作為一款在全球內(nèi)廣泛使用的數(shù)學(xué)軟件,因其強(qiáng)大的功能和巨大的實(shí)用性, 受到了越來越多人的青睞。
MATLAB 的中文翻譯為矩陣實(shí)驗(yàn)室。顧名思義,MATLAB 基于矩陣運(yùn)算,只需要函數(shù)便可實(shí)現(xiàn)相關(guān)的功能,這是一個高科技的計算環(huán)境,主體為一個易于操作使用的視窗環(huán)境,但是能在這個環(huán)境下實(shí)現(xiàn)很多強(qiáng)大的功能,MATLAB 具有強(qiáng)大的圖像繪制和仿真能力,為許多需要進(jìn)行復(fù)雜函數(shù)運(yùn)算或建模仿真的眾多科學(xué)領(lǐng)域提供了一種全面而精確的解 決方案,代表了當(dāng)今國際科學(xué)計算軟件的先進(jìn)水平。
MATLAB 的基本數(shù)據(jù)單位是矩陣,所以可以完成函數(shù)繪制、矩陣運(yùn)算、創(chuàng)建人機(jī)界面等功能,并且在工程、信號、金融、分析等多個領(lǐng)域都得到了較為廣泛的應(yīng)用。再者,
MATLAB 的指令表達(dá)方式與工程中的常用表達(dá)方式也十分相似,增加了自己的兼容性,降低了使用的門檻,特別是對于非計算機(jī)專業(yè)的人來講,簡單易上手,這使得 MATLAB 在高校和研究機(jī)構(gòu)間受到了很大的歡迎。
MATLAB 的 特 點(diǎn) : 1)能夠高效快速的處理數(shù)值和符號運(yùn)算,使用戶大大的減輕了復(fù)雜數(shù)值運(yùn)算的工作
強(qiáng)度;
2)圖形處理功能完善,計算結(jié)果和編程過程可視;
3)界面友好,無論是學(xué)習(xí)者還是用戶,都易于學(xué)習(xí)和掌握;
4)應(yīng)用工具箱豐富實(shí)用,用戶能夠自由選擇所需的處理工具。
3.2 M 文件編寫
當(dāng) ω2 和連桿 2 的所有位置已知時,式(2.8)可以用來求解ω3 和ω4。將ω2 視為仿真的輸入,可以用數(shù)值積分從速度中計算出θ2、θ3、θ4。因?yàn)棣? 和ω4 兩個速度是從閉環(huán)矢量方程式中求得的,所以編寫一個 sigansudu.m 的 M 文件來儲存該函數(shù),文件的內(nèi)容如下:
function x=sigansudu (u) r=[100 30 80 60];
% r 為四連桿的各連桿長度
a=[-r(3)*sin(u(3)) r(4)*sin(u(4));
r(3)*cos(u(3)) -r(4)*cos(u(4))];
b=[u(1)*r(2)*sin(u(2));-u(1)*r(2)*cos(u(2))];
x=a\b;
% x 為計算所得的ω3 和ω4 的值
編寫 M 文件來求解θ3 和θ4,這是一個函數(shù)文件,文件命名為 weizhi.m,程序代碼為:
function x=weizhi(th)
%此函數(shù)有三個輸入值,分別為q2 、q3 、q4 ,兩個輸出值為q3 和q4 的精確值
th2=th(1);
% th2 為θ2 的初始值
th3cs=th(2);
% th3cs 為θ3 的初始估計值
th4cs=th(3);
% th4cs 為θ4 的初始估計值
r=[100 30 80 60];
%四連桿的各個桿的長度e=1.0e-6;
%e 為循環(huán)終止條件,當(dāng)計算的差值即 f 向量的模小于 e 時即停止循環(huán)
f=[r(3)*cos(th3cs)-r(4)*cos(th4cs)+r(2)*cos(th2)-r(1)
r(3)*sin(th3cs)-r(4)*sin(th4cs)+r(2)*sin(th2)]; while norm(f)>e;
J=[-r(3)*sin(th3cs) r(4)*sin(th4cs);
r(3)*cos(th3cs) -r(4)*cos(th4cs)]; d=inv(J)*(-1.0*f);
th3cs=th3cs+d(1); th4cs=th4cs+d(2);
f=[r(3)*cos(th3cs)-r(4)*cos(th4cs)+r(2)*cos(th2)-r(1)
r(3)*sin(th3cs)-r(4)*sin(th4cs)+r(2)*sin(th2)]; norm(f);
end; th3=th3cs; th4=th4cs; x=[th3,th4];
編寫 M 文件,求出α3 和α4 的值
function x=jiasudu(u)
% x 為計算所得的α3 和α4 的值
% u(1)為α2 的初始值
% u(2)為ω2 的初始值
% u(3)為ω3 的初始值
% u(4)為ω4 的初始值
% u(5)為θ2 的初始值;
% u(6)為θ3 的初始值
% u(7)為θ4 的初始值r1=100;
r2=30; r3=80; r4=60;
% r1,r2,r3,r4 分別為四連桿的各桿長度a=[-r3*sin(u(6)) r4*sin(u(7));
r3*cos(u(6)) -r4*cos(u(7))]; b=[r2*u(1)*sin(u(5))+r2*u(2)^2*cos(u(5))+r3*u(3)^2*cos(u(6))-r4*u(4)^2*
cos(u(7));
-r2*u(1)*cos(u(5))+r2*u(2)^2*sin(u(5))+r3*u(3)^2*sin(u(6))-r4*u(4)^2*sin(u( 7))];
x=a\b;
3.3 基于 MATLAB 的 Simulink 模型的建立
將文件 sigansudu.m 嵌入到 Simulink 仿真系統(tǒng)中的 function 塊中,在 Simulink 圖形方式中,總共包含 3 個積分模塊,1 個常量模塊,1 個 demuk 模塊,1 個 simout 模塊和 2 個 muk 模塊。
把各個模塊連接起來,得到相應(yīng)的 Smulink 仿真模型,如圖 3.1 所示:
圖 3.1 求解w3 和w4 的 Simulink 仿真模型
對于四連桿機(jī)構(gòu),仍取連桿 2 的初始速度為 6000r/min、加速度為-15rad/s2勻加速運(yùn)動的情況為例進(jìn)行運(yùn)動學(xué)仿真,畫出仿真框圖如圖 3.2 所示。該模型總共包含 6 個積分模塊:1 個 demux 模塊、1 個常量模塊、1 個 simout 模塊、1 個 function 模塊和 2 個
mux 模塊。將 jiasudu.m 文件嵌入到 function 模塊中,常量模塊中設(shè)定常量值為-15。
圖 3.2 四連桿機(jī)構(gòu)運(yùn)動學(xué)仿真 Simulink 模型
在該模型中,仍假定q2 =0,由之前的 M 文件可以得到w3 、w4 、q3 和q4 精確的初始值,也就是各積分器的初始條件,如表 3.1 所示:
表 3.1 勻加速仿真的初始條件
積分器
初始條件
q2 / rad
0
q3 / rad
0.76879354899197
q4 / rad
1.68712997846865
w2 / (rad / s)
628
w3 / (rad / s)
-294.375000000012
w4 / (rad / s)
-274.75000000226
3.4 程序運(yùn)行結(jié)果
在得出所有積分器的初始條件后,我們將精確數(shù)值輸入到相應(yīng)的積分器其中,然后點(diǎn)擊“run”按鈕,進(jìn)行仿真。
在文件 sigansudu.slx 中,
輸入以下 MATLAB 命令,查看連桿 3 和連桿 4 的速度隨時間變化的圖像plot(tout,simout(:,3),tout,simout(:,4));
xlabel('時間(s)');
ylabel('角速度(rad/s)');
連桿 3 和連桿 4 的速度隨時間變化的圖像如圖 3.3 所示:
圖 3.3 四連桿機(jī)構(gòu)連桿 3 和連桿 4 的角速度圖像
在文件 jiasudu.slx 中
輸入以下 MATLAB 命令,查看連桿 3 和連桿 4 的角加速度隨時間變化的圖像plot(tout,simout(:,6),tout,simout(:,7));
xlabel('時間(s)');
ylabel('角加速度(rad/s)');
連桿 3 和連桿 4 的角加速度隨時間變化的圖像如圖 3.4 所示:
圖 3.4 四連桿機(jī)構(gòu)中連桿 3 和連桿 4 的角加速度隨時間變化的曲線
在文件 jiasudu.slx 中
輸入以下 MATLAB 命令,查看連桿 3 和連桿 4 的角速度隨時間變化的圖像plot(tout,simout(:,2),tout,simout(:,4));
xlabel('時間(s)');
ylabel('角速度(rad/s)');
連桿 3 和連桿 4 的角速度隨時間變化的圖像如圖 3.5 所示:
圖 3.5 四連桿機(jī)構(gòu)中連桿 3 和連桿 4 的角速度仿真結(jié)果
在文件 jiasudu.slx 中
輸入以下 MATLAB 命令,查看連桿 3 和連桿 4 的位置隨時間變化的圖像plot(tout,simout(:,3),tout,simout(:,5)); xlabel('時間(s)');
ylabel('位置(rad)');
連桿 3 和連桿 4 的位置隨時間變化的圖像如圖 3.6 所示:
圖 3.6 四連桿機(jī)構(gòu)中連桿 3 和連桿 4 的位置隨時間變化的曲線
4 曲柄滑塊機(jī)構(gòu)的 GUI 設(shè)計
4.1 GUI 概述
GUI 又稱圖形用戶界面,是一個人機(jī)交互界面,用戶可通過鼠標(biāo)、鍵盤等輸入設(shè)備來控制界面中的輸入框、按鈕等控件,從而完成選擇、調(diào)用、打開、啟動等命令和一些其他日常的任務(wù)。GUI 界面是一個標(biāo)準(zhǔn)化的界面,所有控件的操作方式都是固定不變的, 但是 GUI 界面可以滿足不同的情況,不再單一的運(yùn)算某一種函數(shù),而是用戶根據(jù)不同的情況、來設(shè)定不同的輸入值,從而得到不同的結(jié)果。同時,GUI 界面輸出的結(jié)果大多可用圖形來表示,這樣就更加的直觀方便,具備很多其余界面無法媲美的功能,這是很多界面所比擬不了的。
GUI 界面的市場前景廣闊,由于 GUI 界面能給產(chǎn)品帶來很高的附加值,很多公司或機(jī)構(gòu)都在從事 GUI 的研究和設(shè)計,這對 GUI 的發(fā)展來說無疑是一個利好。在當(dāng)今社會, 計算機(jī)快速發(fā)展的主要成就之一就是 GUI 的廣泛應(yīng)用,對于一般用戶來講,GUI 的出現(xiàn)大大的方便了他們的使用,不需要進(jìn)行復(fù)雜繁瑣的操作,而是通過使用不同的控件,如菜單、按鈕等方式來進(jìn)行操作,降低了使用門檻,更加快捷、更加輕松,同時還能得到更為準(zhǔn)確的結(jié)果。
4.2 問題概況
曲柄滑塊機(jī)構(gòu)如圖 4.1 所示,OA=l1,AB=l2,曲柄 OA 以勻角速度ω轉(zhuǎn)動,并帶動連桿 AB 做平面運(yùn)動,滑塊 B 沿水平方向運(yùn)動,分析并模擬該機(jī)構(gòu)的運(yùn)動:
圖 4.1 曲柄滑塊機(jī)構(gòu)運(yùn)動學(xué)示意圖
4.3 數(shù)學(xué)分析
如圖 4.1 所示,規(guī)定φ為 OA 與 x 軸正方向的夾角,θ為 AB 與 x 軸正方向的夾角。以 AB 為研究對象,以 A 為基點(diǎn)、B 為動點(diǎn),運(yùn)用剛體平面運(yùn)動的基點(diǎn)法進(jìn)行分析,其速度分解如圖 4.2 所示:
圖 4.2 剛體平面運(yùn)動速度分解圖
根據(jù)基點(diǎn)法的速度合成定理有:
VB = VA +VBA
其中,VA = l1w ,VBA = l2q ,將式(4.1)向 x,y 方向投影并化簡得:
(4.1)
{
q = l1 cosf w
l2 cosq
VB =l2q sinq -l1w sinf
(4.2)
將式(4.2)對時間求導(dǎo)并化簡得:
q = l1 cosf sinqqw -l1 sinf cosqw2
{ l2 cos2 q
aB =
l1w
cos2 q
(cosfq -cosq cos(f -q )w )
(4.3)
設(shè) y1 = f ,y2 = f ,y3 = q ,y4 = q ,y5 = xB ,y6 = xB ,定義矩陣 y = [y1, y2 , y3 , y4 , y5 , y6 ]來分別保存這 6 個運(yùn)動變量在各個時間點(diǎn)上的取值。這時我們選擇 ode 函數(shù)來求解 y 這個運(yùn)動變量,首先需要求出 y 的微分形式和初值,根據(jù)式(4.3),y 的微分方程組如下:
? dt
2
ì dy1 = y
?
? dt
? dy2 = 0
?
? dt
? dy3 = y
? 4
(4.4)
dy l
í
? ?4 = ?1 (cos y sin y w y
- l sin y cos y w2 )
2 3
? dt l
?
cos2 y
1 3 4 1 1 3
? dy5 = y
? dt
?
? dy6 =
6
l1w
( y cos y - cos y cos( y - y )w )
3
?? dt
cos2 y
4 1 3 1 3
設(shè)初始時φ=0,θ=π,則可推導(dǎo)出 X
= l + l ,f = w ,q =- l1 w ,V = 0 ,則有
l
B 1 2 B
2
運(yùn)動變量初值 y = é0,w,p , - l1 w, l
+ l , 0ù 。根據(jù)式(4.4),編寫出 ode 函數(shù)如圖 4.3 所
0 ê
? l2
示:
1 2 ú
?
圖4.3 ode函數(shù)程序
并將該文件保存為f7.m文件。
4.4 界面設(shè)計
設(shè)計 GUI 人機(jī)交互界面,我們可以大致的分為兩個步驟:
○ 1 人機(jī)交互界面的外觀設(shè)計。按照界面的需求,通過添加不同控件,如文本框、按鈕、按鈕組和對話框等控件,設(shè)計出一個簡潔大方、使用方便的人機(jī)交互界面。同時明確該交互界面的功能,即在交互界面上的操作會得到相應(yīng)怎樣的結(jié)果。
○ 2 交互界面的完成。在這一部分,用戶將根據(jù)在第一階段所確定的界面不同控件的
不同功能,為了達(dá)到界面的預(yù)期效果,編寫出能夠?qū)崿F(xiàn)相應(yīng)功能的函數(shù)代碼,確保這個圖形界面能實(shí)現(xiàn)預(yù)定的功能。
根據(jù)式(4.4)可知 OA=l1、AB=l2 和 OA 桿的角速度ω三個變量為運(yùn)動參數(shù),在 GUI 界面左上的輸入?yún)^(qū)域設(shè)置 4 個編輯框分別來接受 l、a 和ω這 3 個運(yùn)動參數(shù)和模擬時間。轉(zhuǎn)角φ在整個運(yùn)動過程中單調(diào)遞增,所以設(shè)置了時間 t、φ為查詢條件。
進(jìn)入 GUI 界面初始環(huán)境,添加 13 個編輯文本框,12 個靜態(tài)文本框、6 個按鈕、3 個坐標(biāo)軸和 1 個分組控件,同時創(chuàng)建 Open、Print、Close 三個菜單。
在將所有所需的控件都添加到界面中后,拖動它們到相應(yīng)的位置,在調(diào)整好位置之后,設(shè)置各控件的屬性。最后的界面效果如圖 4.4 所示:
圖 4.4 用戶界面設(shè)計
“曲線”按鈕回調(diào)函數(shù):
設(shè)置 axes2 的 x 軸、y 軸分別為
(時間/s)、(位移(m)、速度(m/s)、加速度(m/s2))
在 axes2 上畫 B 點(diǎn)位移、速度、加速度曲線
、
4.5 主要代碼設(shè)計流程
為了滿足 GUI 的使用需要,在完成界面設(shè)計的基礎(chǔ)上,將相應(yīng)的代碼輸入到各自的回調(diào)函數(shù)中,可將主要控件的代碼設(shè)計歸納為下圖所示:
“計算”按鈕設(shè)計流程: “曲線”按鈕設(shè)計流程:
設(shè)置全局變量
申明全局變量
設(shè)置“曲線”、“動畫”、“保存數(shù)據(jù)”按鈕不可用
在 axes1 上畫 seta 角、角速度、角加速度曲線
將相關(guān)運(yùn)動參數(shù)讀入變量
l1、l2 和 omega
設(shè)置 axes1 的 x 軸、y 軸分別為
(時間/s)、(轉(zhuǎn)角(rad)、角速度
(rad/s)、角加速度(rad/s2))
將模擬時間賦給 tfinal
標(biāo)記三條曲線為“seta 角”、“seta 角速度”、“seta 角加速度”
設(shè)置“曲線”、“動畫”、
“保存數(shù)據(jù)”按鈕可用
標(biāo)記三條曲線為“B 點(diǎn)位移”、“B 點(diǎn)速度”、“B 點(diǎn)加速度”
以時間為條件進(jìn)行查詢
設(shè)置“phi=”所對應(yīng)的編輯框?yàn)榭捎?
設(shè)置“phi=”所對應(yīng)的編輯框?yàn)椴豢捎?
模擬機(jī)構(gòu)運(yùn)動
設(shè)置時間查詢所對應(yīng)的編輯框?yàn)榭捎?
設(shè)置模擬各桿運(yùn)動的句柄
選擇了 dx1 單選框時(以時間為查詢對象),設(shè)置 f=1
設(shè)置模擬各點(diǎn)運(yùn)動的句柄
“動畫”按鈕設(shè)計流程: 分組控件設(shè)計流程:
申明全局變量
申明全局變量
設(shè)定橫、縱坐標(biāo)軸的范圍
取得被選擇對象的 Tag 屬性值
選擇了 dx2 單選框時(以 phi 為查詢對象),設(shè)置 f=2
“查詢”按鈕設(shè)計流程:
申明全局變量
設(shè)置時間查詢所對應(yīng)的編輯框?yàn)椴豢捎?
計算線型差值的兩個系數(shù)
m,n
以φ為條件進(jìn)行查詢
計算線型差值的兩個系數(shù)
m,n
4.6 界面結(jié)果展示
在第一部分 OA 編輯框內(nèi)輸入 1、AB 編輯框內(nèi)輸入 3、角速度編輯框內(nèi)輸入 0.5,最后在模擬時間編輯框內(nèi)輸入 60,依次點(diǎn)擊按鈕計算、曲線和動畫,之后再查詢條件框內(nèi)輸入相應(yīng)的查詢條件,得到的仿真和查詢結(jié)果如圖 4.5 所示:
圖 4.5 用戶界面運(yùn)行結(jié)果示意
在該 GUI 界面中,能夠十分清晰明了的看見θ角的各項(xiàng)參數(shù)和 B 點(diǎn)各項(xiàng)參數(shù)的變化情況,并且能夠通過查詢某一時刻的φ值,得到該時刻各項(xiàng)參數(shù)的瞬時值,有曲線圖的同時還有機(jī)構(gòu)運(yùn)動的仿真動畫,十分的直觀方便,使用者可根據(jù)自己的不同需要進(jìn)行設(shè)計和仿真。
在 Simulink 仿真圖和 GUI 界面中,我們能發(fā)現(xiàn)相同的一點(diǎn),就是兩種仿真形式, 都能夠直觀的看到各桿的運(yùn)動參數(shù),無論是哪一種方法,都很方便,都能夠?yàn)樗臈U的仿真分析提供一個很好的辦法。
5 平面四桿機(jī)構(gòu)的優(yōu)化設(shè)計
5.1 四桿的優(yōu)化設(shè)計方法
機(jī)構(gòu)的優(yōu)化,就是在給定的機(jī)構(gòu)學(xué)、運(yùn)動學(xué)、動力學(xué)的要求下,在滿足結(jié)構(gòu)設(shè)計要求的前提下,將其他因素的限制在一個合理的范圍內(nèi),并建立某種設(shè)計準(zhǔn)則(目標(biāo)函數(shù)),不斷調(diào)整設(shè)計參數(shù),進(jìn)行優(yōu)化計算,獲得最佳的設(shè)計方案。對于平面四桿機(jī)構(gòu)來講,優(yōu)化的基本問題是在設(shè)定好目標(biāo)函數(shù)的前提下,根據(jù)實(shí)際情況增加相應(yīng)的約束條件,最后再進(jìn)行優(yōu)化計算,目的是找到最優(yōu)的設(shè)計參數(shù),其步驟如圖 5.1 所示:
如不滿足, 跳回第一步
圖 5.1 優(yōu)化設(shè)計步驟
在進(jìn)行設(shè)計的時候,大多數(shù)的實(shí)際工程問題都可以用數(shù)學(xué)公式來建模描述,三個主要考慮的因素為設(shè)計變量、目標(biāo)函數(shù)和約束條件。也就是為了使得目標(biāo)函數(shù)能夠達(dá)到設(shè)計人員的要求,給機(jī)構(gòu)一些約束條件,從而再去尋找合適的設(shè)計變量值。
5.2 建立數(shù)學(xué)模型
首先,應(yīng)確定設(shè)計變量,在鉸鏈四桿機(jī)構(gòu)各桿長度不知道的情況下,由于機(jī)構(gòu)運(yùn)動規(guī)律不變,所以設(shè)主動件 l1 的長度為 1,其余桿長便為 l1 的倍數(shù),這樣的目的是使桿長能夠按比例分布計算,簡化了計算和編程。
我們設(shè)定桿 1 即 l1 的初始角度為j0 ,桿 2 即 l2 的初始角度為φ0,分析可得:
? 0
ìj = arccos (l1 +l2 )2 +l42 -l32
2(l1 +l2 )l4
í (l +l )2 +l 2 -l 2
??f0 =arccos
1 2 4 3
2l3l4
(5.1)
從式子可以看出,設(shè)計變量只有 l2、l3 和 l4。故將該設(shè)計變量改寫為:
X = [x1; x2 ; x3 ] = [l2 ;l3;l4 ]
(5.2)
在進(jìn)行目標(biāo)函數(shù)的建立時,設(shè)計目標(biāo)定為追求從動件實(shí)際輸入角度系列值與期望實(shí)現(xiàn)函數(shù)的平方偏差之和最小,即:
n
2
min f ( X ) = ?(fEi -fi )
i=0
(5.3)
其中:n 將輸出角度等分,fEi 為期望輸出角度,fi 為實(shí)際輸出角度,分析兩個不同的輸出角度,我們可以得出一個關(guān)系式:
= {
f
p -ai -bi (0
收藏