机床数控关键技术专业课程设计.doc
《机床数控关键技术专业课程设计.doc》由会员分享,可在线阅读,更多相关《机床数控关键技术专业课程设计.doc(24页珍藏版)》请在咨信网上搜索。
机床数控技术课程设计 说明书 学 校:南京航空航天大学 专 业:机械工程及自动化 学 号: 姓 名: 设计题目:PL1 DC21 指导老师: 时 间: 一.课设任务: 1.PL1-----逐点比较法插补第1象限直线; 2.DC21---DDA法插补第2~1象限顺圆弧。 二.课设要求: 1.含有数据输入界面,如输入直线插补起点、终点,圆弧插补起止点、圆心或半径、插补步长等; 2.含有插补过程动态显示功效,如单步插补、连续插补等; 3.插补步长可调; 4.直线起点、圆弧圆心在坐标系中位置可变(即直线起点、圆弧圆心可不设定在坐标原点) 5.提议使用C语言编程,有条件者可使用VB、VC等语言编程。 三.程序界面及运行截图 1.直线连续插补: 2. 直线单步插补: 3. 圆弧连续插补: 4.圆弧单步插补: 四、程序步骤图 1.PL1:逐点比较法插补第1象限直线 逐点比较法插补直线过程为每进给一步需完成偏差判别,坐标进给,偏差计算, 终点判别四个步骤,具体步骤图1 所表示。 开始 E=E-1 Y N Y 向正Y方向前深入 F=F+(x02-x01) 向正X方向前深入 F=F-(y02-y01) F>=0 E>0 N 结束 E=(abs(x01-x02)+abs(y01-y02))/k (总步数) F=0 (判别函数) 初始化,输入起点x01、y01,终点x02、y02,步长k 2、DDA法圆弧插补 xm=fix((xx-x03)/b); ym=fix((yy+R-y03)/b) Y jvx=0;jvy=0 m=2^j xm>0? jvx=jvx+yj-yy Y N ym>0? jvy=jvy+xx-xj Y jvx溢出? >0? +X前深入 xm=xm-1 Y jvy溢出? >0? +Y前深入 ym=ym-1 xm>0||ym>0? N 二一象限顺圆? 计算圆心坐标(xx,yy) xj=x03,yj=y03 初始化,输入起点坐标(xr03,y03),终点坐标(x04,y04) 半径R步长b和寄存器位数j 开始 N Y +X前深入 xn=xn-1 -Y前深入 yn=yn-1 xn=fix((x04-xx)/b); yn=fix((yy+R-y04)/b); N xn>0? jvx=jvx+yj-yy Y N yn>0? jvy=jvy+xj-xx Y jvx溢出? >0? Y jvy溢出? >0? xn>0||yn>0? N Y 结束 五.程序及变量说明(Matlab) function varargout = cxy_(varargin) gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @cxy__OpeningFcn, ... 'gui_OutputFcn', @cxy__OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end function cxy__OpeningFcn(hObject, eventdata, handles, varargin) global u u=0; global fla; fla=0; handles.output = hObject; guidata(hObject, handles); function varargout = cxy__OutputFcn(hObject, eventdata, handles) varargout{1} = handles.output; function x1_Callback(hObject, eventdata, handles) global x01; x01=str2double(get(handles.x1,'string')); function x1_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function x2_Callback(hObject, eventdata, handles) global x02; x02=str2double(get(handles.x2,'string')); function x2_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function y1_Callback(hObject, eventdata, handles) global y01; y01=str2double(get(handles.y1,'string')); function y1_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function y2_Callback(hObject, eventdata, handles) global y02; y02=str2double(get(handles.y2,'string')); function y2_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function x3_Callback(hObject, eventdata, handles) global x03; x03=str2double(get(handles.x3,'string')); function x3_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function y3_Callback(hObject, eventdata, handles) global y03; y03=str2double(get(handles.y3,'string')); function y3_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function x4_Callback(hObject, eventdata, handles) global x04; x04=str2double(get(handles.x4,'string')); function x4_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function y4_Callback(hObject, eventdata, handles) global y04; y04=str2double(get(handles.y4,'string')); function y4_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function r_Callback(hObject, eventdata, handles) global R; R=str2double(get(handles.r,'string')); function r_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function clear_Callback(hObject, eventdata, handles) cla; function straightline_Callback(hObject, eventdata, handles) global s; grid on; 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'); hold on; s=1; function circular_arc_Callback(hObject, eventdata, handles) grid on; 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'); axis equal; hold on; global s s=0; function lxcb_Callback(hObject, eventdata, handles) global s F X Y; if s==1 x01=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; while E>0 if F>=0 X=X+k; m=linspace(X-k,X,100); n=Y; F=F-(y02-y01); plot(m,n,'r'); else Y=Y+k; p=X; q=linspace(Y-k,Y,100); F=F+(x02-x01); plot(p,q,'r'); end E=E-1; end else 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;xii=x03;yii=y03; jvx=0; jvy=0; xj=fix((xx-x03)/b);yj=fix((yy+R-y03)/b); %计算步数 m=2^j; %模 while (xj>0||yj>0) if xj>0 jvx=jvx+yi-yy; end if yj>0 jvy=jvy+xx-xi; end flag=0; if(jvx>m) xj=xj-1;flag=1; xi=xi+b; jvx=mod(jvx,m); end if(jvy>m) yj=yj-1;flag=1; yi=yi+b; jvy=mod(jvy,m); end if flag==1 line([xii,xi],[yii,yi],'color','r'); hold on; xii=xi; yii=yi; end end end line([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; axis auto; while (xj>0||yj>0) if xj>0 jvx=jvx+yi-yy; end if yj>0 jvy=jvy+xi-xx; end flag=0; if(jvx>m) xj=xj-1;flag=1; xi=xi+b; jvx=mod(jvx,m); end if(jvy>m) yj=yj-1;flag=1; yi=yi-b; jvy=mod(jvy,m); end if flag==1 line([xii,xi],[yii,yi],'color','r'); xii=xi; yii=yi; hold on; end end end function dbcb_Callback(hObject, eventdata, handles) global X Y F u E s; if s==1 x01=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')); if u==0 X=x01; Y=y01; u=u+1; E=(abs(x01-x02)+abs(y01-y02))/k; F=0; else if E>0 if F>=0 X=X+k; m=linspace(X-k,X,1000); n=Y; F=F-(y02-y01); plot(m,n,'r'); hold on; else Y=Y+k; p=X; q=linspace(Y-k,Y); F=F+(x02-x01); plot(p,q,'r'); hold on; end E=E-1; else u=0; end end else global fla; 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); %第二象限计数器 m=2^j; k=1; while (xj>0||yj>0) if xj>0 jvx=jvx+yi-yy; end if yj>0 jvy=jvy+xx-xi; end flag=0; if(jvx>m) xj=xj-1;flag=1; xi=xi+b; jvx=mod(jvx,m); end if(jvy>m) yj=yj-1;flag=1; yi=yi+b; jvy=mod(jvy,m); end if flag==1 XC(k)=xi; YC(k)=yi; k=k+1; end end end xi=xx;yi=yy+R;xii=xx;yii=yy+R; %第一象限顺圆插补 jvx=0; jvy=0; xn=fix((x04-xx)/b);yn=fix((yy+R-y04)/b); %第一象限计数器 m=2^j; axis auto; while (xn>0||yn>0) if xn>0 jvx=jvx+yi-yy; end if yn>0 jvy=jvy+xi-xx; end flag=0; if(jvx>m) xn=xn-1;flag=1; xi=xi+b; jvx=mod(jvx,m); end if(jvy>m) yn=yn-1;flag=1; yi=yi-b; jvy=mod(jvy,m); end if flag==1 XC(k)=xi; YC(k)=yi; k=k+1; end end a=pi-atan(abs((y03-yy)/(x03-xx))); b=atan(abs((y04-yy)/(x04-xx))); alpha=b:pi/100:a; XQ=xx+R*cos(alpha); YQ=yy+R*sin(alpha); plot(XQ,YQ) hold on; plot(xx,yy,'Ro'); if fla==0 fla=fla+1; elseif fla==1 line([x03,XC(1)],[y03,YC(1)],'color','r'); fla=fla+1; elseif fla<=k-2 line([XC(fla),XC(fla+1)],[YC(fla),YC(fla+1)],'color','r'); fla=fla+1; else errordlg('插补结束'); fla=0; end end function buchang_Callback(hObject, eventdata, handles) function buchang_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end function jcq_Callback(hObject, eventdata, handles) function jcq_CreateFcn(hObject, eventdata, handles) if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end 六. 心得体会 此次课设是在考研结束后一周内做完,时间其实应该是很够,不过因为本人不善于编程,所以最终完成得很仓促。经过这次课设,我对matlab操作有了更深认识,对相关函数语句还有逻辑循环套用应用有了更深了解。而且此次课设,让我对逐点比较法直线插补和DDA圆弧插补有了感性和理性全方面认识,对我学习数控机床这门课也有很大帮助。最终,碰到困难不要着急,静下心来总有处理措施~- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 机床 数控 关键技术 专业课程 设计
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【天****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【天****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【天****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【天****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文