机床数控技术课程设计.docx

上传人:b****7 文档编号:10763406 上传时间:2023-02-22 格式:DOCX 页数:23 大小:160.24KB
下载 相关 举报
机床数控技术课程设计.docx_第1页
第1页 / 共23页
机床数控技术课程设计.docx_第2页
第2页 / 共23页
机床数控技术课程设计.docx_第3页
第3页 / 共23页
机床数控技术课程设计.docx_第4页
第4页 / 共23页
机床数控技术课程设计.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

机床数控技术课程设计.docx

《机床数控技术课程设计.docx》由会员分享,可在线阅读,更多相关《机床数控技术课程设计.docx(23页珍藏版)》请在冰豆网上搜索。

机床数控技术课程设计.docx

机床数控技术课程设计

 

机床数控技术课程设计

说明书

 

学校:

南京航空航天大学

专业:

机械工程及自动化

学号:

姓名:

设计题目:

PL1DC21

指导老师:

时间:

一.课设任务:

1.PL1--———逐点比较法插补第1象限直线;

2。

DC21--—DDA法插补第2~1象限顺圆弧。

二.课设要求:

1.具有数据输入界面,如输入直线插补的起点、终点,圆弧插补的起止点、圆心或半径、插补的步长等;

2.具有插补过程的动态显示功能,如单步插补、连续插补等;

3。

插补的步长可调;

4。

直线的起点、圆弧的圆心在坐标系中的位置可变(即直线的起点、圆弧的圆心可不设定在坐标原点)

5。

建议使用C语言编程,有条件者可使用VB、VC等语言编程。

三.程序界面及运行截图

 

1。

直线连续插补:

2.直线单步插补:

3.圆弧连续插补:

4.圆弧单步插补:

四、程序流程图

1。

PL1:

逐点比较法插补第1象限直线

逐点比较法插补直线的过程为每进给一步需完成偏差判别,坐标进给,偏差计算,

终点判别四个步骤,具体流程如图1所示。

 

2、DDA法圆弧插补

五.程序及变量说明(Matlab)

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});

end

if nargout

[varargout{1:

nargout}]=gui_mainfcn(gui_State, varargin{:

});

else

 gui_mainfcn(gui_State,varargin{:

});

end

functioncxy_050910610_OpeningFcn(hObject, eventdata,handles,varargin)

globalu

u=0;

global fla;

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');

end

function x2_Callback(hObject, eventdata,handles)

globalx02;

x02=str2double(get(handles.x2,’string’));

function x2_CreateFcn(hObject,eventdata,handles)

ifispc&&isequal(get(hObject,’BackgroundColor'),get(0,’defaultUicontrolBackgroundColor’))

  set(hObject,’BackgroundColor’,’white’);

end

function y1_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');

end

functiony2_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');

end

functionx3_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’);

end

functiony3_Callback(hObject,eventdata,handles)

global y03;

y03=str2double(get(handles。

y3,'string’));

functiony3_CreateFcn(hObject,eventdata,handles)

ifispc && isequal(get(hObject,'BackgroundColor'), get(0,’defaultUicontrolBackgroundColor’))

set(hObject,’BackgroundColor’,’white');

end

functionx4_Callback(hObject,eventdata,handles)

global x04;

x04=str2double(get(handles。

x4,'string’));

function x4_CreateFcn(hObject,eventdata,handles)

ifispc&&isequal(get(hObject,'BackgroundColor’),get(0,’defaultUicontrolBackgroundColor’))

  set(hObject,'BackgroundColor’,'white’);

end

functiony4_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');

end

functionr_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’);

end

functionclear_Callback(hObject,eventdata,handles)

cla;

functionstraightline_Callback(hObject,eventdata,handles)

globals;

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;

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;

global s

s=0;

function lxcb_Callback(hObject, eventdata,handles)

global sF XY;

ifs==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;

 whileE>0

     ifF〉=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)

   ifxj〉0

 jvx=jvx+yi-yy;

   end

 ifyj〉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

  ifflag==1

     line([xii,xi],[yii,yi],’color’,’r’);

   holdon;

    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)

  ifxj>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

  ifflag==1

  line([xii,xi],[yii,yi],'color’,’r');

    xii=xi;

     yii=yi;

   hold on;

    end

 end  

end

functiondbcb_Callback(hObject,eventdata,handles)

global XYFuEs;

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

    ifE〉0

 ifF〉=0

     X=X+k;

    m=linspace(X-k,X,1000);

          n=Y;

       F=F—(y02—y01);

      plot(m,n,'r');

  holdon;

  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

   globalfla;

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)

   ifxj>0

    jvx=jvx+yi—yy;

  end

   ifyj>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 

  ifflag==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;

axisauto;

 while(xn〉0||yn>0)

   if xn〉0

    jvx=jvx+yi—yy;

   end

    ifyn>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

 ifflag==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)

holdon;

  plot(xx,yy,'Ro');

iffla==0

    fla=fla+1;

elseiffla==1

   line([x03,XC

(1)],

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1