数控铣床的应用越来越广泛,数控加工的整个过程是通过NC
加工程序来控制的。无论是手工编程还是自动编程所得到的程序都会存在一定的错误,传统方法采用试切法来验证程序是否正确,即用木模、蜡模或塑料模试切以进行检验。而在计算机环境下,利用数控模拟方法进行数控程序的正确性检验是一种新的方法。通过对零件加工过程的模拟,可以检查数控代码的正确性,还可以检查加工过程中刀具与工件、机床及夹具之间是否有干涉现象。加工过程模拟可以比较真实地反映出实际的切削加工过程。在计算机屏幕上以可视化图形方式模拟NC
加工过程,查出程序中的错误并加以修改,可以节省大量费用和时间。所以,采用NC 图形的刀具轨迹模拟,可以提高编程效率.
本模拟系统为本人开发的NCCODE 数控自动编程系统的一部分,在XK714
数控铣床的实际应用中,证明了它的有效性和正确性。
1 开发平台及工具
本系统在PC 机上运行,选用当今流行的Windows 98 或Windows XP
作为软件的开发和运行的操作系统。以Auto-CAD 2000 为平台,采用面向Microsoft 公司的通用软件开发平台Visual C + + 的开发工具ObjectARX,该工具支持可视化编程和面向对象技术,是基于MFC
开发的Windows 应用程序。
2 数控铣削模拟系统的结构及流程
数控程序加工模拟系统是CAD/ CAM 集成系统中一个重要组成部分,开发的CAD/ CAM 集成系统CCODE
中,首先根据零件轮廓的图形实体直接生成数控加工代码,然后通过该模拟系统进行模拟检验。模拟有二维动画显示模拟和三维实体几何模拟。本系统采用二维动画显示模拟,其结构如图1
所示,开发流程如图2
所示。这种模拟的特点是二维的,与二维视图的工件图纸一样,比较简单方便,由于二维动画显示比较易行,因此应用广泛。在求算平面刀位轨迹、优化刀具运动轨迹时比较有效;对于一些三维模拟分解为二维模拟来解决也是有意义的。
3 刀具轨迹模拟数据的获取及实现
为了实现由AutoCAD二维图形中描述零件轮廓图形,实体的刀具轨迹模拟必须获取刀具轨迹的信息,刀具轨迹信息由AutoCAD图形数据库中描述零件轮廓的图形实体获取。在NCCODE数控自动编程系统中,把零件轮廓的图形实体连接成一条多段线(可封闭也可不封闭)。多段线是AutoCAD中特殊的图形实体,它是由一系列首尾相连的直线和圆弧组成,在图形数据库中以顶点(即相连点)子实体的形式保存信息。与位置、形状有关的重要信息有两个:一是顶点(Vertex)坐标数值,保存在10
组码中;二是顶点凸度(Bulge),保存在42
组码中。多段线的起点即就是刀具的起点,加工过程中所需的终点坐标均可由多段线各顶点的数据确定,根据这些数据即可生成数控加工代码。同样,根据这些数据可以模拟刀具轨迹.
3.1 直线部分的数据
鉴于直线线段是多段线组成部分,但在实体多段线内,子实体不是线段,而是顶点,而且多段线的直线顶点只保存了直线起点标志,终点坐标则都保存在下一个顶点中。利用ObjectARX
函数可以很方便地知道多段线各顶点的坐标值和凸度值,这样就得到了零件轮廓线上直线的起点、终点坐标等几何信息.
AutoCAD中约定:凸度为0 是直线的顶点。具体方法如下:
if(bulge == 0) //判断是否直线
{
ads name e0,e1;
acdbGetAdsName(e0,vertexObjId);
struct resbuf *ed,*cb;//定义结果缓冲区链表指针
acdbEntNex(te0,e1);
if((ed=acdbEntGe(e1))!=NULL)
{
for(cb=ed;cb!=NULL;cb=cb->rbnext)
if(cb->restype==10)
{
P2[Y]=2*(cb - > resval.rpoint[Y]-pt[Y])
P2[Y]=cb - > resval.rpoint[X]-pt[X] //直线的第二顶点的数据信息
numb ++ ;
}
acutRelRb(ed);
}
}
3.2 圆弧部分的数据
多段线的圆弧顶点都只保存了圆弧的起点标志,终点坐标则都保存在下一个顶点中。利用ObjectARX函数可以很方便地知道多段线各顶点的坐标值和凸度值,这样就得到了零件轮廓线上圆弧的起点、终点、半径、圆心等几何信息.AutoCAD中约定:凸度不为0
是圆弧的顶点,凸度为正表示逆时针圆弧,凸度为负表示顺时针圆弧。具体方法如下:
acedOsnap(ptm,"center",ptcen);/ / 获得圆心的坐标
ads name e011, e111;
acdbGetAdsName(e011, vertexObjId);
struct resbuf *ed,*cb;/ / 定义结果缓冲区链表指针
ads point pst1,pst10,opst1,ptcen1,ptm1;
ads real rads1,length1;
ads point-set(cb - > resval.rpoint, pst1);/ / 获得PST 点为圆弧的端点
acdbEntNext(e011, e111);
if((ed = acdbEntGet(e111))! = NULL)
{
for(cb = ed;cb! = NULL;cb = cb - > rbnext)
if(cb - > restype = = 10)
{
ads point-set(cb - > resval.rpoint,pst10);
opst1[X]=(pst1[X]+ pst10[X])/ 2;
opst1[Y]=(pst1[Y]+ pst10[Y])/ 2;
opst1[Z]=(pst1[Z]+ pst10[Z])/ 2;
rads1 = acutAngle(pst1,pst10);
length1 = acutDistance(pst1,pst10);
acutPolar(opst1,rads1 - 3.1415926 / 2,bulge*length1(/ 2),ptm1);
acedOsnap(ptm1,"center",ptcen1);/ / 获得圆心的坐标
}
3.3 刀具轨迹模拟的实现
根据上面介绍的方法,获得刀具轨迹数据,然后根据ARX函数acedCommand(RTSTR,"INSERT"RTSTR,刀具图块名,RTPOINT,P1,RTREAL,scale,RTSTR,"
",RTREAL,..),如果为直线,则在两点间插入若干个以刀具半径为圆的图块,数目的多少与进给速度有关,数目越多,则切削速度越快,反之,则切削速度慢;如为圆弧,则在该圆弧段上插入刀具图块,但要区别顺圆和逆圆,以区别切削方向。
4 实例
以铣削模拟的一个实例来说明,在NCCODE
界面下当生成数控加工代码后,按下"模拟"按钮,输入正确的模拟参数,单击"确定"按钮,弹出如图3 所示对话框,然后单击模拟后,模拟效果如图4 所示。
5 结论
利用计算机图形交互界面,采用二维模拟技术及面向对象的程序设计方法,以VC++和AutoCAD功能强大的开发工具ARX,对描述刀具轨迹的图形实体进行处理,获取所需数据,对铣削系统的刀具轨迹进行模拟,直观、快速、正确地验证数控代码,且操作简单、方便,提高了数控机床的工作效率。在XK714数控铣床上应用,取得了良好的效果,同时,该系统还可以用于学生的教学中。
|