机床数控技术课程设计
说明书
学 校:南京航空航天大学
专 业:机械工程及自动化
学 号:
姓 名:
设计题目: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 所示。
开始
初始化,输入起点
x01 、 y01 , 终 点
x02、y02,步长 k
E=(abs(x01-x02)+abs(y01-y02))/k
F=0 (判别函数)
(总步数)
N
结束
E>0
Y
F>=0
Y
N
向正 Y 方向前进一步
F=F+(x02-x01)
向正 X 方向前进一步
F=F-(y02-y01)
E=E-1
2、DDA 法圆弧插补
开始
初始化,输入起点坐标(xr03,y03),
终点坐标(x04,y04) 半径 R 步长 b
和寄存器位数 j
N
二一象限顺圆?
Y
计算圆心坐标(xx,yy)
xj=x03,yj=y03
jvx=0;jvy=0
m=2^j
xm=fix((xx-x03)/b);
ym=fix((yy+R-y03)/b)
N
xm>0?
Y
jvx=jvx+yj-yy
ym>0?
Y
jvy=jvy+xx-xj
jvx溢出?
>0?
jvy溢出?
>0?
xm>0||ym>0?
N
+X 前进一
Y
步
+Y 前进一步
ym=ym-1
Y
N
xn=fix((x04-xx)/b);
yn=fix((yy+R-y04)/b);
N
xn>0?
Y
jvx=jvx+yj-yy
yn>0?
Y
jvy=jvy+xj-xx
jvx溢出?
>0?
jvy溢出?
>0?
xn>0||yn>0?
N
结束
+X 前进一
Y
步
-Y 前进一步
yn=yn-1
Y
五.程序及变量说明(Matlab)
function varargout = 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',
if nargin && ischar(varargin{1})
[]);
gui_State.gui_Callback = str2func(varargin{1});
if nargout
end
else
end
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
gui_mainfcn(gui_State, varargin{:});
eventdata,
handles,
cxy_050910610_OpeningFcn(hObject,
function
varargin)
global u
u=0;
global fla;
fla=0;
handles.output = hObject;
guidata(hObject, handles);
function varargout = cxy_050910610_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
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
ispc
&&
isequal(get(hObject,'BackgroundColor'),