数控原理课程设计.docx
- 文档编号:17935408
- 上传时间:2023-08-05
- 格式:DOCX
- 页数:12
- 大小:63.14KB
数控原理课程设计.docx
《数控原理课程设计.docx》由会员分享,可在线阅读,更多相关《数控原理课程设计.docx(12页珍藏版)》请在冰点文库上搜索。
数控原理课程设计
太原工业学院
课程设计任务书
系部:
机械工程系
专业:
机械设计制造及其自动化(机电一体化)
学生姓名:
张亮
学号:
0820131—01
设计题目:
数控插补程序设计——第一象项直线插补
起迄日期:
2011年6月21日至2011年6月27日
设计地点:
机械工程系
指导教师:
张焕梅
发任务书日期:
年月日
1概述及基本原理与算法
1.1插补意义
插补是整个数控系统软件中极其重要的功能模块之一,其算法的选择将直接影响到系统精度、速度及加工能力等。
1.2插补原理
1.2.1插补概念
所谓插补,就是根据零件轮廓尺寸,结合精度和工艺等方面的要求,在已知刀具中心轨线转接点之间插入若干个中间点的过程。
换句话说,就是“数据点的密化过程”,其对应的算法称为查补算法。
1.2.2插补算法概述
随着相关学科特别是计算机领域的迅速发展,插补算法也在不断的完善和更新。
由于插补的速度直接影响到数控系统的速度,而插补的精度又直接影响整个数控系统的精度,因此,人们一直在努力探求一种计算速度快并且精度又高的查补算法。
但不幸的是,插补速度与查补精度是互相制约、互相矛盾的,这时必须进行折衷的选择。
到目前为止,已涌现出了大量的查补算法。
其中主要包括:
脉冲增量查补算法和数据采样查补算法。
脉冲增量插补算法
脉冲增量查补(又称行程标量插补)算法是通过向各个运动轴分配脉冲,控制机床坐标轴相互协调运动,从而加工出一定轮廓形状的算法。
这类插补算法的特点是每次插补的结果仅产生一个单位的行程增量,以单位脉冲的形式输出给步进电机。
因此,这类插补被称为脉冲增量插补。
该插补运算比较简单,仅仅通过几次的加法和移位操作就可以完成插补运算。
处理速度比较快。
该插补一般常见的具体算法有:
数字脉冲乘法器法、逐点比较法、最小偏差法、数字积分法、比较积分法、目标点比较法、但不追踪法等。
本次的课程设计我主要分析这其中的一种算法——逐点比较法,用以概括和了解算法的基本运算和对其的了解。
而在进一步的重点分析中,本次的算法分析我则是分析其第一象限的直线插补运算。
数据采样插补算法
数据采样插补(又称时间标量插补)算法是根据数控加工程序编写的进给速度,先将零件轮廓曲线按插补周期分割为一系列首尾相连的微小直线段,然后输入这些微小直线段对应的位置增量数据,用以控制伺服系统实现坐标轴进给。
与上一插补算法相比,其结果不再是单个脉冲,而是位置增量的数字量。
这类插补算法适用于以直流或交流伺服电动机作为执行软件的闭环或半闭环数控系统。
1.2.3插补算法——逐点比较法
1.2.3.1原理
逐点比较法的基本原理是,在刀具按要求轨迹运动加工零件轮廓的过程中,不断比较刀具与被加工零件之间的相对位置,并根据比较结果决定下一步的进给方向,是刀具沿着坐标轴向减小偏差的方向进给,且仅有一个方向的进给。
逐点比较法既可实现直线插补,也可实现圆弧插补。
其特点是
运算简单直观,插补过程的最大误差不超过一个脉冲当量,输出脉
冲均匀,而且输出脉冲速度变化小,调节方便。
但是不易实现两坐
标以上的联动插补。
因此,在两坐标数控机床中应用较为普遍。
而逐点比较法插补过程中每进给一步都要经过以下四个节拍:
偏差判别;坐标进给;偏差计算;终点判别。
其过程如图1所示。
(1)偏差判别根据偏差值确定刀具位置是在直线的上方
(或线上),还是在直线的下方。
(2)坐标进给根据判别的结果,决定控制哪个坐标(X或Y)图1
移动一步。
(3)偏差运算计算出刀具移动后的新偏差,提供给下一步作判别依据。
根据上二式来计算新加工点的偏差,使运算大大简化。
但是每一新加工点的偏差是由前一点偏差Fi推算出来的,并且一直递推下去,这样就要知道开始加工时那一点的偏差是多少。
当开始加工时,我们是以人工方式将刀具移到加工起点,即所谓“对刀”,这一点当然没有偏差,所以开始加工点的F0=0。
(4)终点判别在计算偏差的同时,还要进行一次终点比较,以确定是否到达了终点。
若已经到达,就不再进行运算,并发出停机或转换新程序段的信号。
1.2.3.2第一象限逐点比较法直线插补
图2
设在第一象限上有一直线
,起
点在原点O(0,0)上,终点为E(Xe,
Ye),另有一动点N(Xi,Yi),如图2
所示,且各个的坐标点都是整数单位。
当动点N刚好在直线
上时,则:
即 XeYi-XiYe=0
当动点Nˊ在直线
下方ON时,则:
直线
的大于直线
的斜率,从而有:
即 XeYi-XiYe
0
当动点N在直线
的上方N"处时,直线
的大于直线
的斜率,从而有:
即 XeYi-XiYe
0
由上述关系可以看出,表达式(XeYi-XiYe)的符号就能反映出动点N相对直线
的偏离情况。
为此,取偏差函数F为:
F=XeYi-XiYe
根据上述过程,可以概括出如下关系:
当F=0时,动点N(Xi,Yi)正好处在直线
上;
当F
0时,动点N(Xi,Yi)落在直线
上方区域;
当F
0时,动点N(Xi,Yi)落在直线
下方区域。
如下图3所示。
对于起点在原点,终点
为E(Xe,Ye)的第一象限直线OE来说,
图3
当
点N在直线上方(即F>0)时,应该向+X
方向发一个脉冲,使机床刀具向+X方向前进
一步,以接近该直线;当点N在直线下方
(即F<0)时,应该向+Y方向发一个脉冲,
使机床刀具向+Y方向前进一步,趋向该直线;
当点N正好在直线上(即F=0)时,既可向
+X方向发一脉冲,也可向+Y方向发一脉冲。
因此通常将F>0和F=0归于一类,即F≥0。
这样从坐标原点开始,走一步,算一次,判别F,再趋向直线,逐点接近直线
,步步前进。
当两个方向所走的步数和终点坐标E(Xe,Ye)值相等时,发出终点到达信号,停止插补。
对于图3的加工直线OE,我们运用上述法则,根据偏差判别函数值,就可以获得如图中折线段那样的近似直线。
但是按照上述法则进行F的运算时,要作乘法和减法运算,这对于计算过程以及具体电路实现起来都不很方便。
对于计算机而言,这样会影响速度;对于专用控制机而言,会增加硬件设备。
因此应简化运算,通常采用的是迭代法,或称递推法,即每走一步后新加工点的加工偏差值用前一点的加工偏差递推出来。
下面推导该递推式:
已经知道,加工点的坐标为(Xi,Yi)时的偏差为:
若F≥0时,则向X轴发出一进给脉冲,刀具从这点即(Xi,Yi)点向X方向前进一步,到达新加工点N(Xi+1,Yi+1),Xi+1=Xi+1,Yi+1=Yi。
因此新加工点N(Xi+1,Yi+1)的偏差值为
即:
如果某一时刻,加工点N(Xi,Yi)的F<0,则向Y轴发出一个进给脉冲,刀具从这一点向Y方向前进一步,新加工点N(Xi+1,Yi+1)的偏差值为
即:
根据上二式可以看出,新加工点的偏差完全可以用前一加工点的偏差递推出来。
在插补计算过程中,还有一项工作需要同步进行,即终点判别,以确定直线是否到达直线终点。
如果到了,就停止插补运算,否则就继续做循环插补处理。
常用的终点判别方法有以下三种:
(1)总步长法在插补计算之前,先设置一个总步长计数器,求出被插补直线轮廓在各个坐标轴方向上应该走的总步数,加在一起存入计数器中,即:
然后每插补计算一次,无论向那个坐标轴进给一步,计算器都做减一修正。
这样当总步数减到零时,则表明刀具已经达到直线轮廓终点。
(2)投影法与总步长法相似,求出被插补直线轮廓终点坐标值中较大的那一个轴的总步数,并存入计数器中,即:
然后在插补过程中,每当坐标值较大的那个轴进给一步,相应计数器就做减一修正,直至为零,则表示刀具到达直线轮廓的终点。
(3)终点坐标法在插补运算之前,先设置两个步长计数器,分别记录被插补直线轮廓的两个坐标轴方向上应走的总步数,并存入各自的计数器中,即:
然后在插补过程中,每当+X方向进给一步,计数器∑1就做一次减一修正;每当+Y方向进给一步,计数器∑2就做一次减一修正,。
只有当两个步长计数器均为零时,则表示刀具到达直线轮廓的终点。
2程序
2.1程序流程
YN
·
N
Y
图4
2.2程序代码(基于c语言的编程)
#include"conio.h"
#include"graphics.h"
#include"process.h"
#defineNi_circle0
#defineShun_circle1
voidinit_graph();
voiddraw_Base_circle();
voiddraw_cabu_circle();
voidclose_graph();
voidacrroods();
staticfloatx0,y0;
voidline_cabu(),draw_line(),draw_line_cabu();
voidline_cabu()
{
inti;
init_graph();
sleep
(1);
for(i=0;i<2;i++)
{
line(0,120,300,120);outtextxy(310,120,"Z");
line(100,10,100,300);outtextxy(110,300,"X");
outtextxy(90,130,"O");
draw_line();
if(i==0)
draw_line_cabu(6);
elsedraw_line_cabu
(2);
gotoxy(50,5);
getch();
cleardevice();
setcolor(WHITE);
}
}
voiddraw_line()
{
line(100,120,600,450);
textcolor(YELLOW);
directvideo=0;
gotoxy(45,5);cprintf("Linefrom:
X0Y0Z0");
gotoxy(45,6);cprintf("Lineto:
X500Y0Z330");
gotoxy(45,7);cprintf("Units:
Pixel");
gotoxy(45,8);cprintf("Linenow:
");
}
voiddraw_line_cabu(intstep
{
intXe=600,Ye=450;
floatFm,Xm=100,Ym=120;
setcolor(RED);
moveto(Xm,Ym);
while(Xm<=Xe&&Ym<=Ye)
{
Fm=(Ym-120)*(Xe-100)-(Xm-100)*(Ye-120);
if(Fm>=0)
Xm=Xm+step;
else
Ym=Ym+step;
lineto(Xm,Ym);
gotoxy(55,8);printf("X%3.0fY0Z%3.0f",Xm-100,Ym-120);
delay(1100);
}
3分析总结
通过此次课程设计,使我更加扎实的掌握了有关数控插补和c语言编程方面的知识,在c语言编程过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。
实践出真知,通过亲自动手制作,使我们掌握的知识不再是纸上谈兵。
回顾起此课程设计,至今我仍感慨颇多,从理论到实践,从中学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,但可喜的是最终都得到了解决。
参考文献
[1]汪木兰数控原理与系统机械工业出版社2010.1
[2]伍胡平周亚军《组合机床与自动化加工技术》2008第9期
[3]周虹《组合机床与自动化加工技术》2004第3期
[4]谭浩强C语言程序设计第三版清华大学出版社2005.7
[5]“XX文库”
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数控 原理 课程设计