版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
機床數(shù)控技術課程設計說明書學 校:專 業(yè):機械工程及自動化學 號:姓 名:設計題目:PL1DC21指導老師:時 間:一.課設任務:1.PL1-----逐點比較法插補第1象限直線;2.DC21---DDA法插補第2~1象限順圓弧。二.課設要求:1.具有數(shù)據(jù)輸入界面,如輸入直線插補的起點、終點,圓弧插補的起止點、圓心或半徑、插補的步長等;2.具有插補過程的動態(tài)顯示功能,如單步插補、連續(xù)插補等;3.插補的步長可調;4.直線的起點、圓弧的圓心在坐標系中的位置可變(即直線的起點、圓弧的圓心可不設定在坐標原點)5.建議使用C語言編程,有條件者可使用VB、VC等語言編程。三.程序界面及運行截圖1.直線連續(xù)插補:直線單步插補:圓弧連續(xù)插補:
4.圓弧單步插補:
四、程序流程圖1.PL1:逐點比較法插補第1象限直線逐點比較法插補直線的過程為每進給一步需完成偏差判別,坐標進給,偏差計算,終點判別四個步驟,具體流程如圖1所示。開始開始E=E-1YNY向正Y方向前進一步F=F+(x02-x01)向正X方向前進一步F=F-(y02-y01)F>=0E>0N結束E=(abs(x01-x02)+abs(y01-y02))/k(總步數(shù))F=0(判別函數(shù))初始化,輸入起點x01、y01,終點x02、y02,步長kE=E-1YNY向正Y方向前進一步F=F+(x02-x01)向正X方向前進一步F=F-(y02-y01)F>=0E>0N結束E=(abs(x01-x02)+abs(y01-y02))/k(總步數(shù))F=0(判別函數(shù))初始化,輸入起點x01、y01,終點x02、y02,步長k2、DDA法圓弧插補2、DDA法圓弧插補xm=fix((xx-x03)/b);ym=fix((yy+R-y03)/b)Yjvx=0;jvy=0m=2^jxm>0?jvx=jvx+yj-yyYNym>0?jvy=jvy+xx-xjYjvx溢出?>0?+X前進一步xm=xm-1Yjvy溢出?>0?+Y前進一步y(tǒng)m=ym-1xm>0||ym>0?N二一象限順圓?計算圓心坐標(xx,yy)xj=x03,yj=y03初始化,輸入起點坐標(xr03,y03),終點坐標(x04,y04)半徑R步長b和寄存器位數(shù)j開始NY+X前進一步xn=xn-1-Y前進一步+X前進一步xn=xn-1-Y前進一步y(tǒng)n=yn-1xn=fix((x04-xx)/b);yn=fix((yy+R-y04)/b);Nxn>0?jvx=jvx+yj-yyYNyn>0?jvy=jvy+xj-xxYjvx溢出?>0?Yjvy溢出?>0?xn>0||yn>0?NY結束functionvarargout=cxy_050910610(varargin)gui_Singleton=1;gui_State=struct('gui_Name',mfilename,...'gui_Singleton',gui_Singleton,...'gui_OpeningFcn',@cxy_050910610_OpeningFcn,...'gui_OutputFcn',@cxy_050910610_OutputFcn,...'gui_LayoutFcn',[],...'gui_Callback',[]);ifnargin&&ischar(varargin{1})gui_State.gui_Callback=str2func(varargin{1});endifnargout[varargout{1:nargout}]=gui_mainfcn(gui_State,varargin{:});elsegui_mainfcn(gui_State,varargin{:});endfunctioncxy_050910610_OpeningFcn(hObject,eventdata,handles,varargin)globaluu=0;globalfla;fla=0;handles.output=hObject;guidata(hObject,handles);functionvarargout=cxy_050910610_OutputFcn(hObject,eventdata,handles)varargout{1}=handles.output;functionx1_Callback(hObject,eventdata,handles)globalx01;x01=str2double(get(handles.x1,'string'));functionx1_CreateFcn(hObject,eventdata,handles)ifispc&&isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunctionx2_Callback(hObject,eventdata,handles)globalx02;x02=str2double(get(handles.x2,'string'));functionx2_CreateFcn(hObject,eventdata,handles)ifispc&&isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunctiony1_Callback(hObject,eventdata,handles)globaly01;y01=str2double(get(handles.y1,'string'));functiony1_CreateFcn(hObject,eventdata,handles)ifispc&&isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunctiony2_Callback(hObject,eventdata,handles)globaly02;y02=str2double(get(handles.y2,'string'));functiony2_CreateFcn(hObject,eventdata,handles)ifispc&&isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunctionx3_Callback(hObject,eventdata,handles)globalx03;x03=str2double(get(handles.x3,'string'));functionx3_CreateFcn(hObject,eventdata,handles)ifispc&&isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunctiony3_Callback(hObject,eventdata,handles)globaly03;y03=str2double(get(handles.y3,'string'));functiony3_CreateFcn(hObject,eventdata,handles)ifispc&&isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunctionx4_Callback(hObject,eventdata,handles)globalx04;x04=str2double(get(handles.x4,'string'));functionx4_CreateFcn(hObject,eventdata,handles)ifispc&&isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunctiony4_Callback(hObject,eventdata,handles)globaly04;y04=str2double(get(handles.y4,'string'));functiony4_CreateFcn(hObject,eventdata,handles)ifispc&&isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunctionr_Callback(hObject,eventdata,handles)globalR;R=str2double(get(handles.r,'string'));functionr_CreateFcn(hObject,eventdata,handles)ifispc&&isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunctionclear_Callback(hObject,eventdata,handles)cla;functionstraightline_Callback(hObject,eventdata,handles)globals;gridon;x01=str2double(get(handles.x1,'string'));x02=str2double(get(handles.x2,'string'));y01=str2double(get(handles.y1,'string'));y02=str2double(get(handles.y2,'string'));x=linspace(x01,x02,1000);y=((y02-y01)/(x02-x01))*(x-x01)+y01;plot(x,y,'b');holdon;s=1;functioncircular_arc_Callback(hObject,eventdata,handles)gridon;x03=str2double(get(handles.x3,'string'));x04=str2double(get(handles.x4,'string'));y03=str2double(get(handles.y3,'string'));y04=str2double(get(handles.y4,'string'));R=str2double(get(handles.r,'string'));l=sqrt((y04-y03).^2+(x04-x03).^2);k=sqrt(R^2-(l^2)/4);x0=(x03+x04)/2+((y04-y03)*k)/l;y0=(y03+y04)/2-((x04-x03)*k)/l;x=linspace(x03,x04,1000);y=y0+sqrt(R^2-(x-x0).^2);plot(x,y,'b');axisequal;holdon;globalss=0;functionlxcb_Callback(hObject,eventdata,handles)globalsFXY;ifs==1x01=str2double(get(handles.x1,'string'));x02=str2double(get(handles.x2,'string'));y01=str2double(get(handles.y1,'string'));y02=str2double(get(handles.y2,'string'));k=str2double(get(handles.buchang,'string'));X=x01;Y=y01;F=0;E=(abs(x01-x02)+abs(y01-y02))/k;whileE>0ifF>=0X=X+k;m=linspace(X-k,X,100);n=Y;F=F-(y02-y01);plot(m,n,'r');elseY=Y+k;p=X;q=linspace(Y-k,Y,100);F=F+(x02-x01);plot(p,q,'r');endE=E-1;endelsex03=str2double(get(handles.x3,'string'));x04=str2double(get(handles.x4,'string'));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+(x04-x03)^2)^0.5;m=(y04-y03)/l;n=(x03-x04)/l;xx=(x03+x04)/2+(R^2-l^2/4)^0.5*m;yy=(y03+y04)/2+(R^2-l^2/4)^0.5*n;if~(x03<=xx&xx<=x04&y03>=yy&y04>=yy)errordlg('請輸入第二一象限的順圓弧');elsexi=x03;yi=y03;xii=x03;yii=y03;jvx=0;jvy=0;xj=fix((xx-x03)/b);yj=fix((yy+R-y03)/b);%計算步數(shù)m=2^j;%模while(xj>0||yj>0)ifxj>0jvx=jvx+yi-yy;endifyj>0jvy=jvy+xx-xi;endflag=0;if(jvx>m)xj=xj-1;flag=1;xi=xi+b;jvx=mod(jvx,m);endif(jvy>m)yj=yj-1;flag=1;yi=yi+b;jvy=mod(jvy,m);endifflag==1line([xii,xi],[yii,yi],'color','r');holdon;xii=xi;yii=yi;endendendline([xi,xx],[yi,yy+R],'color','r');xi=xx;yi=yy+R;xii=xx;yii=yy+R;jvx=0;jvy=0;xj=fix((x04-xx)/b);yj=fix((yy+R-y04)/b);m=2^j;axisauto;while(xj>0||yj>0)ifxj>0jvx=jvx+yi-yy;endifyj>0jvy=jvy+xi-xx;endflag=0;if(jvx>m)xj=xj-1;flag=1;xi=xi+b;jvx=mod(jvx,m);endif(jvy>m)yj=yj-1;flag=1;yi=yi-b;jvy=mod(jvy,m);endifflag==1line([xii,xi],[yii,yi],'color','r');xii=xi;yii=yi;holdon;endendendfunctiondbcb_Callback(hObject,eventdata,handles)globalXYFuEs;ifs==1x01=str2double(get(handles.x1,'string'));y01=str2double(get(handles.y1,'string'));x02=str2double(get(handles.x2,'string'));y02=str2double(get(handles.y2,'string'));k=str2double(get(handles.buchang,'string'));ifu==0X=x01;Y=y01;u=u+1;E=(abs(x01-x02)+abs(y01-y02))/k;F=0;elseifE>0ifF>=0X=X+k;m=linspace(X-k,X,1000);n=Y;F=F-(y02-y01);plot(m,n,'r');holdon;elseY=Y+k;p=X;q=linspace(Y-k,Y);F=F+(x02-x01);plot(p,q,'r');holdon;endE=E-1;elseu=0;endendelseglobalfla;x03=str2double(get(handles.x3,'string'));x04=str2double(get(handles.x4,'string'));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+(x04-x03)^2)^0.5;m=(y04-y03)/l;n=(x03-x04)/l;xx=(x03+x04)/2+(R^2-l^2/4)^0.5*m;yy=(y03+y04)/2+(R^2-l^2/4)^0.5*n;if~(x03<=xx&&xx<=x04&&y03>=yy&&y04>=yy)errordlg('請輸入第二一象限的順圓弧');else%第二象限的順圓插補xi=x03;yi=y03;jvx=0;jvy=0;xj=fix((xx-x03)/b);yj=fix((yy+R-y03)/b);%第二象限的計數(shù)器m=2^j;k=1;while(xj>0||yj>0)ifxj>0jvx=jvx+yi-yy;endifyj>0jvy=jvy+xx-xi;endflag=0;if(jvx>m)xj=xj-1;flag=1;xi=xi+b;jvx=mod(jvx,m);endif(jvy>m)yj=yj-1;flag=1;yi=yi+b;jvy=mod(jvy,m);endifflag==1XC(k)=xi;YC(k)=yi;k=k+1;endendendxi=xx;yi=yy+R;xii=xx;yii=yy+R;%第一象限順圓插補jvx=0;jvy=0;xn=fix((x04-xx)/b);yn=fix((yy+R-y04)/b);%第一象限的計數(shù)器m=2^j;axisauto;while(xn>0||yn>0)ifxn>0jvx=jvx+yi-yy;endifyn>0jvy=jvy+xi-xx;endflag=0;if(jvx>m)xn=xn-1;flag=1;xi=xi+b;jvx=mod(jvx,m);endif(jvy>m)yn=yn-1;flag=1;yi=yi-b;jvy=mod(jvy,m);endifflag==1XC(k)=xi;YC(k)=yi;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年醫(yī)院化學發(fā)光分析儀采購合同
- 2026年醫(yī)院古醫(yī)療調解模型館共建合同
- 2026年eVTOL起降場設計合同
- 2025年智能配送機器人項目可行性研究報告
- 2025年數(shù)字化用戶體驗優(yōu)化項目可行性研究報告
- 2025年數(shù)字化轉型解決方案實施項目可行性研究報告
- 爬架分包合同范本
- 義賣慈善協(xié)議書
- 老人請保姆協(xié)議書
- 2025年電動船舶研發(fā)與應用項目可行性研究報告
- 酒類進貨合同范本
- 2026年教師資格之中學綜合素質考試題庫500道及答案【真題匯編】
- TCEC5023-2020電力建設工程起重施工技術規(guī)范報批稿1
- 2025秋國開《人力資源管理理論與實務》形考任務1234參考答案
- 2026年5G網(wǎng)絡升級培訓課件
- 2026云南昆明鐵道職業(yè)技術學院校園招聘4人考試筆試參考題庫及答案解析
- 2025安徽宣城寧國市面向社會招聘社區(qū)工作者25人(公共基礎知識)綜合能力測試題附答案解析
- 模板工程技術交底
- 廣東省廣州市越秀區(qū)2024-2025學年上學期期末考試九年級數(shù)學試題
- 2025年區(qū)域經(jīng)濟一體化發(fā)展模式可行性研究報告及總結分析
- 醫(yī)療器械全生命周期有效性管理策略
評論
0/150
提交評論