1 概述
数控零件加工程序的编制是进行数控加工的一个重要步骤,国内外数控加工统计说明,造成数控机床等待约20%~30%是编程不及时所致,可见数控编程直接影响着数控机床的加工效率。随着数控技术应用的日益扩大,我国企业在数控自动编程应用方面已有较大发展,目前主要有以下三种自动编程方式。
(1)采用数控编程语言的自动编程。最著名的是APT(Automatically Programmed Tools)语言。
(2)计算机辅助图形设计的自动编程。采用CAD方法,将设计好的零件图形显示在屏幕上,编程人员指定要加工的表面,并回答软件提出的一些问题,诸如对刀点、走刀方式、切削用量参数等,然后由系统进行自动编程,形成刀位数据文件或APT程序,再经后置处理,变成机床所需的NC代码。
(3)从CAD获取信息的自动编程。编程所需的零件形状信息直接从CAD那里得到,一般利用AutoCAD提供的图形交换文件DXF接口,编程人员只需进行适当工艺处理。
由于图纸上给出的零件形状数据往往比较少,而数控系统的插补功能要求有较多的数据才能控制机床。尤其是当数控系统插补功能要求输入的数据与零件形状给出的数据不一致时,就需要进行复杂的数学运算,而在运算过程中可能产生人为的错误。而这些复杂的数学运算可由计算机快速、准确地完成。
NC程序作为数控加工的信息载体,其正确与否直接影响零件加工质量。目前实际生产使用的NC程序,在投入加工之前通常采用机床空运行和木模、蜡模的试切,完成NC程序的检查。该方法加工准备周期长,生产成本增加,难以实现数控机床的高效生产。图形仿真是目前CAD/CAPP/CAM系统中通用的NC检验方法。
本文介绍了作者开发的数控软件(Numerical Control Automatic Programming System——NCAPS)设计方案和实现方法。操作人员在实际操作数控铣床加工工件之前,先用该系统进行模拟操作。通过计算机屏幕可清晰地看到所编辑的加工程序运行的刀具切削模拟过程,并可方便地反复修改加工程序,直到被加工的“工件”符合要求为止。且该过程都在AutoCAD环境下实现。这无疑对新产品的开发、安全生产、提高生产效率及减少废品都具有实际意义。
2 ActiveX Automation对象及开发工具介绍
2.1 ActiveX Automation对象
(1)顶层是AutoCAD Application,它除具有对象的属性和方法外,还包括两个重要的对象Preferences(参数对象)和document(文档对象)。Preferences对象是与AutoCAD系统中参数设置相对应的对象,document对象则是包括图形文件的所有对象集合,如Blocks Collection、ModelSpace Entities Collection、PaperSpace Entities Collection等一系列对象。
(2)图形对象。Blocks Collection等属于图形对象,它是用户使用频繁的对象,是实现参数化、变量化及三维实体造型等功能的主要方式。
(3)输出对象。输出对象控制图形文件的输出格式,如设置坐标原点、方向等。
(4)实用对象。该对象提供AutoCAD中常用的数据转换、辅助计算等功能。
2.2 开发工具
本文以Visual Basic 5.0为开发工具,给出了实例。由于编程思想是相同的,所以该方法可移到Visual C++、Delphi等开发工具上。
用VB5实现ActiveX Automation开发的关键是要获得AutoCAD对象的指针,及创建AutoCAD.Application对象,进而创造AutoCAD的文档对象,以实现对AutoCAD中其它对象的访问,完成与AutoCAD的通讯。
3 系统的组成与功能
图形交互式自动编程系统处理零件程序的一般过程是:输入零件图形→输入工艺参数→运动轨迹计算→加工模拟→后置处理→程序清单→输出。NCAPS是针对数控铣床开发的,系统框架结构如图1所示,它主要包括进入AutoCAD R14系统绘制零件图、工艺处理、动态校验和数控加工程序输出等功能模块。具体步骤如下:
(1)进入AutoCAD R14系统绘制零件图
它是AutoCAD实体建模过程。
(2)工艺处理
图1 NCAPS系统框架结构示意图
它是第(1)步操作后对图形数据进行再加工的核心模块。利用计算机图形学技术,直接在AutoCAD环境下进行工艺干预。
工艺干预内容包括轮廓和点位二种方式,干预过程通过鼠标事件选择实体来实现。用鼠标选取实体的先后来组成加工环(加工路线)。现以VB5编写的源程序说明如何直接从AutoCAD环境下选择实体,形成加工路线(该程序只是该模块的部分)。
Option Explicit
Public objAcad As Object,objDoc As Object
Private Sub Form-Load()
StartAutoCAD-为对AutoCAD访问做准备
End Sub
Private Sub StartAutoCAD()
Dim DwgName As String
Set objAcad=GetObject(,“AutoCAD.Application”)
End Sub
Private Sub SelectCutType-Click()
Dim EntityName As String
Dim EntityMessager(1 To 6) As Variant
Dim ent As Object,sset As Object
Set objDoc=objAcad.Activedocument
Set sset=objDoc.SelectionSets.Add(“SS1”)‘设置sset到一个名为SS1的选择集中
sset.SelectOnScreen
Dim msgstr As String,appName As String
appName=App.CompanyName
For Each ent In sset
If ent.EntityName=“AcDbLine”Then‘为直线
EntityName=ent.EntityName
Entitymessager(1)=ent.StarPoint:EntityMessager(2)=ent.EndPoint
ElseIf ent.EntityName=“AcDbCircle”Then‘为圆
EntityName=ent.EntityName
EntityMessager(1)=ent.Center:EntityMessager(2)=ent.Radius
ElseIf ent.EntityName=“AcDbArc”Then‘为圆弧
EntityName=ent.Entityname
EntityMessager(1)=ent.Center:EntityMessager(2)=ent.Radius
EntityMessager(3)=ent.StartAngle:EntityMessager(4)=ent.EndAngle
EntityMessager(5)=ent.StartPoint:EntityMessager(6)=ent.EndPoint
Else
EntityName=ent.EntityName‘为其它实体
End If
Next ent ‘选择集中的下一个实体
End Sub
(3)NC代码生成
经过工艺干预(即确定刀具走刀路线)后,便可将图形几何信息和工艺干预信息转换成ISO标准数控加工程序代码。同时以(*.NC)形成的文件名永久保存。
(4)动态校验
上述生成的NC代码是否正确还要进行校验方能制作控制介质输出。本模块采用时间分割插补算法进行动态模拟,以校验ISO数控加工程序代码是否正确,以及刀具与工件是否产生干涉等。如果校验不正确,则需对上述各个环节进行反复调试,直到正确为止。
为使刀位数据易于获得,避免传统数值积分法(DDA)精度较差与运算繁琐等缺点,本系统在加工仿真过程中引入方向性概念,使刀心轨迹在算法上简洁明了,程序可读性强。
对于CNC系统刀补功能,以往的直线过渡刀补算法,常利用三角函数关系式来计算各转接点的坐标值。这些方法公式推导复杂,计算量大,不宜归纳和简化。本系统引入运动矢量和刀具半径矢量来计算,对直线到直线、直线到圆弧、圆弧到直线和圆弧到圆弧各种转接情况进行了分析,综合为两个统一公式进行计算,大大简化了CNC系统的刀具补偿的计算量。
(5)文本编辑模块
此模块允许操作人员把已编好的ISO代码形式的数控加工程序通过文本编辑送到计算机,对其加工过程模拟演示,以便验证所编的数控零件加工程序的正确性。
(6)数控加工程序输出
经调试和检验后的正确数控加工程序可以通过拷贝、打印、通讯接口的方式输出。
4 实例
本文以二维零件数控铣削加工为例,首先在AutoCAD环境下绘制零件轮廓,如图2所示。工艺干预可得沿图2所示1-2-3-4-5-6-7-8-9-10-11顺时针方向走刀的ISO数控加工程序,且此程序已通过动态校核检验(如图3)。
图2 工艺干预结果
图3 数控加工(铣削)仿真结果
5 结束语
综上所述,本系统具有如下优点:
(1)直接在AutoCAD环境下经图形转换,自动生成数控指令代码。由指令代码可以动态模拟刀具运动轨迹,校验代码的正确性。
(2)代码可以直接和数控机床通讯,加工出新设计的图形,实现了CAD/CAM一体化。
(3)该系统已与数控机床连通,并进行了实际切削。实验表明,该系统具有运行准确、直观,能显著提高数控编程效率等特点,对其中一些功能继续完善,可满足实际加工需要。目前,该系统被我校CAM课程自动编程实验室采用。