機(jī)床數(shù)控技術(shù)課程設(shè)計(jì)報(bào)告_第1頁
機(jī)床數(shù)控技術(shù)課程設(shè)計(jì)報(bào)告_第2頁
機(jī)床數(shù)控技術(shù)課程設(shè)計(jì)報(bào)告_第3頁
機(jī)床數(shù)控技術(shù)課程設(shè)計(jì)報(bào)告_第4頁
機(jī)床數(shù)控技術(shù)課程設(shè)計(jì)報(bào)告_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、-. z 機(jī)床數(shù)控技術(shù)課程設(shè)計(jì)說明書學(xué)校:航空航天大學(xué)專業(yè):機(jī)械工程及自動(dòng)化學(xué)號:姓名:設(shè)計(jì)題目:PL1 DC21指導(dǎo)教師:時(shí)間:一課設(shè)任務(wù):1.PL1-逐點(diǎn)比擬法插補(bǔ)第1象限直線;2.DC21-DDA法插補(bǔ)第21象限順圓弧。二課設(shè)要求:1.具有數(shù)據(jù)輸入界面,如輸入直線插補(bǔ)的起點(diǎn)、終點(diǎn),圓弧插補(bǔ)的起止點(diǎn)、圓心或半徑、插補(bǔ)的步長等;2.具有插補(bǔ)過程的動(dòng)態(tài)顯示功能,如單步插補(bǔ)、連續(xù)插補(bǔ)等;3.插補(bǔ)的步長可調(diào);4.直線的起點(diǎn)、圓弧的圓心在坐標(biāo)系中的位置可變即直線的起點(diǎn)、圓弧的圓心可不設(shè)定在坐標(biāo)原點(diǎn)5.建議使用C語言編程,有條件者可使用VB、VC等語言編程。三程序界面及運(yùn)行截圖1.直線連續(xù)插補(bǔ):直線單

2、步插補(bǔ):圓弧連續(xù)插補(bǔ):4.圓弧單步插補(bǔ):四、程序流程圖1.PL1:逐點(diǎn)比擬法插補(bǔ)第1象限直線逐點(diǎn)比擬法插補(bǔ)直線的過程為每進(jìn)給一步需完成偏差判別,坐標(biāo)進(jìn)給,偏差計(jì)算,終點(diǎn)判別四個(gè)步驟,具體流程如圖1 所示。開場E=E-1YNY向正Y方向前進(jìn)一步F=F+(*02-*01)向正*方向前進(jìn)一步F=F-(y02-y01)F=0E0N完畢E=(abs(*01-*02)+abs(y01-y02)/k (總步數(shù))F=0 判別函數(shù)初始化,輸入起點(diǎn)*01、y01,終點(diǎn)*02、y02,步長k2、DDA法圓弧插補(bǔ)*m=fi*(*-*03)/b);ym=fi*(yy+R-y03)/b)Yjv*=0;jvy=0m=2j*

3、m0?jv*=jv*+yj-yyYNym0?jvy=jvy+*-*jYjv*溢出?0?+*前進(jìn)一步*m=*m-1Yjvy溢出?0?+Y前進(jìn)一步y(tǒng)m=ym-1*m0|ym0N二一象限順圓?計(jì)算圓心坐標(biāo)*,yy*j=*03,yj=y03初始化,輸入起點(diǎn)坐標(biāo)*r03,y03,終點(diǎn)坐標(biāo)(*04,y04) 半徑R步長b和存放器位數(shù)j開場NY+*前進(jìn)一步*n=*n-1-Y前進(jìn)一步y(tǒng)n=yn-1*n=fi*(*04-*)/b);yn=fi*(yy+R-y04)/b);N*n0?jv*=jv*+yj-yyYNyn0?jvy=jvy+*j-*Yjv*溢出?0?Yjvy溢出?0?*n0|yn0NY完畢五程序及變量

4、說明Matlabfunction varargout = c*y_050910610(varargin)gui_Singleton = 1;gui_State = struct(gui_Name, mfilename, . gui_Singleton, gui_Singleton, . gui_OpeningF, c*y_050910610_OpeningF, . gui_OutputF, c*y_050910610_OutputF, . gui_LayoutF, , . gui_Callback, );if nargin & ischar(varargin1) gui_State.gui_C

5、allback = str2func(varargin1);endif nargout varargout1:nargout = gui_mainf(gui_State, varargin:);else gui_mainf(gui_State, varargin:);endfunction c*y_050910610_OpeningF(hObject, eventdata, handles, varargin)global uu=0;global fla;fla=0;handles.output = hObject;guidata(hObject, handles);function vara

6、rgout = c*y_050910610_OutputF(hObject, eventdata, handles) varargout1 = handles.output;function *1_Callback(hObject, eventdata, handles)global *01;*01=str2double(get(handles.*1,string);function *1_CreateF(hObject, eventdata, handles)if ispc & isequal(get(hObject,BackgroundColor), get(0,defaultUicont

7、rolBackgroundColor) set(hObject,BackgroundColor,white);endfunction *2_Callback(hObject, eventdata, handles)global *02;*02=str2double(get(handles.*2,string);function *2_CreateF(hObject, eventdata, handles)if ispc & isequal(get(hObject,BackgroundColor), get(0,defaultUicontrolBackgroundColor) set(hObje

8、ct,BackgroundColor,white);endfunction y1_Callback(hObject, eventdata, handles)global y01;y01=str2double(get(handles.y1,string);function y1_CreateF(hObject, eventdata, handles)if ispc & isequal(get(hObject,BackgroundColor), get(0,defaultUicontrolBackgroundColor) set(hObject,BackgroundColor,white);end

9、function y2_Callback(hObject, eventdata, handles)global y02;y02=str2double(get(handles.y2,string);function y2_CreateF(hObject, eventdata, handles)if ispc & isequal(get(hObject,BackgroundColor), get(0,defaultUicontrolBackgroundColor) set(hObject,BackgroundColor,white);endfunction *3_Callback(hObject,

10、 eventdata, handles)global *03;*03=str2double(get(handles.*3,string);function *3_CreateF(hObject, eventdata, handles)if ispc & isequal(get(hObject,BackgroundColor), get(0,defaultUicontrolBackgroundColor) set(hObject,BackgroundColor,white);endfunction y3_Callback(hObject, eventdata, handles)global y0

11、3;y03=str2double(get(handles.y3,string);function y3_CreateF(hObject, eventdata, handles)if ispc & isequal(get(hObject,BackgroundColor), get(0,defaultUicontrolBackgroundColor) set(hObject,BackgroundColor,white);endfunction *4_Callback(hObject, eventdata, handles)global *04;*04=str2double(get(handles.

12、*4,string);function *4_CreateF(hObject, eventdata, handles)if ispc & isequal(get(hObject,BackgroundColor), get(0,defaultUicontrolBackgroundColor) set(hObject,BackgroundColor,white);endfunction y4_Callback(hObject, eventdata, handles)global y04;y04=str2double(get(handles.y4,string);function y4_Create

13、F(hObject, eventdata, handles)if ispc & isequal(get(hObject,BackgroundColor), get(0,defaultUicontrolBackgroundColor) set(hObject,BackgroundColor,white);endfunction r_Callback(hObject, eventdata, handles)global R;R=str2double(get(handles.r,string);function r_CreateF(hObject, eventdata, handles)if isp

14、c & isequal(get(hObject,BackgroundColor), get(0,defaultUicontrolBackgroundColor) set(hObject,BackgroundColor,white);endfunction clear_Callback(hObject, eventdata, handles)cla;function straightline_Callback(hObject, eventdata, handles)global s;grid on;*01=str2double(get(handles.*1,string);*02=str2dou

15、ble(get(handles.*2,string);y01=str2double(get(handles.y1,string);y02=str2double(get(handles.y2,string);*=linspace(*01,*02,1000);y=(y02-y01)/(*02-*01)*(*-*01)+y01;plot(*,y,b);hold on;s=1;function circular_arc_Callback(hObject, eventdata, handles)grid on;*03=str2double(get(handles.*3,string);*04=str2d

16、ouble(get(handles.*4,string);y03=str2double(get(handles.y3,string);y04=str2double(get(handles.y4,string);R=str2double(get(handles.r,string);l=sqrt(y04-y03).2+(*04-*03).2);k=sqrt(R2-(l2)/4);*0=(*03+*04)/2+(y04-y03)*k)/l;y0=(y03+y04)/2-(*04-*03)*k)/l;*=linspace(*03,*04,1000);y=y0+sqrt(R2-(*-*0).2);plo

17、t(*,y,b);a*is equal;hold on;global ss=0;function l*cb_Callback(hObject, eventdata, handles)global s F * Y;if s=1 *01=str2double(get(handles.*1,string); *02=str2double(get(handles.*2,string); y01=str2double(get(handles.y1,string); y02=str2double(get(handles.y2,string); k=str2double(get(handles.buchan

18、g,string); *=*01;Y=y01; F=0; E=(abs(*01-*02)+abs(y01-y02)/k; while E0 if F=0 *=*+k; m=linspace(*-k,*,100); n=Y; F=F-(y02-y01); plot(m,n,r); else Y=Y+k; p=*; q=linspace(Y-k,Y,100); F=F+(*02-*01); plot(p,q,r); end E=E-1; endelse *03=str2double(get(handles.*3,string); *04=str2double(get(handles.*4,stri

19、ng); y03=str2double(get(handles.y3,string); y04=str2double(get(handles.y4,string); b=str2double(get(handles.buchang,string); j=str2double(get(handles.jcq,string); R=str2double(get(handles.r,string); l=(y04-y03)2+(*04-*03)2)0.5; m=(y04-y03)/l; n=(*03-*04)/l; *=(*03+*04)/2+(R2-l2/4)0.5*m; yy=(y03+y04)

20、/2+(R2-l2/4)0.5*n;if (*03=*&*=yy&y04=yy) errordlg(請輸入第二一象限的順圓弧);else *i=*03;yi=y03;*ii=*03;yii=y03; jv*=0; jvy=0; *j=fi*(*-*03)/b);yj=fi*(yy+R-y03)/b); %計(jì)算步數(shù) m=2j; %模 while (*j0|yj0) if *j0 jv*=jv*+yi-yy; end if yj0 jvy=jvy+*-*i; end flag=0; if(jv*m) *j=*j-1;flag=1; *i=*i+b; jv*=mod(jv*,m); end if(j

21、vym) yj=yj-1;flag=1; yi=yi+b; jvy=mod(jvy,m); end if flag=1 line(*ii,*i,yii,yi,color,r); hold on; *ii=*i; yii=yi; end endend line(*i,*,yi,yy+R,color,r); *i=*;yi=yy+R;*ii=*;yii=yy+R; jv*=0; jvy=0; *j=fi*(*04-*)/b);yj=fi*(yy+R-y04)/b); m=2j; a*is auto; while (*j0|yj0) if *j0 jv*=jv*+yi-yy; end if yj0

22、jvy=jvy+*i-*; end flag=0; if(jv*m) *j=*j-1;flag=1; *i=*i+b; jv*=mod(jv*,m); end if(jvym) yj=yj-1;flag=1; yi=yi-b; jvy=mod(jvy,m); end if flag=1 line(*ii,*i,yii,yi,color,r); *ii=*i; yii=yi; hold on; end end endfunction dbcb_Callback(hObject, eventdata, handles)global * Y F u E s;if s=1 *01=str2double

23、(get(handles.*1,string); y01=str2double(get(handles.y1,string); *02=str2double(get(handles.*2,string); y02=str2double(get(handles.y2,string); k=str2double(get(handles.buchang,string); if u=0 *=*01; Y=y01; u=u+1; E=(abs(*01-*02)+abs(y01-y02)/k; F=0; else if E0 if F=0 *=*+k; m=linspace(*-k,*,1000); n=

24、Y; F=F-(y02-y01); plot(m,n,r); hold on; else Y=Y+k; p=*; q=linspace(Y-k,Y); F=F+(*02-*01); plot(p,q,r); hold on; end E=E-1; else u=0; end endelse global fla; *03=str2double(get(handles.*3,string); *04=str2double(get(handles.*4,string); y03=str2double(get(handles.y3,string); y04=str2double(get(handle

25、s.y4,string); b=str2double(get(handles.buchang,string); j=str2double(get(handles.jcq,string); R=str2double(get(handles.r,string); l=(y04-y03)2+(*04-*03)2)0.5;m=(y04-y03)/l;n=(*03-*04)/l;*=(*03+*04)/2+(R2-l2/4)0.5*m;yy=(y03+y04)/2+(R2-l2/4)0.5*n;if (*03=*&*=yy&y04=yy) errordlg(請輸入第二一象限的順圓弧);else %第二象

26、限的順圓插補(bǔ) *i=*03;yi=y03; jv*=0; jvy=0; *j=fi*(*-*03)/b);yj=fi*(yy+R-y03)/b); %第二象限的計(jì)數(shù)器 m=2j; k=1; while (*j0|yj0) if *j0 jv*=jv*+yi-yy; end if yj0 jvy=jvy+*-*i; end flag=0; if(jv*m) *j=*j-1;flag=1; *i=*i+b; jv*=mod(jv*,m); end if(jvym) yj=yj-1;flag=1; yi=yi+b; jvy=mod(jvy,m); end if flag=1 *C(k)=*i; YC

27、(k)=yi; k=k+1; end endend *i=*;yi=yy+R;*ii=*;yii=yy+R; %第一象限順圓插補(bǔ) jv*=0; jvy=0; *n=fi*(*04-*)/b);yn=fi*(yy+R-y04)/b); %第一象限的計(jì)數(shù)器 m=2j; a*is auto; while (*n0|yn0) if *n0 jv*=jv*+yi-yy; end if yn0 jvy=jvy+*i-*; end flag=0; if(jv*m) *n=*n-1;flag=1; *i=*i+b; jv*=mod(jv*,m); end if(jvym) yn=yn-1;flag=1; yi=yi-b; jvy=mod(jvy,m); end if flag=1 *C(k)=*i; YC(k)=yi; k=k+1; end end a=pi-atan(abs(y03-yy)/(*03-*); b=atan(abs(y04-yy)/(*04-*); alpha=b:pi/10

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論