版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、一、課程設(shè)計(jì)內(nèi)容及要求:1對(duì)連桿機(jī)構(gòu)運(yùn)動(dòng)工作原理及運(yùn)動(dòng)參數(shù)有一定理解2掌握MATLAB基本命令3了解MATLAB編程的基本知識(shí),并能編寫簡(jiǎn)單M文件4了解MATLAB圖形界面設(shè)計(jì)的基本知識(shí)5課程設(shè)計(jì)說(shuō)明書(shū):應(yīng)闡述整個(gè)課程設(shè)計(jì)內(nèi)容,要突出重點(diǎn)和特色,圖文并茂,文字通暢。應(yīng)有目錄、摘要及關(guān)鍵詞、正文、參考文獻(xiàn)等內(nèi)容,字?jǐn)?shù)一般不少于6000字。二、主要參考資料有關(guān)復(fù)雜刀具參數(shù)計(jì)算及結(jié)構(gòu)設(shè)計(jì)、機(jī)械制造工藝與設(shè)備的手冊(cè)與圖冊(cè)。三、課程設(shè)計(jì)進(jìn)度安排階段階 段 內(nèi) 容起止時(shí)間1布置任務(wù),準(zhǔn)備資料1天(12月12日)2方案設(shè)計(jì)1天(12月13日)3設(shè)計(jì)計(jì)算4天(12月1417日)4程序流程圖設(shè)計(jì)8天(12月18
2、25日)5M文件編寫2天(12月2627日)6編寫設(shè)計(jì)說(shuō)明書(shū)3天(12月2830日)7準(zhǔn)備答辯和正式答辯1天(12月31日)指導(dǎo)教師(簽名): 時(shí)間: 教研室主任(簽名): 時(shí)間: 院 長(zhǎng)(簽名): 時(shí)間: 目 錄1 平面連桿機(jī)構(gòu)的運(yùn)動(dòng)分析.11.1 機(jī)構(gòu)運(yùn)動(dòng)分析的任務(wù)、目的和方法.11.2 機(jī)構(gòu)的工作原理.11.3 機(jī)構(gòu)的數(shù)學(xué)模型的建立.11.3.1建立機(jī)構(gòu)的閉環(huán)矢量位置方程.11.3.2求解方法.22 基于MATLAB程序設(shè)計(jì).42.1 程序流程圖.42.2 M文件編寫.62.3 程序運(yùn)行結(jié)果輸出.73 基于MATLAB圖形界面設(shè)計(jì).113.1界面設(shè)計(jì).113.2代碼設(shè)計(jì).124 小結(jié).1
3、7參考文獻(xiàn) .181 平面連桿機(jī)構(gòu)的運(yùn)動(dòng)分析1.1 機(jī)構(gòu)運(yùn)動(dòng)分析的任務(wù)、目的和方法曲柄搖桿機(jī)構(gòu)是平面連桿機(jī)構(gòu)中最基本的由轉(zhuǎn)動(dòng)副組成的四桿機(jī)構(gòu),它可以用來(lái)實(shí)現(xiàn)轉(zhuǎn)動(dòng)和擺動(dòng)之間運(yùn)動(dòng)形式的轉(zhuǎn)換或傳遞動(dòng)力。對(duì)四桿機(jī)構(gòu)進(jìn)行運(yùn)動(dòng)分析的意義是:在機(jī)構(gòu)尺寸參數(shù)已知的情況下,假定主動(dòng)件(曲柄)做勻速轉(zhuǎn)動(dòng),撇開(kāi)力的作用,僅從運(yùn)動(dòng)幾何關(guān)系上分析從動(dòng)件(連桿、搖桿)的角位移、角速度、角加速度等運(yùn)動(dòng)參數(shù)的變化情況。還可以根據(jù)機(jī)構(gòu)閉環(huán)矢量方程計(jì)算從動(dòng)件的位移偏差。上述這些內(nèi)容,無(wú)論是設(shè)計(jì)新的機(jī)械,還是為了了解現(xiàn)有機(jī)械的運(yùn)動(dòng)性能,都是十分必要的,而且它還是研究機(jī)械運(yùn)動(dòng)性能和動(dòng)力性能提供必要的依據(jù)。機(jī)構(gòu)運(yùn)動(dòng)分析的方法很多,主要
4、有圖解法和解析法。當(dāng)需要簡(jiǎn)捷直觀地了解機(jī)構(gòu)的某個(gè)或某幾個(gè)位置的運(yùn)動(dòng)特性時(shí),采用圖解法比較方便,而且精度也能滿足實(shí)際問(wèn)題的要求。而當(dāng)需要精確地知道或要了解機(jī)構(gòu)在整個(gè)運(yùn)動(dòng)循環(huán)過(guò)程中的運(yùn)動(dòng)特性時(shí),采用解析法并借助計(jì)算機(jī),不僅可獲得很高的計(jì)算精度及一系列位置的分析結(jié)果,并能繪制機(jī)構(gòu)相應(yīng)的運(yùn)動(dòng)線圖,同時(shí)還可以把機(jī)構(gòu)分析和機(jī)構(gòu)綜合問(wèn)題聯(lián)系起來(lái),以便于機(jī)構(gòu)的優(yōu)化設(shè)計(jì)。1.2 機(jī)構(gòu)的工作原理 在平面四桿機(jī)構(gòu)中,其具有曲柄的條件為:a.各桿的長(zhǎng)度應(yīng)滿足桿長(zhǎng)條件,即:最短桿長(zhǎng)度+最長(zhǎng)桿長(zhǎng)度其余兩桿長(zhǎng)度之和。 b.組成該周轉(zhuǎn)副的兩桿中必有一桿為最短桿,且其最短桿為連架桿或機(jī)架(當(dāng)最短桿為連架桿時(shí),四桿機(jī)構(gòu)為曲柄搖桿
5、機(jī)構(gòu);當(dāng)最短桿為機(jī)架時(shí),則為雙曲柄機(jī)構(gòu))。在如下圖1所示的曲柄搖桿機(jī)構(gòu)中,構(gòu)件AB為曲柄,則B點(diǎn)應(yīng)能通過(guò)曲柄與連桿兩次共線的位置。1.3 機(jī)構(gòu)的數(shù)學(xué)模型的建立1.3.1建立機(jī)構(gòu)的閉環(huán)矢量位置方程在用矢量法建立機(jī)構(gòu)的位置方程時(shí),需將構(gòu)件用矢量來(lái)表示,并作出機(jī)構(gòu)的封閉矢量多邊形。如圖1所示,先建立一直角坐標(biāo)系。設(shè)各構(gòu)件的長(zhǎng)度分別為、,其方位角為、。以各桿矢量組成一個(gè)封閉矢 量多邊形,即ABCDA。其個(gè)矢量 圖1 四桿機(jī)構(gòu)簡(jiǎn)圖之和必等于零。即: 式1式1 為圖1所示四桿機(jī)構(gòu)的封閉矢量位置方程式。對(duì)于一個(gè)特定的四桿機(jī)構(gòu),其各構(gòu)件的長(zhǎng)度和原動(dòng)件2的運(yùn)動(dòng)規(guī)律,即為已知,而=0,故由此矢量方程可求得未知方位
6、角、。角位移方程的分量形式為: 式2閉環(huán)矢量方程分量形式對(duì)時(shí)間求一階導(dǎo)數(shù)(角速度方程)為: 式3其矩陣形式為: 式4聯(lián)立式3兩公式可求得: 式5 式6閉環(huán)矢量方程分量形式對(duì)時(shí)間求二階導(dǎo)數(shù)(角加速度方程)矩陣形式為: 式7由式7可求得加速度: 式8 式9注:式1式9中,(i=1,2,3,4)分別表示機(jī)架1、曲柄2、連桿3、搖桿4的長(zhǎng)度;(i=1,2,3,4)是各桿與x軸的正向夾角,逆時(shí)針為正,順時(shí)針為負(fù),單位為; 是各桿的角速度,單位為; 為各桿的角加速度,單位為。1.3.2求解方法(1)求導(dǎo)中應(yīng)用了下列公式: 式10(2)在角位移方程分量形式(式2)中,由于假定機(jī)架為參考系,矢量1與x軸重合,
7、=0,則有非線性超越方程組: 式11可以借助牛頓-辛普森數(shù)值解法或Matlab自帶的fsolve函數(shù)求出連桿3的角位移和搖桿4的角位移。(3)求解具有n個(gè)未知量(i=1,2,n)的線性方程組: 式12式中,系列矩陣是一個(gè)階方陣: 式13的逆矩陣為;常數(shù)項(xiàng)b是一個(gè)n維矢量: 式14因此,線性方程組解的矢量為: 式15式11是求解連桿3和搖桿4角速度和角加速度的依據(jù)。2 基于MATLAB程序設(shè)計(jì)MATLAB 是Mathworks 公司推出的交互式計(jì)算分析軟件,具有強(qiáng)大的運(yùn)算分析功能,具有集科學(xué)計(jì)算、程序設(shè)計(jì)和可視化于一體的高度集成化軟件環(huán)境,是目前國(guó)際上公認(rèn)的最優(yōu)秀的計(jì)算分析軟件之一,被廣泛應(yīng)用于
8、自動(dòng)控制、信號(hào)處理、機(jī)械設(shè)計(jì)、流體力學(xué)和數(shù)理統(tǒng)計(jì)等工程領(lǐng)域。通過(guò)運(yùn)算分析,MATLAB 可以從眾多的設(shè)計(jì)方案中尋找最佳途徑,獲取最優(yōu)結(jié)果,大大提高了設(shè)計(jì)水平和質(zhì)量。四連桿機(jī)構(gòu)的解析法同樣可以用MATLAB 的計(jì)算工具來(lái)求值,并結(jié)合MATLAB 的可視化手段,把各點(diǎn)的計(jì)算值擬合成曲線,得到四連桿機(jī)構(gòu)的運(yùn)動(dòng)仿真軌跡。2.1 程序流程圖2.2 M文件編寫首先創(chuàng)建函數(shù)FoutBarPosition,函數(shù)fsolve通過(guò)他確定。function t=fourbarposition(th,th2,L2,L3,L4,L1)t=L2*cos(th2)+L3*cos(th(1)-L4*cos(th(2)-L1;
9、L2*sin(th2)+L3*sin(th(1)-L4*sin(th(2);主程序如下:disp * * * * * * 平面四桿機(jī)構(gòu)的運(yùn)動(dòng)分析 * * * * * *L1=304.8;L2=101.6;L3=254.0;L4=177.8; %給定已知量,各桿長(zhǎng)L1,L2,L3,L4th2=0:1/6:2*pi; %曲柄輸入角度從0至360度,步長(zhǎng)為pi/6th34=zeros(length(th2),2); %建立一個(gè)N行2列的零矩陣,第一列存放options=optimset(display,off); %_3,第二列存放_(tái)3for m=1:length(th2) %建立for循環(huán),求解_
10、3,_4th34(m,:)=fsolve(fourbarposition,1 1, %調(diào)用fsove函數(shù)求解關(guān)于_3,_4options,th2(m),L2,L3,L4,L1); %的非線性超越方程,結(jié)果保存在th34中endy=L2*sin(th2)+L3*sin(th34(:,1); %連桿3的D端點(diǎn)Y坐標(biāo)值x=L2*cos(th2)+L3*cos(th34(:,1); %連桿3的D端點(diǎn)X坐標(biāo)值xx=L2*cos(th2); %連桿3的C端點(diǎn)X坐標(biāo)值 yy=L2*sin(th2); %連桿3的C端點(diǎn)Y坐標(biāo)值figure(1)plot(x;xx,y;yy,k,0 L1,0 0, %繪制連桿3
11、的幾個(gè)位置點(diǎn)k-,x,y,ko,xx,yy,ks)title(連桿3的幾個(gè)位置點(diǎn))xlabel(水平方向)ylabel(垂直方向)axis equal %XY坐標(biāo)均衡th2=0:2/72:2*pi; %重新細(xì)分曲柄輸入角度_2,步長(zhǎng)為5度th34=zeros(length(th2),2);options=optimset(display,off);for m=1:length(th2)th34(m,:)=fsolve(fourbarposition,1 1,options,th2(m),L2,L3,L4,L1);endfigure(2)plot(th2*180/pi,th34(:,1),th2
12、*180/pi,th34(:,2) %繪制連桿3的角位移關(guān)于曲柄2的角位移圖plot(th2*180/pi,th34(:,1)*180/pi,th2*180/pi,th34(:,2)*180/pi) %繪制搖桿4的角位移關(guān)于曲柄2的角位移圖axis(0 360 0 170) %確定XY邊界值grid %圖形加網(wǎng)格xlabel(主動(dòng)件轉(zhuǎn)角theta_2(度)ylabel(從動(dòng)件角位移(度)title(角位移線圖)text(120,120,搖桿4角位移)text(150,40,連桿3角位移)w2=250; %設(shè)定曲柄角速度f(wàn)or i=1:length(th2)A=-L3*sin(th34(i,1)
13、 L4*sin(th34(i,2); L3*cos(th34(i,1) -L4*cos(th34(i,2);B=w2*L2*sin(th2(i); -w2*L2*cos(th2(i);w=inv(A)*B;w3(i)=w(1);w4(i)=w(2);endfigure(3)plot(th2*180/pi,w3,th2*180/pi,w4); %繪制角速度線圖axis(0 360 -175 200) text(50,160,搖桿4角速度(omega_4)text(220,130,連桿3角速度(omega_3)gridxlabel(主動(dòng)件轉(zhuǎn)角theta_2(度)ylabel(從動(dòng)件角速度(radc
14、dot s-1)title(角速度線圖)for i=1:length(th2)C=-L3*sin(th34(i,1) L4*sin(th34(i,2);L3*cos(th34(i,1) -L4*cos(th34(i,2);D=w22*L2*cos(th2(i)+w3(i)2*L3*cos(th34(i,1)-w4(i)2*L4*cos(th34(i,2);. w22*L2*sin(th2(i)+w3(i)2*L3*sin(th34(i,1)-w4(i)2*L4*sin(th34(i,2);a=inv(C)*D;a3(i)=a(1);a4(i)=a(2);endfigure(4)plot(th2
15、*180/pi,a3,th2*180/pi,a4); %繪制角加速度線圖axis(0 360 -70000 65000)text(50,50000,搖桿4角加速度(alpha_4)text(220,12000,連桿3角加速度(alpha_3)gridxlabel(從動(dòng)件角加速度)ylabel(從動(dòng)件角加速度(radcdot s-2)title(角加速度線圖)disp 曲柄轉(zhuǎn)角 連桿轉(zhuǎn)角-搖桿轉(zhuǎn)角-連桿角速度-搖桿角速度-連桿加速度-搖桿加速度 %輸出:四桿機(jī)構(gòu)一個(gè)運(yùn)動(dòng)周期內(nèi)角位移,角速度,角加速度數(shù)據(jù)ydcs=th2*180/pi,th34(:,1)*180/pi,th34(:,2)*180/
16、pi,w3,w4,a3,a4;disp(ydcs)2.3 程序運(yùn)行結(jié)果輸出 * * * * * * 平面四桿機(jī)構(gòu)的運(yùn)動(dòng)分析 * * * * * *曲柄轉(zhuǎn)角 連桿轉(zhuǎn)角-搖桿轉(zhuǎn)角-連桿角速度-搖桿角速度-連桿加速度-搖桿加速度 1.0e+004 * 0 0.0044 0.0097 -0.0125 -0.0125 -0.5478 4.8458 0.0005 0.0042 0.0094 -0.0126 -0.0107 0.2300 5.5630 0.0010 0.0039 0.0092 -0.0124 -0.0086 0.8946 6.0520 0.0015 0.0037 0.0091 -0.0119
17、 -0.0065 1.4143 6.2982 0.0020 0.0034 0.0090 -0.0114 -0.0043 1.7801 6.3174 0.0025 0.0032 0.0089 -0.0107 -0.0021 2.0027 6.1467 0.0030 0.0030 0.0089 -0.0100 0.0000 2.1046 5.8339 0.0035 0.0028 0.0089 -0.0093 0.0020 2.1134 5.4272 0.0040 0.0026 0.0090 -0.0085 0.0038 2.0566 4.9687 0.0045 0.0025 0.0091 -0.0
18、078 0.0054 1.9578 4.4918 0.0050 0.0023 0.0092 -0.0072 0.0069 1.8356 4.0198 0.0055 0.0022 0.0093 -0.0065 0.0082 1.7040 3.5680 0.0060 0.0021 0.0095 -0.0060 0.0094 1.5725 3.1450 0.0065 0.0019 0.0097 -0.0055 0.0104 1.4474 2.7545 0.0070 0.0018 0.0099 -0.0050 0.0113 1.3328 2.3968 0.0075 0.0017 0.0102 -0.0
19、045 0.0121 1.2307 2.0702 0.0080 0.0017 0.0104 -0.0041 0.0128 1.1425 1.7716 0.0085 0.0016 0.0107 -0.0037 0.0134 1.0687 1.4971 0.0090 0.0015 0.0110 -0.0034 0.0138 1.0095 1.2426 0.0095 0.0014 0.0112 -0.0030 0.0142 0.9653 1.0035 0.0100 0.0014 0.0115 -0.0027 0.0145 0.9364 0.7752 0.0105 0.0013 0.0118 -0.0
20、024 0.0148 0.9232 0.5530 0.0110 0.0013 0.0121 -0.0020 0.0149 0.9269 0.3319 0.0115 0.0013 0.0124 -0.0017 0.0150 0.9485 0.1069 0.0120 0.0012 0.0127 -0.0014 0.0150 0.9899 -0.1276 0.0125 0.0012 0.0130 -0.0010 0.0149 1.0530 -0.3773 0.0130 0.0012 0.0133 -0.0006 0.0147 1.1404 -0.6481 0.0135 0.0012 0.0136 -
21、0.0002 0.0145 1.2544 -0.9455 0.0140 0.0012 0.0139 0.0002 0.0141 1.3967 -1.2743 0.0145 0.0012 0.0142 0.0008 0.0136 1.5677 -1.6368 0.0150 0.0012 0.0144 0.0013 0.0129 1.7648 -2.0314 0.0155 0.0012 0.0147 0.0020 0.0121 1.9807 -2.4495 0.0160 0.0013 0.0149 0.0027 0.0112 2.2018 -2.8735 0.0165 0.0013 0.0151
22、0.0035 0.0101 2.4071 -3.2754 0.0170 0.0014 0.0153 0.0044 0.0089 2.5697 -3.6186 0.0175 0.0015 0.0155 0.0053 0.0076 2.6616 -3.8650 0.0180 0.0016 0.0156 0.0063 0.0063 2.6609 -3.9849 0.0185 0.0018 0.0157 0.0072 0.0049 2.5591 -3.9674 0.0190 0.0019 0.0158 0.0080 0.0035 2.3638 -3.8244 0.0195 0.0021 0.0159
23、0.0088 0.0022 2.0959 -3.5866 0.0200 0.0023 0.0159 0.0095 0.0010 1.7823 -3.2931 0.0205 0.0025 0.0159 0.0100 -0.0001 1.4487 -2.9815 0.0210 0.0027 0.0159 0.0105 -0.0011 1.1152 -2.6809 0.0215 0.0029 0.0159 0.0108 -0.0020 0.7942 -2.4103 0.0220 0.0031 0.0158 0.0111 -0.0028 0.4916 -2.1794 0.0225 0.0033 0.0
24、158 0.0112 -0.0035 0.2086 -1.9913 0.0230 0.0036 0.0157 0.0112 -0.0042 -0.0565 -1.8450 0.0235 0.0038 0.0156 0.0111 -0.0048 -0.3071 -1.7375 0.0240 0.0040 0.0155 0.0110 -0.0054 -0.5475 -1.6650 0.0245 0.0042 0.0154 0.0108 -0.0060 -0.7817 -1.6233 0.0250 0.0044 0.0153 0.0104 -0.0065 -1.0139 -1.6089 0.0255
25、 0.0046 0.0151 0.0100 -0.0071 -1.2479 -1.6181 0.0260 0.0048 0.0150 0.0096 -0.0077 -1.4868 -1.6480 0.0265 0.0050 0.0148 0.0090 -0.0082 -1.7336 -1.6955 0.0270 0.0052 0.0146 0.0084 -0.0088 -1.9905 -1.7574 0.0275 0.0054 0.0145 0.0076 -0.0095 -2.2588 -1.8304 0.0280 0.0055 0.0143 0.0068 -0.0101 -2.5391 -1
26、.9100 0.0285 0.0056 0.0141 0.0058 -0.0108 -2.8305 -1.9910 0.0290 0.0057 0.0138 0.0048 -0.0115 -3.1300 -2.0660 0.0295 0.0058 0.0136 0.0037 -0.0122 -3.4326 -2.1255 0.0300 0.0059 0.0133 0.0024 -0.0130 -3.7297 -2.1572 0.0305 0.0059 0.0131 0.0011 -0.0137 -4.0091 -2.1451 0.0310 0.0059 0.0128 -0.0004 -0.01
27、45 -4.2538 -2.0696 0.0315 0.0059 0.0125 -0.0019 -0.0152 -4.4419 -1.9079 0.0320 0.0058 0.0122 -0.0035 -0.0158 -4.5473 -1.6352 0.0325 0.0058 0.0119 -0.0051 -0.0163 -4.5411 -1.2273 0.0330 0.0056 0.0115 -0.0066 -0.0166 -4.3954 -0.6661 0.0335 0.0055 0.0112 -0.0081 -0.0167 -4.0889 0.0551 0.0340 0.0053 0.0
28、109 -0.0095 -0.0166 -3.6129 0.9243 0.0345 0.0051 0.0105 -0.0106 -0.0161 -2.9781 1.9058 0.0350 0.0049 0.0102 -0.0115 -0.0152 -2.2178 2.9395 0.0355 0.0047 0.0099 -0.0122 -0.0140 -1.3857 3.9473 0.0360 0.0044 0.0097 -0.0125 -0.0125 -0.5478 4.8458圖形輸出: 圖2 連桿3的幾個(gè)位置點(diǎn) 圖3 角位移線圖 圖4 角加速度線圖 圖5 角加速度線圖3 基于MATLAB圖
29、形界面設(shè)計(jì)所謂圖形用戶界面, 簡(jiǎn)稱為GU I (Graph ic U ser In terface) , 是指包含了各種圖形控制對(duì)象, 如圖形窗口、菜單、對(duì)話框以及文本等內(nèi)容的用戶界面。利用這些用戶界面, 用戶可以和計(jì)算機(jī)之間進(jìn)行信息交流。用戶可以通過(guò)某種方式來(lái)選擇或者激活這些圖形對(duì)象, 來(lái)運(yùn)行一些特性的M 文件。最常見(jiàn)的激活方式是利用鼠標(biāo)或者其它設(shè)備來(lái)點(diǎn)擊這些對(duì)象。對(duì)于一個(gè)用戶來(lái)說(shuō), 圖形用戶界面就是他所面對(duì)的應(yīng)用程序, 對(duì)圖形界面的操作直接影響應(yīng)用程序的應(yīng)用前途。對(duì)于以往專門用于科學(xué)計(jì)算的語(yǔ)言, 如FORTRAN 語(yǔ)言等, 編寫圖形界面的功能較弱, 因而用其開(kāi)發(fā)的程序, 其界面往往不夠友好
30、, 用戶使用起來(lái)很不方便。而目前流行的可視化語(yǔ)言, 對(duì)科學(xué)計(jì)算的功能又相對(duì)弱一些。MATLAB提供了非常強(qiáng)大的編寫圖形用戶界面的功能。用戶只和前臺(tái)界面下的控件發(fā)生交互,而所有運(yùn)算、繪圖等內(nèi)部操作都封裝在內(nèi)部,終端用戶不需要區(qū)追究這些復(fù)雜過(guò)程的代碼。圖形用戶界面大大提高用戶使用MATLAB程序的易用性。因此,學(xué)習(xí)MATLAB圖形用戶界面編程,即GUI程序的創(chuàng)建,是MATLAB編程用戶應(yīng)該掌握的重要一環(huán)。對(duì)于一個(gè)MATLAB 中的圖形用戶界面, 它的設(shè)計(jì)過(guò)程一般可以分為兩個(gè)部分:用戶界面的外觀設(shè)計(jì)。在這里, 主要是通過(guò)不同的對(duì)話框、按鈕、文本框等許多工具的使用, 設(shè)計(jì)出一個(gè)圖形用戶界面。同時(shí)也應(yīng)搞
31、清楚這個(gè)圖形界面的功能是什么, 也即在圖形界面上的操作會(huì)引發(fā)什么樣的結(jié)果。圖形界面的完成。在這里, 用戶將根據(jù)在外觀設(shè)計(jì)階段所確定的圖形界面的功能, 針對(duì)各個(gè)不同的圖形對(duì)象來(lái)編寫出能夠?qū)崿F(xiàn)該功能的函數(shù)代碼, 確保這個(gè)圖形界面能夠完成所預(yù)定的功能。3.1 界面設(shè)計(jì)首先我們新建一個(gè)GUI文件,如下圖所示: 圖6 新建GUI文件選擇Blank GUI(Default)。進(jìn)入GUI開(kāi)發(fā)環(huán)境以后添加5個(gè)編輯文本框,8個(gè)靜態(tài)文本框,和1個(gè)下拉菜單。利用菜單編輯器,創(chuàng)建Open、Print、Close三個(gè)菜單。創(chuàng)建好GUI界面需要的各交互控件并調(diào)整好大概的位置后,設(shè)置這些控件的屬性。最后的界面效果如下圖示:
32、 圖7 界面效果3.2 代碼設(shè)計(jì)(1)打開(kāi)M文件編輯器(M-file Edit),點(diǎn)擊向下的三角圖標(biāo),可以看到各個(gè)對(duì)象的回調(diào)函數(shù)(Callback),某些對(duì)象的創(chuàng)建函數(shù)或打開(kāi)函數(shù)等。通過(guò)選中相應(yīng)項(xiàng)就可以跳動(dòng)對(duì)應(yīng)函數(shù)位置進(jìn)行程序編輯。 選中edit_callback選項(xiàng),光標(biāo)跳到 function edit1_Callback(hObject, eventdata, handles)下面空白處,添加以下代碼:user_entry=str2double(get(hObject,String);if isnan(user_entry) errordlg(請(qǐng)輸入數(shù)值!,Bad Input)end該語(yǔ)句
33、嚴(yán)格限制編輯框內(nèi)必須輸入數(shù)值,否則出現(xiàn)錯(cuò)誤對(duì)話框(如下圖所示)。同理在其他四個(gè)編輯框的回調(diào)函數(shù)下輸入相同的代碼。 圖8 錯(cuò)誤對(duì)話框 (2)打開(kāi)M文件編輯器(M-file Edit),點(diǎn)擊向下的三角圖標(biāo),設(shè)置下拉菜單返回函數(shù),光標(biāo)跳到 function popupmenu1_Callback(hObject, eventdata, handles)下面空白處。由于下拉菜單是本界面設(shè)計(jì)關(guān)鍵控件,與本設(shè)計(jì)相關(guān)的程序都放在這個(gè)返回函數(shù)下。添加代碼如下:L1=str2double(get(handles.edit1,String);L2=str2double(get(handles.edit2,Stri
34、ng);L3=str2double(get(handles.edit3,String);L4=str2double(get(handles.edit4,String);w2=str2double(get(handles.edit5,String);th2=0:2/72:2*pi; th34=zeros(length(th2),2);options=optimset(display,off);for m=1:length(th2)th34(m,:)=fsolve(fourbarposition,1 1,options,th2(m),L2,L3,L4,L1);endw2=250;for i=1:l
35、ength(th2)A=-L3*sin(th34(i,1) L4*sin(th34(i,2); L3*cos(th34(i,1) -L4*cos(th34(i,2);B=w2*L2*sin(th2(i); -w2*L2*cos(th2(i);w=inv(A)*B; w3(i)=w(1);w4(i)=w(2);endfor i=1:length(th2)C=-L3*sin(th34(i,1) L4*sin(th34(i,2);L3*cos(th34(i,1) -L4*cos(th34(i,2);D=w22*L2*cos(th2(i)+w3(i)2*L3*cos(th34(i,1)-w4(i)2*
36、L4*cos(th34(i,2);. w22*L2*sin(th2(i)+w3(i)2*L3*sin(th34(i,1)-w4(i)2*L4*sin(th34(i,2);a=inv(C)*D;a3(i)=a(1);a4(i)=a(2);endval=get(hObject,Value);str=get(hObject,String);switch strvalcase 連桿3的幾個(gè)位置點(diǎn)th2=0:1/6:2*pi; th34=zeros(length(th2),2); options=optimset(display,off); for m=1:length(th2) th34(m,:)=f
37、solve(fourbarposition,1 1,options,th2(m),L2,L3,L4,L1); end y=L2*sin(th2)+L3*sin(th34(:,1); x=L2*cos(th2)+L3*cos(th34(:,1); xx=L2*cos(th2); yy=L2*sin(th2); plot(x;xx,y;yy,k,0 L1,0 0,k-,x,y,ko,xx,yy,ks) title(連桿3的幾個(gè)位置點(diǎn)) xlabel(水平方向) ylabel(垂直方向) axis equal grid oncase 角位移線圖 plot(th2*180/pi,th34(:,1)*1
38、80/pi,th2*180/pi,th34(:,2)*180/pi) axis(0 360 0 170) grid on xlabel(主動(dòng)件轉(zhuǎn)角theta_2(度) ylabel(從動(dòng)件角位移(度) title(角位移線圖) text(120,120,搖桿4角位移) text(150,40,連桿3角位移)case 角速度線圖 plot(th2*180/pi,w3,th2*180/pi,w4); axis(0 360 -175 200) text(50,160,搖桿4角速度(omega_4) text(220,130,連桿3角速度(omega_3) grid on xlabel(主動(dòng)件轉(zhuǎn)角th
39、eta_2(度) ylabel(從動(dòng)件角速度(radcdot s-1) title(角速度線圖)case 角加速度線圖plot(th2*180/pi,a3,th2*180/pi,a4); axis(0 360 -50000 65000) text(50,50000,搖桿4角加速度(alpha_4) text(220,12000,連桿3角加速度(alpha_3) grid on xlabel(主動(dòng)件轉(zhuǎn)角theta_2(度) ylabel(從動(dòng)件角加速度(radcdot s-2) title(角加速度線圖)endguidata(hObject,handles)%其中,guidata(hObject
40、,handles)命令用于更新句柄,當(dāng)輸入不同參數(shù)是,程序能夠做出相應(yīng)的相應(yīng)。(3)打開(kāi)M文件編輯器(M-file Edit),點(diǎn)擊向下的三角圖標(biāo),在Open菜單回調(diào)函數(shù)下添加以下代碼:file = uigetfile(*.fig);if isequal(file, 0) open(file);end此菜單用以打開(kāi)fig文件。其相應(yīng)界面如圖9所示: 圖9(4)打開(kāi)M文件編輯器(M-file Edit),點(diǎn)擊向下的三角圖標(biāo),在Print菜單回調(diào)函數(shù)下添加以下代碼:printdlg(handles.figure1) %用于圖形輸出。(5)打開(kāi)M文件編輯器(M-file Edit),點(diǎn)擊向下的三角圖
41、標(biāo),在Close菜單回調(diào)函數(shù)下添加以下代碼:selection = questdlg(Close get(handles.figure1,Name) ?,. Close get(handles.figure1,Name) .,Yes,No,Yes);if strcmp(selection,No) return;enddelete(handles.figure1)此菜單用于關(guān)閉界面,其響應(yīng)界面如圖10所示: 圖10(6)完成M文件編寫后,運(yùn)行程序進(jìn)行檢驗(yàn),單擊圖標(biāo)或M文件工具欄的圖標(biāo),在編輯欄輸入個(gè)構(gòu)件參數(shù),運(yùn)行結(jié)果如圖11: 圖11 界面運(yùn)行效果圖 分別點(diǎn)擊下拉菜單下各選項(xiàng),則在繪圖區(qū)域分別顯
42、示圖2圖5。4 小結(jié)在本次基于MATLAB平面四桿機(jī)構(gòu)機(jī)構(gòu)的運(yùn)動(dòng)分析課程設(shè)計(jì)中,不僅用到了MATLAB的m語(yǔ)言編程,還有GUI圖形用戶界面設(shè)計(jì)。對(duì)于課程的設(shè)計(jì)來(lái)說(shuō),m語(yǔ)言本身來(lái)說(shuō),功能相當(dāng)強(qiáng)大,但是由于其復(fù)雜的編程方法,讓大多數(shù)初學(xué)者望而卻步;而GUI圖形界面則正好彌補(bǔ)了它的不足,它采用的是所見(jiàn)即所得的編程方式,用它來(lái)做軟件的界面就如圖制作網(wǎng)頁(yè)一樣簡(jiǎn)單明了,用它制作出來(lái)的軟件不需要太多的編程知識(shí)都可以輕松搞定;在此次課程設(shè)計(jì)中,本人盡量揚(yáng)長(zhǎng)避短,把這些工具的優(yōu)點(diǎn)結(jié)合到一起,發(fā)揮其最大的作用。通過(guò)此次課程設(shè)計(jì),不僅使我們對(duì)使我們對(duì)四桿機(jī)構(gòu)有了進(jìn)一步認(rèn)識(shí),并且使我們認(rèn)識(shí)到計(jì)算機(jī)技術(shù)對(duì)工程應(yīng)用的重要
43、性。本此設(shè)計(jì)凝結(jié)了團(tuán)隊(duì)合作的結(jié)晶,是我們利用三周的時(shí)間努力學(xué)習(xí)、設(shè)計(jì)的成果,同時(shí),在設(shè)計(jì)過(guò)成中得到了鄭雪飛老師的悉心指導(dǎo),在此表示衷心的感謝!參考文獻(xiàn)1 孫桓,陳作模.機(jī)械原理M.7版.北京:高等教育出版社,2006.2 符煒.機(jī)構(gòu)設(shè)計(jì)學(xué).M.1版. 長(zhǎng)沙:中南工業(yè)大學(xué)出版社,1995.3 MATLAB原理與工程應(yīng)用M.1版.北京:電子工業(yè)出版社,2002.4 電子版源文件下載地址: HYPERLINK /s/1smS1vOD /s/1smS1vOD密碼:kl7h附錄資料:不需要的可以自行刪除Pascal/C/C+語(yǔ)句對(duì)比(補(bǔ)充版)一、Hello world 先看三種語(yǔ)言的樣例:Pascalb
44、egin writeln(Hello world);end.C#include int main() printf(Hello world!n); return 0;C+#include using namespace std;int main()cout Hello world! endl; return 0; 從這三個(gè)程序可以看到一些最基本的東西。在Pascal中的begin和end,在C/C+里就是;Pascal主程序沒(méi)有返回值,而C/C+返回0(好像在C中可以為NULL)。在C/C+中,main函數(shù)以前的是頭文件,樣例中C為stdio.h,C+除了iostream還有第二行的using
45、 namespace std,這個(gè)是打開(kāi)命名空間的,NOIP不會(huì)考這個(gè),可以不管,只要知道就行了。 此外說(shuō)明 注釋單行用/,段落的話Pascal為,C/C+為/* */。* 常用頭文件(模板)#include #include #include #include #include #include using namespace std;int main() system(“pause”);return 0;二、數(shù)據(jù)類型及定義 這里只列出常用的類型。1、整型PascalC/C+范圍shortint-128 127integershort-32768 32767longintInt -21474
46、83648 2147483647int64long long-9223372036854775808 9223372036854775807byte-0 255wordunsigned short0 65535longwordunsigned int0 4294967295qwordunsigned long long0 18446744073709551615 * 當(dāng)對(duì)long long 變量賦值時(shí),后要加LLLong long x=6327844632743269843LL* 如果位移 x2LL* Linux: printf(“%lldn”,x);* Windows: printf(“%I
47、64dn”,x);2、實(shí)型PascalC/C+范圍realfloat2.9E-39 1.7E38single-1.5E-45 3.4E38doubledouble5.0E-324 1.7E3083、字符即字符串 字符在三種語(yǔ)言中都為char,C里沒(méi)有字符串,只有用字符數(shù)組來(lái)代替字符串,Pascal和C+均為string。Pascal中字符串長(zhǎng)度有限制,為255,C+則沒(méi)有。 字符串和字符在Pascal中均用單引號(hào)注明,在C/C+中字符用單引號(hào),字符串用雙引號(hào)。4、布爾類型 Pascal 中為 boolean,C/C+ 為 bool。值均為True 或 False。C/C+中除0外bool都為真
48、。5、定義 常量的定義均為 const,只是在C/C+中必須要注明常量的類型。在C/C+中還可以用宏來(lái)定義常量,此時(shí)不注明類型。PascalC/C+const a = 60; b = -a + 30; d = ;const int a = 60;const int b = - a + 30;const string d = “”;define MAXN 501 /這個(gè)是宏 * 宏定義其實(shí)就是直接在程序相應(yīng)的位置替換: #define randomize srand(unsigned time(NULL) #define wait for(int w=0;w a;cout a;cout a en
49、dl;特別說(shuō)明C+中cin一個(gè)字符的話會(huì)自動(dòng)跳過(guò)空格和回車,Pascal和C則會(huì)讀入空格和回車。在Pascal中writeln(a:n:m) 表示在n個(gè)字符寬的輸出域上輸出a保留m位小數(shù)。例如:pascal write(a:6) c/c+ printf(“%6d”,a) Pascal write(a:6:2) c/c+ printf(“%6.2f”,a) C+ 如果用 cout ? (繁瑣!) 需要加頭文件 #inlude cout setprecision(2)a; /作用永久 cout setw(6)a; /作用臨時(shí) 以下三個(gè)進(jìn)制設(shè)定都是永久作用: cout deca; 相當(dāng) printf
50、(“%d”,a); /十進(jìn)制 cout hexa; 相當(dāng) printf(“%X”,a); /十六進(jìn)制 cout octa; 相當(dāng) printf(“%o”,a); /八進(jìn)制例如:cout 12hex12oct1212endl;輸出:12c1414 C 的輸入輸出里面的字符串中%表示變量,%后面的字目表示變量類型。下面是類型表:%hd1個(gè)short型整數(shù)%d1個(gè)int型整數(shù)%u1個(gè)unsigned int型整數(shù)%I64d1個(gè)long long型整數(shù)%c1個(gè)字符%s1個(gè)C字符串%f1個(gè)float型實(shí)數(shù)%lf1個(gè)double型實(shí)數(shù)%10.4f輸出1個(gè)總寬度為10,保留4位小數(shù)的實(shí)數(shù) 文件輸入輸出:Pa
51、scalassign(input, test.in);assign(output, test.out);reset(input);rewrite(output);read(a, b);writeln(a, b);close(input);close(output);CFILE *fin = fopen(“test.in”, “r”);FILE *fout = fopen(“test.out”, “w”);fscanf(fin, “%d%d”, &a, &b);fprintf(fout, “%d%d”, a, b);fclose(fin); fclose(fout);C+#include usi
52、ng namespace std;ifstream fin(“test.in”);ofstream fout(“test.out”);fin a b;fout a b endl;fin.close(); fout.close();因?yàn)镃+的讀入較慢,個(gè)人建議C+的話使用C的輸入方式。當(dāng)然也有人用C的讀入,C+的輸出的,這種方式我們稱之為城鄉(xiāng)結(jié)合。*中國(guó)計(jì)算機(jī)學(xué)會(huì)競(jìng)賽須知發(fā)布的C讀寫程序:(C+ 也能用,cin,cout,scanf,printf 可混用)#include int main() int a,b; freopen(“sum.in”,”r”,stdin);freopen(“sum.o
53、ut”,”w”,stdout); scanf(“%d%d”,&a,&b); printf(“%dn”,a+b); return 0; 或者:freopen(“sum.in”,”r”,stdin);freopen(“sum.out”,”w”,stdout);ios:sync_with_stdio(false); 取消同步,cin,cout的速度就不慢了! cinab;couta+bendl; return 0;以下擴(kuò)充c/c+混用是可行的:#include #include using namespace std;int main() int a,b,c,d; freopen(sum.in,r,
54、stdin); freopen(sum.out,w,stdout); scanf(%d%d,&a,&b); cincd; printf(%dn,a+b); couta+b+c+dsn).Cwhile(scanf(%s%d,s,&n)!=EOF).四、賦值語(yǔ)句及運(yùn)算符號(hào) 一一對(duì)應(yīng)的關(guān)系PascalC/C+賦值運(yùn)算賦值:=基本運(yùn)算加+減-乘*除(實(shí)數(shù))/ (double)除法取整div(int) / (int)取余mod%比較等于=不等于!=大于大于等于=小于小于等于=邏輯且and&或or|非not!位運(yùn)算左移(*2)shl且and&或or|非not異或xor其他增一inc(x)x+減一dec(x
55、)x- 在C/C+中對(duì)某個(gè)變量自身進(jìn)行運(yùn)算可以簡(jiǎn)寫為 變量名 運(yùn)算符號(hào)= 改變量 如 x += 8 就表示 x = x + 8, 即 inc(x, 8)。 在 C/C+里還存在一種三目運(yùn)算 變量名 = 條件 ? 值A(chǔ) : 值B 如 x = x 0 ? x : -x; /表示若x 0 則取 x, 否則取 x, 同 if x 0 then x := x else x := -x;五、條件語(yǔ)句1、if C/C+中if 語(yǔ)句的條件必須要用括號(hào)括起來(lái),后面不使用then。PascalC/C+if a b then flag := true else flag := false;if (a b) flag
56、 = true;else flag = false;2、多種分支 C/C+中為switch,Pascal為case:PascalC/C+case x of 1: inc(x); 2: dec(x); else x := x * x;end;switch (x) case 1: x +; break; case 2: x -; break; default: x *= x; 切記C/C+中一定要寫break,后果你可以去掉break,運(yùn)行看看就知道了。六、循環(huán)語(yǔ)句1、forPascalC/C+for 變量名 := 初始值 to(downto) 終止值 dofor (變量名=初始值;條件;改變方式
57、)for i := 5 to 10 do dec(a);/終止值大于初始值用 tofor i := 5 downto 1 do dec(a);/終止值小于于初始值用 downtofor (i = 5; i = 1; i-) a-;/*只要i 滿足條件就會(huì)一直循環(huán)。C/C+中i是實(shí)數(shù)、指針都可以*/C/C+中for的特殊用法:/變量為實(shí)數(shù)for (double i = 1; i 符號(hào)為間接引用,后面會(huì)提到。for (type1 *p = head - next; p; p = p - next) printf(“%d”, p - k);2、whilePascalC/C+while 條件 dowh
58、ile (條件)while i 0 do dec(i);while (i != 0) i-;/也可寫作 while (i) i-;/在C/C+中非0即為真。3、repeat-until & do-whilePascalC/C+repeat 語(yǔ)句 until 結(jié)束條件;do while (運(yùn)行條件)repeat int(i) until i 100;do i+; while (i = 100);七、數(shù)組 Pascal中數(shù)組的下標(biāo)可以隨意定義,而C/C+下標(biāo)始終為從0開(kāi)始到(數(shù)組大小1)。PascalC/C+定義a : array 1.100 of integer;b :array 1.10,1.
59、10 of int64;int a100;int b1010;含義a 為大小為100的integer數(shù)組,合法下標(biāo)為1到100b 為大小為10*10的int64數(shù)組,合法下標(biāo)為1,1到10,10a 為大小為100的int數(shù)組,合法下標(biāo)為0到99b 為大小為10*10的int數(shù)組,合法下標(biāo)為0,0到9,9;使用inc(a21);b2,2:=b1,1+b1,2+b2,1;a21+;b11=b01+b00+b10; 數(shù)組清零PascalC/C+Fillchar(a, sizeof(a), 0);memset(a, 0, sizeof(a);/頭文件包含 string.h*如果要填最大: memset
60、(a,127,sizeof(a) (但達(dá)不到 INT_MAX) 如果要填最?。?memset(a,128,sizeof(a) (但達(dá)不到 INT_MIN) 如果填0: memset(a,0,sizeof(a) 如果填-1: memset(a,-1,sizeof(a)八、字符串 C風(fēng)格的字符串就是字符數(shù)組。 C+和Pascal的字符串使用基本相同,只是C+中字符串下標(biāo)以0開(kāi)始,Pascal以1開(kāi)始。字符串處理很多這里不一一列舉,只寫最常用的幾個(gè)。PascalC (包含)定義用:char sC+(包含)定義用:string s輸入輸出Readln(s);Writeln(s);Scanf(“%s”,
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- Unit4Body Language(詞匯短語(yǔ)句式)-2025屆高三人教版英語(yǔ)一輪復(fù)習(xí)闖關(guān)攻略(解析版)
- 2024年度天津市公共營(yíng)養(yǎng)師之三級(jí)營(yíng)養(yǎng)師提升訓(xùn)練試卷A卷附答案
- 2024年度四川省公共營(yíng)養(yǎng)師之二級(jí)營(yíng)養(yǎng)師模擬考核試卷含答案
- 中國(guó)電腦外設(shè)行業(yè)市場(chǎng)發(fā)展現(xiàn)狀及前景趨勢(shì)與投資分析研究報(bào)告(2024-2030版)
- 中國(guó)無(wú)線遙控器行業(yè)市場(chǎng)發(fā)展現(xiàn)狀及前景趨勢(shì)與投資分析研究報(bào)告(2024-2030版)
- 2023-2029年中國(guó)解壓玩具行業(yè)市場(chǎng)發(fā)展現(xiàn)狀及投資方向研究報(bào)告
- 800噸漆包線生產(chǎn)線項(xiàng)目立項(xiàng)報(bào)告書(shū)-可行性研究報(bào)告
- 魚(yú)鮮素行業(yè)深度研究報(bào)告
- 2025年電發(fā)夾項(xiàng)目可行性研究報(bào)告-20250102-234224
- 2024-2030年中國(guó)一次性使用人體靜脈血樣采集容器行業(yè)發(fā)展運(yùn)行現(xiàn)狀及投資潛力預(yù)測(cè)報(bào)告
- 期末達(dá)標(biāo)測(cè)試卷(二)(試卷)-2024-2025學(xué)年冀教版數(shù)學(xué)四年級(jí)上冊(cè)
- 2024新版有限空間作業(yè)安全大培訓(xùn)
- GB/T 44413-2024城市軌道交通分類
- GB 19041-2024光氣及光氣化產(chǎn)品生產(chǎn)安全規(guī)范
- 拔除氣管導(dǎo)管的護(hù)理
- 2024至2030年中國(guó)土地整治行業(yè)市場(chǎng)專項(xiàng)調(diào)研及競(jìng)爭(zhēng)戰(zhàn)略分析報(bào)告
- 數(shù)據(jù)交易場(chǎng)所發(fā)展指數(shù)研究報(bào)告(2024年)
- NBT 31021-2012風(fēng)力發(fā)電企業(yè)科技文件規(guī)檔規(guī)范
- 嬰幼兒托育機(jī)構(gòu)安全防護(hù)-整體環(huán)境布局安全隱患識(shí)別與排除策略
- 公安學(xué)基礎(chǔ)智慧樹(shù)知到期末考試答案章節(jié)答案2024年山東警察學(xué)院
- 2024智慧醫(yī)院醫(yī)用耗材SPD供應(yīng)鏈績(jī)效評(píng)價(jià)指南
評(píng)論
0/150
提交評(píng)論