逐点比较法插补实验报告

本文由用户“___零点零零分”分享发布 更新时间:2023-01-28 22:29:42 举报文档

以下为《逐点比较法插补实验报告》的无排版文字预览,完整格式请下载

下载前请仔细阅读文字预览以及下方图片预览。图片预览是什么样的,下载的文档就是什么样的。

实 验 报 告

实验内容:逐点比较法直线和圆弧插补 2011年9月25日

院系:物科院 班级:085 学号:*** 姓名:陈某某



实验目的:

利用逐点比较法的插补原理,编写直角坐标系下的直线、圆弧插补程序,观察屏幕上仿真的运动轨迹,掌握逐点比较法的插补原理。

实验原理:

逐点比较发是基于动点与理想曲线院函数的比较来实现插补的。逐点比较法的插补过程,每走一步要进行一下四个步骤:

偏差判别:根据偏差值确定刀具相对加工曲线的位置

坐标进给:根据偏差判别的结果,决定控制线沿哪个坐标进给一步以接近曲线

偏差计算:计算新加工店相对曲线的偏差,作为下一步偏差判别的依据

终点判别:判别是否到达终点,未到达终点则返回第一步继续插补,到终点则停止

1、逐点比较法直线插补原理:

逐点比较法在第一象限的直线插补原理如下图所示,其他象限情况可依次类推。

现加工OE直线,如果刀具动点在OE直线上方或在线上,则令刀具沿X正方向进给一步;若刀具动点在OE直线下方,则令刀具沿Y轴正方向进给一步,如此循环直到加工到E点。判别刀具动点的位置根据偏差函数判别公式:

根据这个公式可以推到出两种不同情况下的地推公式:

对于插补终点的判别,可以采用单向的计数长度法,即:取计数长度M等于Xe、Ye中的大者,并设该坐标方向为计数方向。插补时,仅在该方向上产生进给时,计数长度减一。图1的逐点比较法中,工作循环的结束条件就是M减为0.

2、逐点比较法圆弧插补原理:

逐点比较法在第一象限的圆弧插补原理如图所示,其他象限可一次类推:

对于第一象限的逆圆弧,如果动点在圆弧的外侧则令刀具动点沿X轴负方向进给一步。如果动点在圆弧的内侧则令刀具沿Y轴正方向进给一步。

圆弧的偏差计算公式为:

根据这个公式同样可推导出圆弧插补的两种不同情况下的递推公式:

对于插补终点的判别,同样可以采用单向的计数长度法,不过对于圆弧,计数的方向并不取决于终点坐标中的大者,而是取决于圆弧终点处。

逐点比较法插补中需要编写插入部分流程图:

插入程序:

int M,Fi=0,Fi0,Fi1,xi,yi,i=0,num=-1;

bool Gx;

M=Xe+Ye;

moveto(x0,y0);

setcolor(10);

line(x0,y0,x0+Xe*delta,y0-Ye*delta);xi=x0;yi=y0;

setcolor(12);

while(M>0)

{

getch();

if(Fi>=0)

{

linerel(delta,0);

xi=xi+delta;

Fi0=Fi-Ye;

Fi=Fi0;

num++;

dis_msg(num,Fi,1,0,Fi0,M);

}

else

{

linerel(0,-delta);

Fi1=Fi+Xe;

yi=yi-delta;

Fi=Fi1;

num++;

dis_msg(num,Fi,0,1,Fi1,M);

}

M--;

}

圆弧插补实验程序:

int M,Fi=0,Fi0,Fi1,xi=R,yi=0,i=0,num=0;

M=R;

setcolor(10);

moveto(x0,y0);

arc(x0,y0,0,90,R*delta);

setcolor(12);

moveto(x0+xi*delta,y0);

while(M>0)

内容过长,仅展示头部和尾部部分文字预览,全文请查看图片预览。 =yi+delta;

但是,实行以后出现的结果不正确,如图, 分析:

2、关于计数长度M:

在直线插补中使用的是双向计数长度 M=xe+ye,插补路线会比较准确。

在圆弧插补中使用的是单向计数长度 M=R,在x方向计算,则出现如实验结果所示路径,但在y方向计算步骤,发现结果离终点在x方向有1个单位长度的距离。

3、显示步骤num:

在显示步骤的函数dis_msg中,num,因为dis_msg函数定义中,显示num+1,所以,num的改变应放在程序最后(如圆弧插补中),或者从-1开始,才能放在dis_msg函数之前(如直线插补中)。否则会出现从第二行开始显示步骤的现象。

[文章尾部最后300字内容到此结束,中间部分内容请查看底下的图片预览]

以上为《逐点比较法插补实验报告》的无排版文字预览,完整格式请下载

下载前请仔细阅读上面文字预览以及下方图片预览。图片预览是什么样的,下载的文档就是什么样的。

图片预览