数控技术作为现代制造技术的一项关键技术,它是有效提高机床生产效率、保证加工精度稳定和一致性的重要手段。目前,以美、日、欧为先驱,许多国家都在全力研制新一代开放式CNC高档数控系统,国内已有西北工业大学、北京航天航空大学、浙江大学等一些单位也在进行新一代基于工业个人计算机(Industrial  Personal  Computer,简称IPC)数控系统的开发与尝试。随着IPC数控系统的研制成功,其中数控系统软件的设计将更具开放性和易扩展升级的特点。为此作者选用“奔腾”PC机硬件平台、Windows95操作平台、AutoCAD  for Windows开发平台、Visual  Basic(以下简称VB)开发工具,研制适于工业PC机数控系统上使用的数控图形自动编程系统。该系统具有可移植性好,功能易扩展升级,操作、使用、维护简便等特点,本文对系统研制的主要内容予以介绍。
2 系统的框架结构和功能
  系统框架结构如图1所示,它主要包括AutoCAD图形生成、图形数据信息输入、工艺干预、NC代码生成、动态校验和数控加工程序输出六个功能模块。其中图形生成模块由AutoCAD完成;其余模块均为基于AutoCAD平台采用VB开发工具研制而成,功能如下:

    
        
            | 图1 系统总体框架结构   (1)图形数据信息输入:它是AutoCAD实体建模后首先进入的功能模块。具有AutoCAD图形交换文件DXF接口,读取DXF接口文件为自动编程系统准备必要的图形数据;(2)工艺干预:它是继(1)步操作后对图形数据进行再加工的核心模块。工艺干预内容包括轮廓和点位两种方式,干预过程通过鼠标事件求鼠标干预位置与实体的最短距离实现。考虑到零件尺寸大小变化,本模块还具备视口放大和满屏显示的辅助功能,便于进行有效干预;
 (3)NC代码生成:经过工艺干预即确定刀具走刀路线后,根据ISO数控代码格式便可将图形几何信息和工艺干预信息转换成ISO标准数控加工程序代码。同时以“?.NC”形式文件名永久保存;
 (4)动态校验:上述生成的NC代码是否正确还要进行校核和检验方能制作控制介质输出,本模块采用逐点插补算法进行动态模拟检验ISO数控加工程序代码是否正确,以及刀具与工件是否会发生干涉等。如果检验不正确则需对上述各个环节进行反复调试直到正确为止;
 (5)数控加工程序输出:经调试和校验后正确的数控加工程序可以通过拷贝、打印的方式输出。
 3 软件设计过程   构成图形自动编程系统的主要功能模块有图形信息输入模块、工艺干预模块、NC代码生成模块以及校核检验模块。以图形信息输入模块为例说明VB程序设计的过程。(1)实体数据类型变量定义
 系统对点、直线、圆弧和整圆四种实体采用通用数据类型结构定义几何信息,该类型的全部元素均为字符串型变量,在图形信息输入模块中主要保存读取实体的几何信息。具体以数组MM(200)变量来保存,这里要求实体数目最多不能超过200个。即
 | 
    
    
        
            | Type ENTITIES-TYPE | ′实体形式数据类型名: | 
        
            |  | ENTITIES-TYPE; | 
        
            | STYLE As String | ′实体类型变量(其值为LINE,ARC,CIRCLE); | 
        
            | X1 As String | ′实体的起点坐标分量x; | 
        
            | Y1 As String | ′实体的起点坐标分量y; | 
        
            | X2 As String | ′实体的终点坐标分量x; | 
        
            | Y2 As String | ′实体的终点坐标分量y; | 
        
            | X3 As String | ′实体(圆弧或圆)的圆心坐标分量x; | 
        
            | Y3 As String | ′实体(圆弧或圆)的圆心坐标分量y; | 
        
            | R1 As String | ′实体(圆弧或圆)的半径R; | 
        
            | WISE As String | ′实体(圆弧或圆)的顺(=0)、逆(=1)方向; | 
        
            | ANGLE1 As String | ′实体(圆弧或圆)的起始角; | 
        
            | ANGLE2 As String | ′实体(圆弧或圆)的终止角; | 
        
            | End Type |  | 
        
            | Global MM(200) As ENTI- TIES-TYPE
 | ′定义一维数组MM全局变量,其元素为ENTITIES-TYPE | 
        
            |  | ′型变量,实体数目最多不能超过200个。 | 
    
    
        
            | (2)DXF文件的读取程序
 结合当今微机平台上广泛使用的AutoCAD图形软件包,本文采用这一平台开发的图形自动编程系统,可以充分发挥AutoCAD的强大实体建模功能,同时缩短软件开发的周期。本系统使用需首先进入AutoCAD图形系统绘制零件实体,当零件绘制完毕,便以图形交换文件DXF输出,然后进入图形自动编程系统启动图形信息输入模块,读取图形信息。下面介绍零件实体几何信息提取的程序设计。
 DXF文件是具有专门格式的文本文件。一个完整的DXF文件由四个大段和一个文件结束标记构成。每一段的开始部分由四行组成:即DXF的组代码0和段标记SECTION,组代码2和段名各占一行,中间部分是段的实际内容,而段结合部分由组代码0和文件结束符EOF两行组成。DXF文件具有每个数据均占一行的特点。但是由DXF文件生成图形仅需实体段(以ENTITIES为段名)和文件结束标记。通过分析DXF文件的格式,现以VB编写的源程序说明读取DXF文件实体段几何信息的过程。
 Sub  DXF-IN 0
 Dim A As String:Dim B As STRING:Dim CC As ENTITIES-TYPE:Dim i,il As  Integer
 Open FILENAME1 For Input As #1
 Do Input #1,B
 Loop Until  B=“ENTITIES”
 Seek #1,Seek(1)
 Do While Not EOF(1)
 Do Input  #1,B
 Loop Until B 〈〉“0”
 i=i+1
 Select Case B
 Case  “LINE”
 INDXF-LINE  1
 CC.STYLE=“line”
 CC.X1=Str$(x1)
 CC.Y1=Str$(y1)
 CC.X2=Str$(x2)
 CC.Y2=Str$(y2)
 xx1=x2
 Case“ARC”
 INDXF-ARC  1
 CC.STYLE=“ARC”
 CC.X1=Str$(x1)
 CC.Y1=Str$(y1)
 CC.X2=Str$(x2)
 CC.Y2=Str$(y2)
 CC.X3=Str$(x3)
 CC.Y3=Str$(y3)
 CC.R=Str$(R)
 CC.ANGLE1=Str$(ANGLE1)
 CC.ANGLE2=Str$(ANGLE2)
 If  Abs(x1-xx1)>.5  Then
 CC.WISE=“0”
 A=CC.X1:CC.X1=CC.X2:CC.X2=A
 A=CC.Y1:CC.Y1=CC.Y2:CC.Y2=A
 A=CC.ANGLE1:CC.ANGLE1=CC.ANGLE2:CC.ANGLE2=A
 Else  CC.WISE=“1”
 End If  xx1=x2
 Case“CIRCLE”
 il=il+1
 INDXF-CIRCLE  1
 CC.STYLE=“CIRCLE”
 CC.X1=Str$(x1)
 CC.Y1=Str$(y1)
 CC.R=Str$(R1)
 CC.X2=CC.Y1
 xx1=x1
 Case“POINT”
 INDXF-POINT  1
 CC.YSTYLE=“POINT”
 CC.ZHX1=Str$(x1)
 CC.ZHX2=Str$(x1)
 xx1=x1
 Case  Else
 CC.STYLE=“NONE”
 End Select
 Seek  #1,Seek(1)
 j=Str$(i)
 Loop
 Close #1
 End Sub
 其它模块的程序设计不再赘述。
 4 实例   本文以二维零件数控铣削加工为例,首先进入AutoCAD绘制零件轮廓如图2所示。经图形交换文件DXF传输到系统后,工艺干预可得沿图示1-2-3-4-5-6-7顺时针方向走刀的ISO数控加工程序,且此程序已顺利通过校核检验。 | 
    
    
        
            | N0001 | G90 G92 X0 Y0 S500 M03 LF | 
        
            | N0002 | G01 X1 Y1 LF | 
        
            | N0003 | G01 X1 Y61 LF | 
        
            | N0004 | G01 X41 Y61 LF | 
        
            | N0005 | G02 X61 Y81 R20 LF | 
        
            | N0006 | G02 X101 Y81 R20 LF | 
        
            | N0007 | G01 X141 Y81 LF | 
        
            | N0008 | G01 X141 Y1 Lf | 
        
            | N0009 | G01 X1 Y1 LFM | 
        
            | N0010 | 02 EM | 
    

图2 AutoCAD绘制零件轮廓
5 结束语
  由以上实例可得如下结论:
(1)本系统基于AutoCAD平台成功地实现了二维轮廓零件的数控自动编程,从而弥补了繁重手工编程带来的许多缺陷;
(2)该系统既可单独作为图形自动编程系统使用又可作为工业PC机数控系统实现自动编程的功能模块;
(3)本系统一旦与CAPP系统结合,便发展为微机平台上的CAD/CAM一体化软件;
(4)添加刀具半径补偿功能后本系统将能实现刀具偏置自动补偿;
(5)研制本系统是PC微机上实现自动编程的有效尝试,功能有待补充和完善。