数控机床DDA数字积分法插补第一象限直线,逐点比较法插补二三象限顺圆弧
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(2)圆弧插补:PA23,逐点比较法二三象限顺圆弧插补。
1.2、要求:(1)具有数据输入界面,如:起点,终点,圆心,半径及插补步长。
(2)具有插补过程的动态显示功能,如:但单步插补,连续插补,插补步长可调。
本课程设计的题目要求是DDA数字积分法插补第一象限直线,逐点比较法插补二三象限顺圆弧。由于本课设要求只为二三象限,故默认为劣弧插补。此外,对于两种插补对象均可根据需要改变插补步长,以表现不同的插补效果。在插补显示过程中,有两种插补显示方式,即手动单步插补和自动连续插补动态显示。
3.1 程序开始运行时显示介面
3.2 执行计算
在右侧面板中有参数输入区,方式选择区以及执行按钮等操作。
若输入参数和符合要求则出现错误对话框;“参数有误”
若不选择插补对象为‘直线’或‘圆弧’直接按下‘复位’按钮会出现警示对话框提示“请选择插补对象”
注:在直线插补中,对起始点坐标和终点坐标不作要求,但步长必须不能为0;在圆弧插补中,起始点坐标必须为二三象限的点,且终止点必须在起始点下侧,这事保证圆弧为劣弧的条件之一。步长在任何情况下不能为0 。
4.2 主要算法的实现
4.2.1参数声明
起点坐标(sx,sy);终点坐标(ex,ey);
圆心坐标(cx,cy);步长bc;
4.2.2复位操作程序:
functionfw_Callback(hObject, eventdata, handles)
globalsx sy ex ey cx cy bc m vx1 vy1 rx1 ry1 ;
sy=str2double(get(handles.sy,'String'));
ex=str2double(get(handles.ex,'String'));
ey=str2double(get(handles.ey,'String'));
bc=str2double(get(handles.bc,'String'));
二、程序操作及算法流程图
2.1 DDA法插补直线流程
DDA插补第一象限的直线流程图
2.2逐点比较法插补逆时针圆弧流程
逐点比较法插补二三象限逆圆弧
参数说明:sx、sy为起点坐标
ex、ey为终点坐标
n为进给总次数
cx、cy为圆心坐标
bc为步长
m为寄存器位数
s_1表示按下直线选项,s_2表示按下圆弧按钮
三、用户使用说明——软件运行说明及结果显示
4.2 主要算法的实现……………………………………………………8
4.2.1 参数声明……………………………………………………………………8
4.2.2复位操作………………………………………………………………9
4.2.3单步操作………………………………………………………11
4.2.4 连续插补………………………………………………………………11
3.3DDA法直线插补实例
单步直线插补:
连续直线插补:
左移一位:
半加载:
全加载:
不加载:
单步圆弧插补:
连续圆弧插补:
四、程序设计及主要算法实现
4.1 程序设计概述:
首先从编辑文本框中获取输入的数据,包括起点终点坐标,圆心位置,步长,寄存器位数等需要输入的值。然后通过面板选择插补对象,插补方式,执行操作。
ifs_1==0&&s_2==0
warndlg('请选择插补对象');
else
ifget(handles.zx,'value')
m=str2double(get(handles.m,'String'));
vx1=ex-sx;
vy1=ey-sy;
rx1=0;
ry1=0;
x1=[sx ex];
y1=[sy ey];
4.2.5 辅助操作………………………………………………………………13
五、本设计的特点……………………………………………………13
六、课程设计的感想…………………………………………………13
七、主要参考文献……………………………………………………14
一、课程设计介绍
1.1、任务说明:(1)直线插补:DL1,DDA法第一象限直线插补。
3.1 程序开始运行时显示介面…………………………………………5
3.2 执行计算……………………………………………………………5
3.3DDA法直线插补实例………………………………………………6
3.4逐点比较法插补第二三象限逆时针圆弧…………………………7
四、主要算法及源程序
4.1 程序设计概述………………………………………………………8
一、课程设计介绍wk.baidu.com
1.1任务说明……………………………………………………………3
1.2要求…………………………………………………………………3
二、程序操作及算法流程图
2.1 DDA法插补直线流程………………………………………………3
2.2逐点比较法插补逆时针圆弧流程…………………………………4
三、 用户使用说明
set(gca,'YTick',[-10:1:10]);
axis([-10 10 -10 10]);
axismanual;
holdoff;图像清除
plot(x1,y1,'k');
set(gca,'XTick',[0:1:10]);
set(gca,'YTick',[0:1:10]);
axis([0 10 0 10]);
axismanual;
axison;
gridon;
holdon;
else
if((sx-cx)^2+(sy-cy)^2)~=((ex-cx)^2+(ey-cy)^2)
s_1=get (handles.zx,'value');
s_2=get (handles.yh,'value');
cx=str2double(get(handles.cx,'String'));
cy=str2double(get(handles.cy,'String'));
sx=str2double(get(handles.sx,'String'));
warndlg('参数有误');参数有误
else
y2=sy:(ey-sy)/100:ey;
r=(ex-cx)^2+(ey-cy)^2;
x2=cx-(r-(y2-cy).*(y2-cy)).^0.5;
holdoff;
plot(x2,y2,'k');
set(gca,'XTick',[-10:1:10]);
1.2、要求:(1)具有数据输入界面,如:起点,终点,圆心,半径及插补步长。
(2)具有插补过程的动态显示功能,如:但单步插补,连续插补,插补步长可调。
本课程设计的题目要求是DDA数字积分法插补第一象限直线,逐点比较法插补二三象限顺圆弧。由于本课设要求只为二三象限,故默认为劣弧插补。此外,对于两种插补对象均可根据需要改变插补步长,以表现不同的插补效果。在插补显示过程中,有两种插补显示方式,即手动单步插补和自动连续插补动态显示。
3.1 程序开始运行时显示介面
3.2 执行计算
在右侧面板中有参数输入区,方式选择区以及执行按钮等操作。
若输入参数和符合要求则出现错误对话框;“参数有误”
若不选择插补对象为‘直线’或‘圆弧’直接按下‘复位’按钮会出现警示对话框提示“请选择插补对象”
注:在直线插补中,对起始点坐标和终点坐标不作要求,但步长必须不能为0;在圆弧插补中,起始点坐标必须为二三象限的点,且终止点必须在起始点下侧,这事保证圆弧为劣弧的条件之一。步长在任何情况下不能为0 。
4.2 主要算法的实现
4.2.1参数声明
起点坐标(sx,sy);终点坐标(ex,ey);
圆心坐标(cx,cy);步长bc;
4.2.2复位操作程序:
functionfw_Callback(hObject, eventdata, handles)
globalsx sy ex ey cx cy bc m vx1 vy1 rx1 ry1 ;
sy=str2double(get(handles.sy,'String'));
ex=str2double(get(handles.ex,'String'));
ey=str2double(get(handles.ey,'String'));
bc=str2double(get(handles.bc,'String'));
二、程序操作及算法流程图
2.1 DDA法插补直线流程
DDA插补第一象限的直线流程图
2.2逐点比较法插补逆时针圆弧流程
逐点比较法插补二三象限逆圆弧
参数说明:sx、sy为起点坐标
ex、ey为终点坐标
n为进给总次数
cx、cy为圆心坐标
bc为步长
m为寄存器位数
s_1表示按下直线选项,s_2表示按下圆弧按钮
三、用户使用说明——软件运行说明及结果显示
4.2 主要算法的实现……………………………………………………8
4.2.1 参数声明……………………………………………………………………8
4.2.2复位操作………………………………………………………………9
4.2.3单步操作………………………………………………………11
4.2.4 连续插补………………………………………………………………11
3.3DDA法直线插补实例
单步直线插补:
连续直线插补:
左移一位:
半加载:
全加载:
不加载:
单步圆弧插补:
连续圆弧插补:
四、程序设计及主要算法实现
4.1 程序设计概述:
首先从编辑文本框中获取输入的数据,包括起点终点坐标,圆心位置,步长,寄存器位数等需要输入的值。然后通过面板选择插补对象,插补方式,执行操作。
ifs_1==0&&s_2==0
warndlg('请选择插补对象');
else
ifget(handles.zx,'value')
m=str2double(get(handles.m,'String'));
vx1=ex-sx;
vy1=ey-sy;
rx1=0;
ry1=0;
x1=[sx ex];
y1=[sy ey];
4.2.5 辅助操作………………………………………………………………13
五、本设计的特点……………………………………………………13
六、课程设计的感想…………………………………………………13
七、主要参考文献……………………………………………………14
一、课程设计介绍
1.1、任务说明:(1)直线插补:DL1,DDA法第一象限直线插补。
3.1 程序开始运行时显示介面…………………………………………5
3.2 执行计算……………………………………………………………5
3.3DDA法直线插补实例………………………………………………6
3.4逐点比较法插补第二三象限逆时针圆弧…………………………7
四、主要算法及源程序
4.1 程序设计概述………………………………………………………8
一、课程设计介绍wk.baidu.com
1.1任务说明……………………………………………………………3
1.2要求…………………………………………………………………3
二、程序操作及算法流程图
2.1 DDA法插补直线流程………………………………………………3
2.2逐点比较法插补逆时针圆弧流程…………………………………4
三、 用户使用说明
set(gca,'YTick',[-10:1:10]);
axis([-10 10 -10 10]);
axismanual;
holdoff;图像清除
plot(x1,y1,'k');
set(gca,'XTick',[0:1:10]);
set(gca,'YTick',[0:1:10]);
axis([0 10 0 10]);
axismanual;
axison;
gridon;
holdon;
else
if((sx-cx)^2+(sy-cy)^2)~=((ex-cx)^2+(ey-cy)^2)
s_1=get (handles.zx,'value');
s_2=get (handles.yh,'value');
cx=str2double(get(handles.cx,'String'));
cy=str2double(get(handles.cy,'String'));
sx=str2double(get(handles.sx,'String'));
warndlg('参数有误');参数有误
else
y2=sy:(ey-sy)/100:ey;
r=(ex-cx)^2+(ey-cy)^2;
x2=cx-(r-(y2-cy).*(y2-cy)).^0.5;
holdoff;
plot(x2,y2,'k');
set(gca,'XTick',[-10:1:10]);