基于DXF的线切割CAM_CNC一体化系统
2012-02-05叶春生莫健华樊自田
李 凯,叶春生,莫健华,樊自田
(华中科技大学材料成形及模具技术国家重点实验室,武汉 430074)
基于DXF的线切割CAM_CNC一体化系统
李 凯,叶春生,莫健华,樊自田
(华中科技大学材料成形及模具技术国家重点实验室,武汉 430074)
提出了一种基于DXF文件的线切割CAD_CNC一体化系统,从DXF文件的分析与读取、图元的提取与处理、加工轨迹的补偿处理、加工代码的生成与输出等方面详尽论述了本系统的开发过程,提出一种新的、利用公切圆进行转接交点计算的方法,并以一个典型实例对系统功能进行分析。该系统是在Visual C++6.0平台上开发的。
线切割;DXF;读取多义线;偏移轨迹计算
0 引言
电火花线切割加工(Wire-Cut Electrical Discharge Machining,WEDM)经过多年发展,在控制系统方面的发展已经相当成熟,但是在上位机控制软件方面,尚处于初步研究阶段。现有的线切割系统都是在DOS平台下操作,只适用于轮廓简单且加工精度要求不高的零件;对于内、外轮廓复杂的零件,则需要经过繁杂的轮廓计算,且在DOS下绘图极不方便。因此,开发Windows平台下的、可以直接读取图形文件的、能够生成加工代码的线切割自动编程系统是很有必要的[1]。
作为CAD领域的工业标准,DXF(Drawing Exchange File)包含了AutoCAD软件绘制的二维图形的所有几何信息。一般地,由DXF文件转换为数控加工代码的流程如下所述:首先,根据DXF文件的组织形式将所需的全部图元信息读取并存储起来,个别图元还需进行相应的计算;然后对实体链拓扑重建、判别实体链方向;在此基础上设置加工参数;进行相应的前置处理,主要包括加工轨迹偏移、转接类型计算等;最后生成所需的数控加工代码及后置处理。已有不少文献对此做出了研究。如文献[2]论述了DXF文件的组织格式、含义及外部接口,但并未建立有效的数据结构来存储相关图元信息;文献[3]从整体出发,论述了从DXF到3B代码的转换过程,提出了实体链方向判别、轨迹偏移等方法;杨有君[4]论述了经典插补算法,提出如何判别转接类型及基于角度的转接矢量计算方法,但计算过于繁杂。在此基础上,文献[5]提出一种径向误差为零的圆弧插补算法,文献[6]提出并行栅格扫描路径填充算法。
本文总结前人大量研究,改进提取DXF文件信息及计算多义线信息的方法,建立有效的数据结构及链表存储相关图元信息;在此基础上,提出一种基于角度的、范围扩大了的转接类型判断方法与一种利用公切圆进行转接交点计算的方法,避开了传统计算方法中繁杂的角度讨论与计算,具有计算简便、适用范围广、无需讨论等优点。
1 DXF文件的读取
1.1 DXF文件结构分析
常见的DXF文件是ASCⅡ格式,这种文件的基本组成单位是“组”,每个组是由成对的代码(组码)及其关联值(组值)组成。每个组占两行,第一行为组码,是个正整数,其含义由AutoCAD系统约定;第二行为组值,其格式取决于组码规定的类型;每个组表示了1个数据的含义及其值。DXF的实体段包含了图形中的所有图元信息,只需分析并读取实体段,即可将所需的图元信息提取出来。
AutoCAD二维图形含有多种图元,如直线、圆(弧)、椭圆(弧)、多义线、NURBS曲线等。各个图元以组码0及表示其类型的组值(如“LINE”)开始。对于二维线切割加工来说,需要提取直线、圆弧与多义线。其中,圆弧的起、终角度总是按逆时针方向得出;多义线中,组码42后的组值表示圆弧段的凸度为圆弧的圆心角)。若为直线段,则无组码42及其组值;凸度T>0时,为逆时针圆弧,反之为顺时针圆弧[7]。
1.2 基本图元的读取与存储
为了存储图元信息,需自定义数据结构。定义CPoint类,存储图元中的点;定义CEntity类包含不同类型的成员变量以储存图元的几何信息,如StartP、EndP、CenterP分别存储起始点、终止点、圆心;StartAngle、EndAngle、R、T 分别存储起始角、终止角、半径值、圆弧凸度。利用MFC的基类CList,建立以CEntity为结点的链表EntityList,每读取一个实体,就将其存储到链表中,供后续工步提取。采用逐行的方式读取DXF文件,每读到一个组码,就将其后的组值存储到CEntity相应的成员变量中。对于直线,只需读取起终点坐标即可;对于圆弧,还需计算起终点坐标。
1.3 多义线的读取
多义线的读取是难点。逐行读取多义线各端点坐标值并储存,然后再由两端点与凸度构造单一直线或圆弧段。多义线的闭合性是很重要的信息,若在AutoCAD中绘图时选择自动闭合命令CL,则DXF文件中组码70之后的组值为1,这时,在多义线信息读取完毕之后,需要按照最后实体的凸度值在程序中人工添加一段圆弧或直线段以实现多义线闭合。
2 图元信息处理
2.1 实体链拓扑重建
DXF文件中,各图元出现的先后顺序是由Auto-CAD中绘图顺序决定的,有很大的随意性,而线切割不能跳跃加工;所以必须对链表中的实体信息重新排序,使得各实体首尾相接。已有文献[8]对实体链重排的算法做出了阐述,在此不再赘述。
2.2 加工方向判别
实体拓扑重建之后,需判断实体链的方向,才能进一步转化为加工代码。本文采用矢量三角形法。遍历链表,找出纵坐标最小的点作为基点B,其在链表中前后两点分别为A和C,则矢量三角形ABC的方向即整个实体链的加工方向。这是由矢量AB、BC所在象限决定的。因为A、C都在B点上方,所以AB只能在Ⅲ/Ⅳ象限,BC只能在Ⅰ/Ⅱ象限。另外,需单独考虑两矢量与坐标轴平行的情况。表1列举了所有的情况。其中,K**表示某一矢量斜率的绝对值。
表1 矢量三角形方向的判定
此外,为了后续工作中轨迹偏移,还需判别各圆弧实体的顺逆性。当圆弧方向与实体链方向相同时,称为凸圆;反之称为凹圆。
3 前置处理
线切割是高精度加工,由于钼丝直径和放电间隙的影响,在工件轮廓信息转化为加工代码之前,需对其进行前置处理。主要包括加工轨迹偏移和转接向量计算。
3.1 加工轨迹偏移
以钼丝移动方向为正方向,分析知:当顺时针加工外轮廓或逆时针加工内轮廓时,直线段需左移,fx、fy取负;当逆时针加工外轮廓或顺时针加工内轮廓时,直线段需右移,fx、fy取正;遍历链表,根据以上原则将修改实体起终点坐标、起终角度等几何参数,以进行后续处理。与坐标轴平行的直线需要单独考虑。
3.2 转接向量计算
3.2.1 判断转接类型
实体轮廓偏移之后,相邻实体可能出现交叉或分离。图形的拐点可以是直线与直线、直线与圆弧、圆弧与圆弧的交点,其夹角分别等于两直线向量的夹角、直线向量与交点处圆弧切线向量的夹角、两圆弧在交点处切线向量的夹角。很多文献[4-5]论述了这个问题,但是只考虑了相邻实体间夹角为正的情况。而由于直线和圆弧起终矢量角都是以X正半轴为始,按逆时针方向取的,所以相邻实体夹角可能出现负值。根据扩大了的夹角α范围,将转接方式分为三种:缩短型、伸长型、插入型。具体如表2所列。
表2 相邻实体转接类型判断
此外,还有两种特殊情况。α=0°是最简单的情况,按转接实体不同,可以是直线-圆弧、圆弧-直线、圆弧-圆弧,此时实体在偏移之后仍然恰好相接,所以无需再对转接向量进行计算;α=±180°,同样分为直线-圆弧、圆弧-直线、圆弧-圆弧三种情况,图1表示了切线角等于180°时的各种情况,实线表示原轮廓,虚线表示偏移后轮廓。以前一实体在交点处的矢量方向为正,则后一实体为负向。主要工作是判别前后两实体相对于加工方向的方位关系。定义BOOL型变量b,前实体在后实体右侧时,b=0,反之b=1。遵循的原则如下:
(1)若b=0且偏移方向为左(G41),或b=1且偏移方向为右(G42),则为缩短型;
(2)若b=0且偏移方向为右(G42),或b=1且偏移方向为左(G41),则为插入型。
首先用象限法计算前后两实体是否在切线异侧(直线-圆弧/圆弧-直线相接时,视为异侧);若在切线异侧,则由前后实体矢量角的关系决定相对方位;若在切线同侧,则需比较两弧的半径大小。在判别之前,先调用函数CalculateSlope()分别计算前后两实体以切点为始点的矢量角度K1、K2。
图1 α=±180°时各种转接类型
以切线角Ke≤180°为例的算法流程如图2所示。当Ke>180°时,只需改一下判定条件即可。流程图中讨论的各种情况与图1中各个图形相对应。
3.2.2 修改实体几何信息
首先遍历链表,一次获取相邻两实体,调用CalculateIncludedAngle计算转接类型,该函数可以返回0、1、2、3,分别表示最简型、缩短型、伸长型、插入型。
最简型无需考虑,只考虑后三种情况。
(1)对于伸长型,需要插入两段直线,首先计算两实体在切线处的矢量角α1、α2,设原交点为A,偏移之后的递延交点为C,利用式(3),可以计算出G41方式下C点坐标。G42时,r取负。
图2 α=±180°转接类型判断流程图
然后以C为公共点,构造两个直线实体,计算其几何参数,最后调用CList::InsertBefore()将直线插入到链表中。
(2)插入型,需要在两实体间插入半径为f,起终点分别为前实体终点、后实体起点的过渡圆弧。相应的计算过程与多义线圆弧类似。设圆弧起终点连线矢量角为α,凸度为T,则根据式(4)计算L及h,由式(5)计算圆心坐标:
圆弧的顺逆性也需要判别。最后同样调用InsertBefore将其插入链表。
(3)缩短型,直线-直线相交时,计算方法与伸长型完全相同,符号也一致,不再赘述。直线-圆弧、圆弧-直线、圆弧-圆弧相交时,采用公切圆法计算交点。图3 中,a 、b表示直线-圆弧相交的情况;c、d、e、f表示圆弧-圆弧相接的各种情形。
用式(6)联立,解得交点(即公切圆心)坐标(X0,Y0)。式中,(Xc,Yc)为原实体圆弧圆心坐标,(X,Y)为直线另一端点坐标,R为原实体圆弧半径。
图3 圆弧-圆弧相接交点计算
将前实体的终点与后实体的起点改为(X0,Y0),对于圆弧需要再修改其起终点角度等参数。最后调用CList::SetAt修改链表。
4 后置处理
由加工轨迹转化为加工代码的过程称为后置处理,是整个系统的目的。线切割加工中用到的加工代码主要有ISO代码(G代码)与3B代码两种。G代码格式为:G0ZX Y IJ,对于直线,Z=1,(X,Y)为直线终点相对于起点的坐标,I=J=0;对于圆弧,顺圆时Z=2,逆圆Z=3;(X,Y)为圆弧终点相对于起点的坐标;(I,J)为圆心相对于起点的坐标。G代码的转化相对简单,只需遍历链表,逐一计算每一实体的相对坐标,将结果写入创建的文件中即可。
3B代码是广泛应用在国内线切割机床上的加工指令。其格式为:BX BY BJG*Z。其中B为分隔符;X、Y为相对坐标的绝对值;J为计数长度,取绝对值,其值由计数方向决定;G为计数方向,对于直线,G是终点坐标中较大值的方向,对于圆弧,由圆弧终点坐标值中较小值决定,有Gx、Gy两种,如Gx表示J的值是直线或圆弧在X轴上的投影;Z为加工指令,共有12种,其中直线4种,圆弧8种,如NR1表示起点在第一象限的顺时针圆弧。3B代码转化的难点在于求取计数方向和加工指令。图4表示了3B代码的转化流程。
5 实例分析
图6a为原始图形,将其中图元信息读取之后,作如下的加工参数设置:电极丝直径0.18mm,放电间隙0.01mm,加工顺序为顺时针,模具类型为凸模。经前置处理,相邻图元间的转接共产生3次缩短型、1次插入型、5次伸长型,故需添加新图元数为
图4 3B代码转换流程
转换的难点在于计算圆弧的J值。采用如图5所用算法。其中,k为标志位,当圆弧是顺时针时,k=1,反之k=-1;Sgn()是符号判断函数,参数为正数、零、负数时,分别返回1、0、-1。11(0×3+1×1+2×5)个;经过本系统转换后的3B代码如图6b所示,其中恰有20个图元,且每行代码符合原图形及加工要求。
图5 圆弧计数长度的计算
图6 典型实例分析
6 结束语
本文详尽论述了基于DXF文件的,可在Windows系统下运行的,实现完全图形化、界面化的小型线切割控制系统上位机软件的开发过程。本系统具有图形显示、图元几何信息处理、自动生成偏移轨迹及加工代码等功能,配合本实验室数字化电源等硬件方面的开发,拟应用于实际线切割加工中。
[1]豆尚成,赵万生,顾琳.电火花线切割加工技术最新研究进展[J].电加工与模具,2011(2):1-3.
[2]李芳珍,许伦辉.DXF文件格式及其外部接口的研究[J].软件开发与应用,2008,27(7):83-85.
[3]张为民.电火花线切割CAD/CAM集成系统关键技术研究[D].杭州:浙江大学,2004.
[4]杨有君.数控技术[M].北京:机械工业出版社,2005.
[5]李莉,冯志永.数控系统中圆弧插补算法的改进和实现[J].组合机床与自动化加工技术,2009(7):61-65.
[6]黄小毛,叶春生,吴思宇,等.并行栅格扫描填充路径及其规划算法[J].计算机辅助设计与图形学学报,2008,20(3):326-331.
[7]张云杰.AutoCAD 2010中文版从入门到精通[M].北京:电子工业出版社,2010.
[8]杨传华,吴锦文,李殿国,等.基于二维不规则图形的实用排样算法研究[J].组合机床与自动化加工技术,2010(3):88-90.
(编辑 李秀敏)
Integrated CAM_CNC Software System for WEDM Based on DXF
LIKai,YE Chun-sheng,MO Jian-hua,FAN Zi-tian
(State Key Laboratory of Material Process and Die and Mould Technology,Huazhong University of Science and Technology,Wuhan 430074,China)
This paper proposed an integrated CAM/CNC software System for WEDM based on DXF.The development of the system wasmainly discussed from these aspects in detail:system structure,analysis and read of the DXF,extraction and processing of the graphic elements,compensation of the process track,generation and output of the processing code.A new method of calculating inflection points was proposed.Besides,this system’s function was analysed by a typical example.This control system was developed by Visual C++6.0.
WEDM;DXF;reading polyline;offset trajectory calculation
TG661
A
1001-2265(2012)06-0096-05
2011-11-21;
2011-11-30
李凯(1987—),男,山东东营人,华中科技大学材料科学与工程学院硕士,从事材料成型及控制、计算机算法等方面的研究,(E-mail)skylee-2005@163.com。