1 概述
随着科学技术的发展,数控机床越来越广泛地应用在机械制造行业中。在数控加工系统中,传统的NC代码手工编程不仅效率低,而且容易出错;而采用APT语言的自动编程虽然几何定义语句简洁,功能较强,但要求编程人员要熟记系统的语言与规则,一旦出错又不易发现。国外的数控冲床图形编程系统已应用于工业生产实际,而我国在这方面还处于研究阶段。
本文作者对数控冲床的自动编程系统进行了深入的研究,并在AutoCAD的VisualLISP环境下进行了相应的系统开发工作,并成功通过了AutoCAD2000~AutoCAD2006多个版本的兼容性测试。
2 自动编程系统的总体结构
自动编程系统采用模块化结构,由六大功能模块组成,分别为自动编程主模块、图形信息处理模块、加工路径确定与优化模块、模具库与模具选择模块、后置处理模块、图形仿真模块,模块化数控冲床自动编程系统的总体结构图如图1所示。
自动编程主模块的主要工作是调用加工路径模块和模具库模块,将图形信息转化为加工路径信息及模具信息,并生成刀位文件。此模块还可以直接调用后置处理模块与图形仿真模块,生成加工所需的NC代码,并对其进行图形仿真。本模块所具有的功能还包括保存、编辑刀位文件和NC代码文件等文件编辑功能。
3 系统开发的关键技术研究
3.1 图形信息的处理
要想生成NC代码,首先就要让计算机识别所需要加工的图形。图形信息处理模块的作用是将CAD图形中的有用图形信息提取出来,比如图形中圆孔的直径和圆心、方孔的边长和中心、腰圆孔的孔径和中心线圆弧的半径与圆心、矩形孔的边长和几何中心等,然后将这些信息输送到主程序模块中。获取图形信息的方法有多种,比如通过DXF文件导人,或者通过人机交互获取。由于VisualLISP可以直接操作选择集,所以选择后一种方法更为合适,并且有利于设定编程原点(工件坐标系原点)等人机交互更为方便的操作。
3.1.1 圆形类基本参数的获取
在AutoLISP中,通过交互操作获取圆基本参数是非常容易的,如下简单程序段即可获得圆形的主要参数:
(SETQ cir_data(ENTGET (CAR(ENTSEL”\n请选择一个圆形:”))));通过交互操作获得图形信息
(SETQ cir_pt(CDR(ASSOC 10cir_data)));从图形信息中获取圆心坐标
(SETQ cir_r(CDR(ASSOC 40 cir_data)));从图形信息中获取圆的半径。
3.1.2 矩形类基本参数的获取
矩形类的主要参数是2个边长和4个顶点,4个顶点可以用AutoLISP函数获得,边长可以通过计算相邻的两点间的距离确定。
获得点的位置一般要用到ASSOC函数,其作用是从关联表中搜索1个元素,如果找到则返回该关联表条目,如果点的数目较多则一般采用循环读取的方法,只需做1个循环即可获得4个顶点。
(SETQ reg_data(ENTGET(CAR(ENTSEL”\n请选择一个矩形:”))));通过交互操作获得图形信息
(WHILE(SETQpt(ASSOCloreg data));设置循环条件
(SETQ reg-data(CDR(MEMBER pt reg-da-ta)));将以获得的点从羌联表中删除
(SETQptb(CONS(CDR pt)ptb)));将获得的依次点位存储到变量ptb中
计算边长的时候将点位从点表变量ptb中提取,通过Distance函数直接求取,无需做距离计算。
3.1.3 腰圆孔、腰直孔类基本参数的获取
腰圆孔、腰直孔基本参数的获取涉及到多段线数据的提取。为了实现图形的自动编程,必须将这两类孔均转换为多段线Polyline或者Lwpolyline。
采用AutoLISP表处理函数可以获得各节点坐标及圆弧凸度,其方法如下:
(SETQ pel_data(ENTGET(CAR(ENTSEL”\n请选择一个矩形:”))))
(SETQ ptl(CDR(ASSOCl0pel-ara)));从pel_data中取出第一个节点坐标给变量pt1
(SETQ par(CDR(ASSOC42pel-ata)));从pel_data中取出第一条线段凸度给变量par
圆弧半径可由凸度值和相邻两节点坐标计算出来,圆弧半径R的值由式(1)确定:
R=(dist*par2+dist)/(2*par) (1)
式中:R为圆弧半径;dist为两节点距离;par为凸度绝对值。
腰圆孔类基本参数主要有4个半径和4个圆心。其实,只需要计算出其中4个圆心就可以实现编程功能了。有了4个圆心又可以确定圆弧步冲的起点和终点。通过分析计算出的圆弧半径就可以获得模具的半径和圆弧步冲所需的圆弧半径。
腰直孔获得其多段线的4个顶点圆弧半径就可得出步冲的起点、终点和步冲的长度。计算出的圆弧半径即模具的半径。