机床数控技术课程设计.docx
- 文档编号:18202060
- 上传时间:2023-04-24
- 格式:DOCX
- 页数:23
- 大小:99.78KB
机床数控技术课程设计.docx
《机床数控技术课程设计.docx》由会员分享,可在线阅读,更多相关《机床数控技术课程设计.docx(23页珍藏版)》请在冰豆网上搜索。
机床数控技术课程设计
机床数控技术课程设计
说明书
学校:
南京航空航天大学
专业:
机械工程及自动化
学ﻩﻩ号:
姓ﻩﻩ名:
设计题目:
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法圆弧插补
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_050910610(varargin)
gui_Singleton=1;
gui_State=struct('gui_Name', m,、、、
'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
ifnargout
[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;
globalfla;
fla=0;
handles、output=hObject;
guidata(hObject, handles);
functionvarargout= cxy_050910610_OutputFcn(hObject, eventdata,handles)
varargout{1} =handles、output;
function x1_Callback(hObject, eventdata,handles)
globalx01;
x01=str2double(get(handles、x1,’string’));
function x1_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’));
functionx2_CreateFcn(hObject, eventdata,handles)
ifispc&&isequal(get(hObject,'BackgroundColor'),get(0,’defaultUicontrolBackgroundColor’))
set(hObject,'BackgroundColor’,’white’);
end
functiony1_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
function y2_Callback(hObject,eventdata,handles)
globaly02;
y02=str2double(get(handles、y2,'string'));
functiony2_CreateFcn(hObject, eventdata,handles)
if ispc&&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)
globaly03;
y03=str2double(get(handles、y3,'string'));
functiony3_CreateFcn(hObject, eventdata, handles)
if ispc&& 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'));
functionx4_CreateFcn(hObject,eventdata,handles)
ifispc&&isequal(get(hObject,’BackgroundColor'),get(0,'defaultUicontrolBackgroundColor’))
set(hObject,'BackgroundColor',’white');
end
function y4_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'));
function r_CreateFcn(hObject,eventdata, handles)
ifispc&&isequal(get(hObject,'BackgroundColor’),get(0,'defaultUicontrolBackgroundColor'))
set(hObject,’BackgroundColor’,'white’);
end
functionclear_Callback(hObject,eventdata,handles)
cla;
function straightline_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');
axis equal;
hold on;
globals
s=0;
function lxcb_Callback(hObject,eventdata,handles)
globalsFXY;
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
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
ifflag==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;
axisauto;
while(xj〉0||yj>0)
ifxj>0
jvx=jvx+yi—yy;
end
ifyj>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)
globalXYFuEs;
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'));
ifu==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');
holdon;
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
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
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;
axis auto;
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 机床 数控技术 课程设计