南航數(shù)控機(jī)床課程設(shè)計(jì)說明

上傳人:小** 文檔編號(hào):46404375 上傳時(shí)間:2021-12-13 格式:DOC 頁數(shù):36 大小:921.50KB
收藏 版權(quán)申訴 舉報(bào) 下載
南航數(shù)控機(jī)床課程設(shè)計(jì)說明_第1頁
第1頁 / 共36頁
南航數(shù)控機(jī)床課程設(shè)計(jì)說明_第2頁
第2頁 / 共36頁
南航數(shù)控機(jī)床課程設(shè)計(jì)說明_第3頁
第3頁 / 共36頁

下載文檔到電腦,查找使用更方便

30 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《南航數(shù)控機(jī)床課程設(shè)計(jì)說明》由會(huì)員分享,可在線閱讀,更多相關(guān)《南航數(shù)控機(jī)床課程設(shè)計(jì)說明(36頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、機(jī)床數(shù)控技術(shù)及應(yīng)用課程設(shè)計(jì)說明書時(shí)間:2011年12月15日目錄一 課程設(shè)計(jì)要求少 1、1L-*=0時(shí),向+x方向進(jìn)給一個(gè)脈沖當(dāng)量,此時(shí)x(i+1)=xi+b ,則有F(i+1)=Fi-(y2-y1)*b當(dāng)F=0,y1=0,x20,y2=0+X方向走一步F=F-b*(y2-y1),x=x+bE=E-1輸岀直線不在第四象限結(jié)束3)單步插補(bǔ)直線實(shí)現(xiàn)程序及變量說明定義靜態(tài)變量static,變量類型為double型,在每次單擊按鈕控件執(zhí)行程序后,該變量的值始終存在 可以實(shí)現(xiàn)對(duì)插補(bǔ)次數(shù)的計(jì)算和判別。static double NX=0, NY=0 , N=0 , m , x , y , F=0;Nx,

2、yi_blx10NX為+x方向的進(jìn)給次數(shù)累加,用于橫坐標(biāo)計(jì)算;NY為-y方向進(jìn)給次數(shù)累加,用于縱坐標(biāo)計(jì)算;為x ,y兩個(gè)方向的累加次數(shù),用于和終點(diǎn)判別器比較;m為終點(diǎn)判別器,用來判斷插補(bǔ)是否結(jié)束;用來存放插補(bǔ)過程中動(dòng)點(diǎn)坐標(biāo);F為偏差判別函數(shù)。在插補(bǔ)程序中使用的變量名與流程圖中變量的對(duì)應(yīng)關(guān)系為:m_alx對(duì)應(yīng)x1,m_aly對(duì)應(yīng)y1,對(duì)應(yīng)x2, m_bly對(duì)應(yīng)y2, m_bc對(duì)應(yīng)b, m對(duì)應(yīng)E。變量賦的初值為:mine = 0, m_alx = 0.0, m_aly = 0.0, m_blx = 4.0,m_bly = -4.0, m_bc = 1.0。插補(bǔ)程序中的一些說明:因?yàn)檩敵龅膱D形坐標(biāo)數(shù)

3、值為像素點(diǎn),在圖形中顯示很小,所以在下述的程序中將輸出的數(shù)值擴(kuò)大 倍,可以在圖形控件上更清晰地顯示圖形,其值本身并不具有實(shí)際的意義。禾U用UpdateData(true)函數(shù)實(shí)現(xiàn)獲取輸入的參數(shù)值。設(shè)置圖形顯示區(qū)域:CStatic*pWnd=(CStatic*)GetDlgltem(IDC_PRINTAREA);CDC*pdc=pWnd-GetDC();CRect rc;pWnd-GetClie ntRect(&rc);CRgn rgn;rgn. CreateRectRg n(rc.l eft+1,rc.top+7,rc.right-2,rc.bottom-2);pdc-SelectClipRg

4、 n(&rgn);pdc-SetViewportOrg(rc.left+rc.right)/2,rc.bottom-150);在圖形控件上畫坐標(biāo)軸:pdc-MoveTo(-150,0);pdc-Li neTo(150,0);pdc-MoveTo(0,-150);pdc-Li neTo(0,150);在圖形控件上輸出原點(diǎn)、x軸、y軸符號(hào):pdc-TextOut(-10,-20,o);pdc-TextOut(150,0,x); pdc-TextOut(-5,-150,y);單步直線插補(bǔ)程序:if (m_li ne=0)選擇直線插補(bǔ) pdc-MoveTo(10*m_alx,-10*m_aly);畫出

5、需要插補(bǔ)的直線pdc-Li neTo(10*m_blx,-10*m_bly);if(m_alxm_bly)&(m_alx=0)&(m_aly0)if(F=0)偏差判別函數(shù)大于 0, x方向進(jìn)給 elseNX=NX+1;N=N+1;pdc-MoveTo(x,y);x=x+10*m_bc;+x方向進(jìn)給一次進(jìn)給次數(shù)累加器加1將坐標(biāo)移到直線起點(diǎn) II計(jì)算橫坐標(biāo)pdc-SelectObject (new CPe n(PS_SOLID,0,RGB(255,0,0);II改變插補(bǔ)線段的顏色,此處選擇紅色pdc-Li neTo(x,y);畫直線F=F-m_bc*(abs(m_bly)-abs(m_aly);I

6、I重新計(jì)算偏差判別函數(shù),并結(jié)束判斷偏差判別函數(shù)小于 0, y方向進(jìn)給NY=NY+1;N=N+1;pdc-MoveTo(x,y);y=y+10*m_bc;II-y方向進(jìn)給一次 進(jìn)給次數(shù)累加器加1 將坐標(biāo)移到直線起點(diǎn) II計(jì)算縱坐標(biāo)pdc-SelectObject (new CPe n(PS_SOLID,0,RGB(255,0,0);II改變插補(bǔ)線段的顏色,此處選擇紅色pdc-Li neTo(x,y);畫直線F=F+m_bc*(abs(m_blx)-abs(m_alx);重新計(jì)算偏差判別函數(shù),并結(jié)束判斷I*此段函數(shù)用于連續(xù)插補(bǔ)m=m-1;if(m=0)KillTimer(1);/終點(diǎn)判別器減1如果

7、終點(diǎn)判別器為0,關(guān)閉定時(shí)器1,連續(xù)插補(bǔ)結(jié)束I*此段函數(shù)用于連續(xù)插補(bǔ)else提示輸入的直線不在給定的象限AfxMessageBox(請(qǐng)輸入位于第四象限的點(diǎn) ”);4)連續(xù)插補(bǔ)直線的實(shí)現(xiàn)方案1:通過定時(shí)器實(shí)現(xiàn)逐段顯示插補(bǔ)軌跡void CMyDlg:O nButto n3()SetTimer(1,500,NULL);II選擇定時(shí)器1,定時(shí)時(shí)間500ms; -75void CMyDlg:OnTimer(UINT nIDEvent)/定時(shí)器1函數(shù),調(diào)用 OnButton1()函數(shù),定時(shí)器關(guān)閉如上所述On Butto n1();方案2:通過循環(huán)體,一次實(shí)現(xiàn)插補(bǔ)軌跡的顯示程序各行的含義同單步插補(bǔ)程序if (

8、m_li ne=0)pdc-MoveTo(10*m_alx,-10*m_aly);pdc-Li neTo(10*m_blx,-10*m_bly);if(m_alxm_bly)&(m_alx=0)&(m_alyMoveTo(x,y);while(m0)通過while循環(huán)一次實(shí)現(xiàn)插補(bǔ)軌跡顯示if(F=0)F=F-m_bc*(abs(m_bly)-abs(m_aly);x=x+10*m_bc;elseF=F+m_bc*(abs(m_blx)-abs(m_alx);y=y+10*m_bc;pdc-L in eTo(x,y);m=m-1;AfxMessageBox(連續(xù)插補(bǔ)結(jié)束”);五.DDA法圓弧插補(bǔ)

9、插補(bǔ)流程圖及算法1)圓弧插補(bǔ)示意圖插補(bǔ)1-4象限的順圓,要分成兩段圓弧來實(shí)現(xiàn),分別為第1象限順圓弧和第 4象限順圓弧。圓弧插補(bǔ)通過半加載實(shí)現(xiàn),即積分累加器Jrx, Jry中存放寄存器最大容量的一半。假設(shè)圓弧起點(diǎn)坐標(biāo)(x1,y1),終點(diǎn)坐標(biāo)(x2,y2),根據(jù)DDA法插補(bǔ)圓弧的要求,x軸被積函數(shù)寄存器 Jvx存放y1, y軸被積函數(shù)寄存器 Jvy存 放x1。DDA法插補(bǔ)第1象限順圓插補(bǔ)器示意圖:DDA法插補(bǔ)第4象限順圓插補(bǔ)器示意圖:NYNm=(xO+r) x1+y1+(x0+r)x2+|y2|)/bNNYY1-xO+Tx*bY1NNYYNYNX=X+XeY=Y-M;Ey=Ey-1;Ty=Ty+1

10、;y=y-b; n=n-1;m=r1=(x1-x0)A2+(y1-y0)A2 r2=(x2-xO)#+(y2-yO)A2,T=1Xe=y1-Ty*b; NEx=(r+xO-x1)/b;Ey=y1/b;Nm=m-Tx-Ty-T1x-T1yNx1;x=x+b;n=n-1;mNY仁 Y1-M1;Ey=Ey-1;T1y=T1y+1;y=y-bT-T-1流程圖中變量說明: 靜態(tài)變量:YX1=X1+XeX1=X1-M1;EEx-( i+規(guī)-x2)/b;Ey=|y2|/b;N=Ex+Ey,x=(i+x0)y=0;Mi n J1_Xe= T1y*b;Ye=r+T1x*b;結(jié)束m:圓弧插補(bǔ)終點(diǎn)判別器; T:圓弧

11、插補(bǔ)象限標(biāo)志位, T=1,插補(bǔ)第1象限圓弧,T=0插補(bǔ)第4象限圓 弧;Ex, Ey,x,y方向終點(diǎn)判別器;n第1象限圓弧終點(diǎn)判別器;x,y動(dòng)態(tài)點(diǎn)坐標(biāo)值; Xe, Ye,分別為 x、y軸被積函數(shù)寄存器; X,Y為第1象限x、y軸積分累加器,X1,Y1分別為第4象限x、y軸積分累 加器;Tx,Ty為第1象限x、y軸插補(bǔ)計(jì)數(shù)器,T1x,T1y為第4象限x、y軸插補(bǔ)計(jì)數(shù)器。全局變量:M,M1存放寄存器最大存儲(chǔ)容量。3)單步插補(bǔ)圓弧實(shí)現(xiàn)程序及變量說明部分變量說明如上,插補(bǔ)程序中與流程圖中的變量對(duì)應(yīng)關(guān)系為:m_aax對(duì)應(yīng)x1 , m_aay對(duì)應(yīng)y1, m_bax對(duì)應(yīng)x2, m_bay對(duì)應(yīng)y2, m_ox對(duì)

12、應(yīng)x0, m_oy對(duì)應(yīng)yO,m_r對(duì)應(yīng)r, m_n對(duì)應(yīng)n,m_bc對(duì)應(yīng)b。變量賦 予的初值為:m_aax = 0.0, m_aay = 5.0, m_bax = 0.0, m_bay = -5.0, m_ox = 0.0,m_oy = 0.0,m_r = 5.0,m_n = 3.0, m_bc = 1.0, n=1,X=0, X仁0,Y=0,丫仁0,Tx=0,T1x=0, Ty=0, T1y=0, T=1, M=1,M1=1。未列出的變量不賦初值。/判斷圓心位置,如果不在 x軸上結(jié)束程序程序?yàn)椋篿f(m_oy=0) if(fabs(m_bax)_fabs(m_ox)*(fabs(m_bax)_

13、fabs(m_ox)+(fabs(m_bay)_fabs(m_oy)*(fabs(m_bay)_fabs( m_oy)=(fabs(m_aax)-fabs(m_ox)*(fabs(m_aax)-fabs(m_ox)+(fabs(m_aay)-fabs(m_oy)*(fabs(m_aay)-fabs( m_oy)判斷圓弧起點(diǎn)和終點(diǎn)到圓心的位置是否相等,若不等,結(jié)束程序/判斷圓弧輸入的半徑是否與求得的想的,若不等,結(jié)束程序if(sqrt(fabs(m_aax)-fabs(m_ox)*(fabs(m_aax)-fabs(m_ox)+(fabs(m_aay)-fabs(m_oy)*(fabs(m_aa

14、y)-fabs(m_ oy)=m_r)if(m_aax=0&m _aay=0&m _bax=0&m _bayArc(10*(m_ox-m_r),10*(-m_oy-m_r),10*(m_ox+m_r),10*(m_r-m_oy),10*(m_bax),10*(-m_bay), 10*(m_aax),10*(-m_aay);畫給定的圓弧m=(abs(m_ox+m_r)-abs(m_aax)+abs(m_aay)+(abs(m_ox+m_r)-abs(m_bax)+abs(m_bay)/m_bc-Tx- Ty-T1x-T1y;if(n 0)Xe=m_aay-Ty*m_bc;Ye=m_aax-m_o

15、x+Tx*m_bc;Ex=(abs(m_r+m_ox)-abs(m_aax)/m_bc-Tx;Ey=abs(m_aay)/m_bc-Ty;x=10*m_aax+10*Tx*m_bc;y=-10*m_aay+10*Ty*m_bc;n=Ex+Ey;if(N= =0)for(i nt i=0;i0插補(bǔ)第1象限的圓弧,若n=0,插補(bǔ)第4象限圓弧/x,y軸被積函數(shù)寄存器計(jì)算/X,y軸終點(diǎn)判別器計(jì)算/計(jì)算插補(bǔ)過程動(dòng)點(diǎn)坐標(biāo)(x,y)插補(bǔ)第1象限終點(diǎn)判別器計(jì)算/N用來標(biāo)志寄存器最大容量計(jì)算,一次有效根據(jù)輸入的寄存器位數(shù),計(jì)算容量!19!1#X=M/2;Y=M/2;/積分累加器計(jì)算,半加載方式!1#N=N+1;

16、pdc-MoveTo(x,y); if(Ex0)X=X+Xe;/畫插補(bǔ)線段的起點(diǎn)/x向終點(diǎn)判別器判斷,Ex-O,x向插補(bǔ)結(jié)束計(jì)算x積分累加器if(X=M)X=X-M;/判斷積分累加器是否溢出,未溢出轉(zhuǎn)到下一步/x積分累加器溢出取其余數(shù)xs=1;/標(biāo)志x向進(jìn)給一次Ex=Ex-1;/x終點(diǎn)判別器減1Tx=Tx+1;/計(jì)算x向插補(bǔ)次數(shù)x=x+10*m_bc;/計(jì)算進(jìn)給后x坐標(biāo)值n=n-1;第1象限圓弧終點(diǎn)判別器 1m=m-1;完整圓弧終點(diǎn)判別器減 1if(Ey0)Y=Y+Ye;/y向終點(diǎn)判別器判斷,Ey-0,y向插補(bǔ)結(jié)束/計(jì)算y積分累加器if(Y=M)Y=Y-M;/判斷積分累加器是否溢出,未溢出轉(zhuǎn)到

17、下一步/y積分累加器溢出取其余數(shù)ys=1;/標(biāo)志y向進(jìn)給一次Ey=Ey-1;/y終點(diǎn)判別器減1Ty=Ty+1;/計(jì)算y向插補(bǔ)次數(shù)y=y+10*m_bc;/計(jì)算進(jìn)給后y坐標(biāo)值n=n-1; m=m-1;/第1象限圓弧終點(diǎn)判別器 1完整圓弧終點(diǎn)判別器減 1pdc-SelectObject (new CPe n(PS_SOLID,0,RGB(255,0,0);/選擇插補(bǔ)直線的顏色,此處選紅色pdc-Li neTo(x,y);/ 畫直線/*插補(bǔ)第4象限的圓弧,程序語句含義同上/*elseXe=0+T1y*m_bc;Ye=abs(m_r)-T1x*m_bc;Ex=(abs(m_r+m_ox)-abs(m_

18、bax)/m_bc-T1x;Ey=abs(m_bay)/m_bc-T1y;x=10*(m_r+m_ox)-10*T1x*m_bc;y=10*T1y*m_bc;if(N1= =0)for(i nt j=O;jMoveTo(x,y);if(Ex0)X仁 X1+Xe;if(X1=M1)X仁 X1-M1;xs=1;Ex=Ex-1;T1x=T1x+1;x=x-10*m_bc;m=m-1;if(Ey0)丫仁 Y1+Ye;if(Y1=M1)Y1= Y1-M1;ys=1;Ey=Ey-1;T1y=T1y+1;y=y+10*m_bc;m=m-1;pdc-SelectObject (new CPe n(PS_SOL

19、ID,0,RGB(255,0,0); pdc-L in eTo(x,y);if(m=0)此段函數(shù)用于連續(xù)插補(bǔ)圓弧時(shí)終點(diǎn)判斷 KillTimer(l);elseAfxMessageBox(請(qǐng)輸入1-4象限的圓); elseAfxMessageBox(請(qǐng)輸入正確的半徑值); elseAfxMessageBox(請(qǐng)輸入位于同一圓上的坐標(biāo)點(diǎn)”);elseAfxMessageBox(請(qǐng)輸入符合要求的圓心位置”);4)連續(xù)插補(bǔ)圓弧的實(shí)現(xiàn)程序方案1:通過定時(shí)器實(shí)現(xiàn)逐段顯示插補(bǔ)軌跡。void CMyDlg:O nButto n3()SetTimer(1,500,NULL);/ 選擇定時(shí)器 1,定時(shí)時(shí)間 500

20、ms;void CMyDlg:OnTimer(UINT nIDEvent)/定時(shí)器1函數(shù),調(diào)用 OnButton1()函數(shù),定時(shí)器關(guān)閉如上所述On Butto n1();方案2:通過循環(huán)體,一次實(shí)現(xiàn)插補(bǔ)軌跡的顯示。程序語句含義同單步插補(bǔ)程序。if(mine= =1)if(m_oy=0)if(fabs(m_bax)_fabs(m_ox)*(fabs(m_bax)_fabs(m_ox)+(fabs(m_bay)_fabs(m_oy)*(fabs(m _bay)-fabs(m_oy)=(fabs(m_aax)-fabs(m_ox)*(fabs(m_aax)-fabs(m_ox)+(fabs(m_aa

21、y)-fabs(m_oy)*(f abs(m_aay)_fabs(m_oy) if(sqrt(fabs(m_aax)-fabs(m_ox)*(fabs(m_aax)-fabs(m_ox)+(fabs(m_aay)-fabs(m_oy)* (fabs(m_aay)-fabs(m_oy)=m_r)if(m_aax=0&m _aay=0&m _bax=0&m _bayArc(10*(m_ox-m_r),10*(-m_oy-m_r),10*(m_ox+m_r),10*(m_r-m_oy),10*(m_bax), 10*(-m_bay),10*(m_aax),10*(-m_aay);m=(abs(m_o

22、x+m_r)-abs(m_aax)+abs(m_aay)+(abs(m_ox+m_r)-abs(m_bax)+abs(m_bay)/m_bc; while(m0)if(T= =1)/T=1插補(bǔ)第1象限的圓弧,T=0插補(bǔ)第四象限的圓弧Ex=(abs(m_r+m_ox)-abs(m_aax)/m_bc;Ey=abs(m_aay)/m_bc;n=Ex+Ey;x=10*m_aax;y=_10*m_aay; pdc_MoveTo(x,y); for(i nt i=0;i0)Xe=m_aay-Ty*m_bc;Ye=m_aax-m_ox+Tx*m_bc;if(Ex0)X=X+Xe;if(X=M)X=X-M;

23、xs=1;Ex=Ex-1;Tx=Tx+1;x=x+10*m_bc;n=n-1;m=m-1;if(Ey0)Y=Y+Ye;if(Y=M)Y=Y-M;ys=1;Ey=Ey-1;Ty=Ty+1;y=y+10*m_bc;n=n-1;m=m-1;pdc-L in eTo(x,y);T=T-1;/第1象限圓弧插補(bǔ)結(jié)束elseEx=(abs(m_r+m_ox)-abs(m_bax)/m_bc;Ey=abs(m_bay)/m_bc;N=Ex+Ey;x=10*(m_r+m_ox);y=0;pdc_MoveTo(x,y);for(i nt j=O;j0)Xe=0+T1y*m_bc;Ye=abs(m_r)-T1x*m

24、_bc;if(Ex0)X仁 X1+Xe;if(X1=M1)X仁 X1-M1;xs=1;Ex=Ex-1;T1x=T1x+1;x=x-10*m_bc;m=m-1;N=N-1;if(Ey0)丫仁 Y1+Ye;if(Y1=M1)丫仁Y1-M1;ys=1;Ey=Ey-1;T1y=T1y+1;y=y+10*m_bc;m=m-1;N=N-1;pdc-L in eTo(x,y);if(m=O)AfxMessageBox(連續(xù)插補(bǔ)圓弧結(jié)束);elseAfxMessageBox(請(qǐng)輸入1-4象限的圓”);elseAfxMessageBox(請(qǐng)輸入正確的半徑值 ”);elseAfxMessageBox(請(qǐng)輸入位于同

25、一圓上的坐標(biāo)點(diǎn)”);elseAfxMessageBox(請(qǐng)輸入符合要求的圓心位置”);六.其他程序說明1)清除按鈕功能程序每次按下該按鈕時(shí),將定義的所有變量賦予初值。void CMyDlg:O nButto n2()N=0;N1=0;NX=0;NY=0;x=0;y=0;E=0; F=0;m=0; n=1; X=0;X 仁 0;Y=0;Y 仁 0;Xe=0;Ye=0;Ex=0;Ey=0; xs=0;ys=0;Tx=0;T1x=0;Ty=0;T1y=0;M=1;M1=1;T=1;In validate();2)退出按鈕功能程序每次按下該按鈕時(shí),程序提示退出界面。void CMyDlg:O nBut

26、to n4()if(MessageBox(確認(rèn)退出插補(bǔ)程序,”請(qǐng)確認(rèn)退出 ”,MB_ICONQUESTION|MB_OKCANCEL)=IDOK) PostMessage(WM_QUIT);16七.心得體會(huì)機(jī)床數(shù)控技術(shù)及應(yīng)用課程設(shè)計(jì)是對(duì)我們所學(xué)課程機(jī)床數(shù)控技術(shù)及應(yīng)用中知識(shí)的應(yīng)用,用到的 主要知識(shí)是插補(bǔ)原理和插補(bǔ)方法。本次課程設(shè)計(jì)與我們以前做過的課程設(shè)計(jì)存在明顯的不同,以往的課程 設(shè)計(jì)主要工作是計(jì)算與手工畫圖,而這次的課程設(shè)計(jì)是對(duì)原理的應(yīng)用。作為實(shí)現(xiàn)插補(bǔ)過程的實(shí)現(xiàn)手段,對(duì) 編程語言知識(shí)的要求較高,完全通過軟件編程實(shí)現(xiàn),即“1%的工作是插補(bǔ),99%的工作是界面的設(shè)計(jì)和程序編寫”。這次課程設(shè)計(jì),我從

27、開始準(zhǔn)備到完全做完,一共花了三天多的時(shí)間,每天從早晨八點(diǎn)到晚上十一點(diǎn), 除了中間去上課之外,其余時(shí)間一直都在教研室里做課設(shè),不但沒有感覺枯燥,反而覺得很有趣。這次課 設(shè)主要是通過編程語言實(shí)現(xiàn)的,幸運(yùn)的是我們?cè)诖笠坏臅r(shí)候?qū)W習(xí)過Visual C+,而且這個(gè)學(xué)期以來自己也一直在用VC對(duì)51單片機(jī)進(jìn)行編程,所以對(duì) Visual C+的知識(shí)還算熟悉,沒有因?yàn)槿W(xué)習(xí)新的編程語言和 復(fù)習(xí)以往的知識(shí)而花費(fèi)時(shí)間。雖然如此,但由于對(duì)建立MFC應(yīng)用程序的過程了解不夠,沒有搞清楚文檔界面和對(duì)話框的區(qū)別,仍然走了寫誤區(qū)。我花了一天的時(shí)間去看了與文檔編程相關(guān)的資料,直到晚上才在別 人的提醒下發(fā)現(xiàn)看的資料跟自己需要的不一樣

28、。雖然也從中學(xué)習(xí)到了一些自己所需要的知識(shí),但是絕大多 數(shù)的時(shí)間還是浪費(fèi)了。在三天多的時(shí)間里,從 MFC知識(shí)的學(xué)習(xí),到界面的設(shè)計(jì)、控件的布置,至慷后的函數(shù)添加,自己一步 一個(gè)腳印走過來,付出了很大的努力,同時(shí)也學(xué)習(xí)到了很多的知識(shí),對(duì)插補(bǔ)的原理也進(jìn)一步理解。剛開始,先練習(xí)在控件上畫出圖形,然后就練習(xí)圖形輸出的單步控制。因?yàn)樵趫D書館里沒有找到相關(guān) 的資料,所以就自己慢慢地琢磨,花了很長的時(shí)間,也花了很大的功夫,我知道如何編寫插補(bǔ)步驟的程序 對(duì)于我來說是沒有問題的,關(guān)鍵的地方就是如何實(shí)現(xiàn)插補(bǔ)軌跡的單步輸出。后來無意中在C+的課本上看見靜態(tài)變量可以實(shí)現(xiàn)每次程序執(zhí)行后數(shù)值不變,我才猛然意識(shí)到利用靜態(tài)變量實(shí)

29、現(xiàn)軌跡的單步控制。我先 嘗試著編寫了將一條直線分段輸出的程序,果然可以實(shí)現(xiàn)。之后,就很順利的將直線的插補(bǔ)程序編寫出來,與自己預(yù)想的完全一樣。而從單步控制到連續(xù)插補(bǔ)的實(shí)現(xiàn),只花了不到五分鐘的時(shí)間。一條一條語句的編 寫,看著自己一點(diǎn)點(diǎn)的進(jìn)步,心里有種莫名的激動(dòng)。第二天晚上十點(diǎn)半我將直線插補(bǔ)的兩種方式實(shí)現(xiàn)了。 第三天的時(shí)候,我開始編寫圓弧插補(bǔ)的程序。因?yàn)閳A弧插補(bǔ)用DDA法實(shí)現(xiàn),這種插補(bǔ)方法沒有固定的偏差判別函數(shù),所用到的變量數(shù)目也較多,所以我感覺圓弧插補(bǔ)的實(shí)現(xiàn)要比直線繁瑣好多,但是因?yàn)橐呀?jīng)有了 一定的經(jīng)驗(yàn),所以我并沒有擔(dān)心自己別寫不出來。我首先嘗試編寫第1象限的圓弧的插補(bǔ)程序,在這過程中出現(xiàn)了很多的

30、問題, 不是輸不出圖形,就是輸出的軌跡與實(shí)際的插補(bǔ)軌跡不相同。一遍一遍的修改程序,但是大半天的時(shí)間過去了,還是沒有什么進(jìn)展。實(shí)在沒有辦法,我就按照自己編寫的程序,一步步往下驗(yàn) 證,將結(jié)果一步步在紙上寫下來,與實(shí)際的插補(bǔ)圖形進(jìn)行比較,看看問題究竟出現(xiàn)在哪。這樣果然有效, 在晚上八點(diǎn)左右的時(shí)候,我把第1象限的圓弧單步插補(bǔ)實(shí)現(xiàn)。對(duì)程序略加修改之后,不一會(huì)兒就實(shí)現(xiàn)了兩個(gè)象限的圓弧的單步插補(bǔ)。然而,圓弧的連續(xù)插補(bǔ)并沒有像直線插補(bǔ)那么容易實(shí)現(xiàn)。因?yàn)檫@其中的變量太 多,用到的判別語句很多, 眼睛很容易就看錯(cuò)了, 一不小心就會(huì)把程序?qū)戝e(cuò),輸不出正確結(jié)果就很正常了。雖然進(jìn)過一個(gè)多小時(shí)的修改,但是程序仍然不能實(shí)現(xiàn)

31、功能。晚上回去之后還在一直考慮著這個(gè)問題,覺也沒有睡好。第二天清晨在腦子里又把程序理了一遍,居 然發(fā)現(xiàn)了一些問題。早飯后到教研室,花了不到二十分鐘就把程序改好了。當(dāng)插補(bǔ)的一條條線段出現(xiàn)在我 的眼睛里的時(shí)候,心里真的是很激動(dòng),為自己這些天的努力與付出有一個(gè)滿意的結(jié)果而高興。后來在老師的幫助和提醒下,我又花了大概半天的時(shí)間將整個(gè)程序進(jìn)一步完善,例如可以逐段顯示連 續(xù)插補(bǔ)的軌跡、用不同的顏色顯示插補(bǔ)軌跡、數(shù)據(jù)點(diǎn)賦初值,避免出錯(cuò)等,這樣輸出的結(jié)果比之前好了很 多。在這次課程設(shè)計(jì)的過程中,我不單單是將課程設(shè)計(jì)給做完了,真的學(xué)習(xí)到了很多的東西,體會(huì)到了學(xué) 習(xí)的樂趣,對(duì)數(shù)控插補(bǔ)原理的理解更加透徹,能夠更加熟

32、練的使用Visual C+,以后也可以利用 MFC故一些其他的程序。同時(shí),因?yàn)槲覍磉€要深入地學(xué)習(xí)數(shù)控技術(shù),所以這次的經(jīng)歷對(duì)自己以后也有很大的幫助,也激發(fā)了我學(xué)習(xí)的興趣。175七.心得體會(huì)#5七.心得體會(huì)#5附錄1:插補(bǔ)過程完整的程序/數(shù)控機(jī)床技術(shù)及應(yīng)用課程設(shè)計(jì)Dlg.cpp : implementation file#include stdafx.h#i nclude 數(shù)控機(jī)床技術(shù)及應(yīng)用課程設(shè)計(jì).h#i nclude 數(shù)控機(jī)床技術(shù)及應(yīng)用課程設(shè)計(jì)Dlg.h#in clude math.h#ifdef _DEBUG#defi ne new DEBUG_NEW#un def THIS_FILEst

33、atic char THIS_FILE = _FILE_;#en dif/ CAboutDlg dialog used for App Aboutstatic double NX=0,NY=0,N=0,N 仁0,m,x,y,X=0,X 仁0,Y=0,Y 仁0,Xe,Ye,F=0;static double Ex,Ey,xs=0,ys=0,Tx=0,T1x=0,Ty=0,T1y=0,E, n=1,T=1;int M=1,M 1=1;class CAboutDlg : public CDialogpublic:CAboutDlg();/ Dialog DataAFX_DATA(CAboutDlg)

34、enum IDD = IDD_ABOUTBOX ;AFX_DATA/ ClassWizard gen erated virtual fun ctio n overridesAFX_VIRTUAL(CAboutDlg)protected:virtual void DoDataExcha nge(CDataExcha nge* pDX); / DDX/DDV support /AFX_VIRTUAL/ Impleme ntati onprotected:/AFX_MSG(CAboutDlg)/AFX_MSGDECLARE_MESSAGE_MAP();CAboutDlg:CAboutDlg() :

35、CDialog(CAboutDlg:IDD)/AFX_DATA_INIT(CAboutDlg)/AFX_DATA_INITvoid CAboutDlg:DoDataExcha nge(CDataExcha nge* pDX)CDialog:DoDataExcha nge(pDX);AFX_DATA_MAP(CAboutDlg)AFX_DATA_MAPBEGIN_MESSAGE_MAP(CAboutDlg, CDialog)AFX_MSG_MAP(CAboutDlg)/ No message han dlersAFX_MSG_MAPEND_MESSAGE_MAP()/ CMyDlg dialog

36、CMyDlg:CMyDlg(CWnd* pPare nt /*=NULL*/):CDialog(CMyDlg:IDD, pPare nt)/AFX_DATA_INIT(CMyDlg)mine = 0;m_alx = 0.0;m_aly = 0.0;m_blx = 4.0;m_bly = -4.0;m_aax = 0.0;m_aay = 5.0;m_bax = 0.0;m_bay = -5.0;m_ox = 0.0;m_oy = 0.0;m_r = 5.0;m_n = 3.0;m_bc = 1.0;/AFX_DATA_INIT/ Note that LoadIcon does not requi

37、re a subsequent DestroyIcon in Win32 m_hIco n = AfxGetApp()-Loadlco n(IDR_MAINFRAME);void CMyDlg:DoDataExcha nge(CDataExcha nge* pDX)CDialog:DoDataExcha nge(pDX);AFX_DATA_MAP(CMyDlg)DDX_Co ntrol(pDX, IDC_BUTTON4, m_tuichu);DDX_Co ntrol(pDX, IDC_BUTTON3, m_lia nxu);DDX_C on trol(pDX, IDC_BUTTON2, m_q

38、i ngchu);DDX_Co ntrol(pDX, IDC_BUTTON1, m_da nbu);DDX_Radio(pDX, IDC_RADIO1, m_li ne);DDX_Text(pDX, IDC_EDIT1, m_alx);DDX_Text(pDX, IDC_EDIT2, m_aly);DDX_Text(pDX, IDC_EDIT3, m_blx);DDX_Text(pDX, IDC_EDIT4, m_bly);DDX_Text(pDX, IDC_EDIT5, m_aax);DDX_Text(pDX, IDC_EDIT6, m_aay);DDX_Text(pDX, IDC_EDIT

39、7, m_bax);DDX_Text(pDX, IDC_EDIT8, m_bay);DDX_Text(pDX, IDC_EDIT9, m_ox);DDX_Text(pDX, IDC_EDIT10, m_oy);DDX_Text(pDX, IDC_EDIT11, m_r);DDX_Text(pDX, IDC_EDIT12, m_n);DDX_Text(pDX, IDC_EDIT13, m_bc);AFX_DATA_MAPBEGIN_MESSAGE_MAP(CMyDlg, CDialog)AFX_MSG_MAP(CMyDlg)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM

40、_QUERYDRAGICON()ON_BN_CLICKED(IDC_BUTTON1, On Butt on1)ON_BN_CLICKED(IDC_BUTTON2, On Butt on2)ON_BN_CLICKED(IDC_BUTTON4, On Butt on4)ON_BN_CLICKED(IDC_BUTTON3, On Butt on3)ON_WM_TIMER()AFX_MSG_MAPEND_MESSAGE_MAP()/ CMyDlg message han dlersBOOL CMyDlg:O nl ni tDialog()CDialog:O nlni tDialog();/ Add A

41、bout. menu item to system menu./ IDM_ABOUTBOX must be in the system comma nd ran ge.ASSERT(IDM_ABOUTBOX & OxFFFO) = IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX Appe ndMe nu(MF_SEPARATOR);pSysMenu-AppendMenu(MF_STRING , IDM_ABOUTBOX, strAboutMenu);/ Set the icon for this dialog. The framework does this automat

42、ically/ when the applications main window is not a dialogSetIco n(m_hlco n, TRUE);/ Set big iconSetIco n(m_hlc on, FALSE);/ Set small icon/ TODO: Add extra in itializatio n herereturn TRUE; / return TRUEuni ess you set the focus to a con trolvoid CMyDlg:O nSysComma nd(UINT nID, LPARAM lParam)if (n I

43、D & 0xFFF0) = IDM_ABOUTBOX)CAboutDlg dlgAbout;dlgAbout.DoModal();elseCDialog:O nSysComma nd( nID, lParam);/ If you add a mini mize butt on to your dialog, you will n eed the code below/ to draw the icon. For MFC applicati ons using the docume nt/view model,/ this is automatically done for you by the

44、 framework.void CMyDlg:O nPai nt()if (IsIco ni c()CPaintDC dc(this); / device con text for paintingSen dMessage(WMCONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);/ Cen ter icon in clie nt recta ngleint cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClie ntRec

45、t(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;/ Draw the icondc.DrawIc on (x, y, m_hIc on);else21CDialog: OnPain t();/ The system calls this to obtain the cursor to display while the user drags/ the mi ni mized win dow.HCURSOR CMyDlg:O nQueryDraglco n()ret

46、urn (HCURSOR) m_hIco n;void CMyDlg:O nButto n1()/ TODO: Add your con trol no tificati on han dler code here CStatic*pWnd=(CStatic*)GetDlgltem(IDC_PRINTAREA); CDC*pdc=pWnd-GetDC();CRect rc;pWnd-GetClie ntRect(&rc);CRgn rgn;rgn. CreateRectRg n(rc.l eft+1,rc.top+7,rc.right-2,rc.bottom-2); pdc-SelectCli

47、pRg n(&rgn);pdc-SetViewportOrg(rc.left+rc.right)/2,rc.bottom-150); pdc-MoveTo(-150,0);pdc-Li neTo(150,0);pdc-MoveTo(0,-150);pdc-Li neTo(0,150);pdc-TextOut(-10,-20,o);pdc-TextOut(15O,O,x);pdc-TextOut(-5,-15O,y);UpdateData(true);if (m_li ne=0) pdc-MoveTo(10*m_alx,-10*m_aly);pdc-Li neTo(10*m_blx,-10*m_bly);if(m_alxm_bly) &(m_alx=0)&(m_aly0)if(F=0)NX=NX+1;N=N+1;pdc-MoveTo

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(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ì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!