关键字:VisualLISP;数控冲床;自动编程;加工仿真
1 概述
随着科学技术的发展,数控机床越来越广泛地应用在机械制造行业中。在数控加工系统中,传统的NC代码手工编程不仅效率低,而且容易出错;而采用APT语言的自动编程虽然几何定义语句简洁,功能较强,但要求编程人员要熟记系统的语言与规则,一旦出错又不易发现。国外的数控冲床图形编程系统已应用于工业生产实际,而我国在这方面还处于研究阶段。
本文作者对数控冲床的自动编程系统进行了深入的研究,并在AutoCAD的VisualLISP环境下进行了相应的系统开发工作,并成功通过了AutoCAD2000~AutoCAD2006多个版本的兼容性测试。
2 自动编程系统的总体结构
自动编程系统采用模块化结构,由六大功能模块组成,分别为自动编程主模块、图形信息处理模块、加工路径确定与优化模块、模具库与模具选择模块、后置处理模块、图形仿真模块,模块化数控冲床自动编程系统的总体结构图如图1所示。
图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个顶点圆弧半径就可得出步冲的起点、终点和步冲的长度。计算出的圆弧半径即模具的半径。
3.2 加工模具的自动选择
3.2.1 模具库的建立
对于一个具体的刀具,具体有以下几个参数:模具号,形状,X方向长,Y方向长以及直径。对于圆形模具,没有X、Y方向长参数,对于矩形模具,没有直径参数。用户可以由对话框建立刀具和修改刀具。
定义变量m_dia为模具直径,m xlen为模具X方向长,m_ylen为模具Y方向长,m_shape为模具形状,m_sym为模具号,如下程序段定义刀具信息格式。
(list m_sym m_shape m_xlen m_ylen m_dia);刀具信息组成表格式
模具类的建立即是建立了刀具存储的格式,即刀具信息在刀具库中是以表的格式存储的,模具库管理通过表操作来完成对模具库的管理功能。
3.2.2 加工模具的自动选择
一般的数控冲压机可以多副模具,其中既有圆形模具,也有矩形模具,其要加工的孔可分为圆孔、矩形孔、腰圆孔,腰直孔四类。为了方便选择图形和不同类图形的处理,系统可以通过交互式操作将不同类型图形赋值于四个不同的选择集ss1、ss2、ss3、ss4。通过对SSGET函数的参数设置,可以避免赋值过程的误操作。系统自动模具选择的总体流程如图2所示。
图2 系统自动模具选择的总体流程
其中模具匹配需要编写专用的匹配函数,根据孔型的不同自动从建立好的模具库中选择合适的模具进行加工。
3.3 加工路径确定
加工路径的确定就是数控冲床冲压路径的确定,主要的设计任务就是实现以何种方式来确定加工顺序,加工路径如何实现最短优化,如何使加工时间缩到最少,如何使程序适应多种加工方案。
3.3.1 加工路径确定的基本原则
数控冲床加工路径的确定主要涉及两个基本原则:
(1)同一把刀工序尽量集中。在数控冲压加工时,为了减少转刀所占用的辅助时间,可按集中工序的方法加工零件,尽可能用同一把冲模加工完零件表面上的相同冲切部分。
(2)走刀路径最短。对于数控设备来说,每一秒钟的时间都是宝贵的,冲压过程所需的时间较短,而模具的空行程决定了加工效率,合理安排空行程路径显得尤为重要。
3.3.2 加工路径的优化
加工路径的优化的问题即是对加工孔寻找最短遍历路径的问题,对尺寸相同的加工孔而言,路径的优化可以归属与完全NP问题,完全NP问题的典型是货郎担问题,货郎担问题和本文研究的最短遍历路径问题的差别在于货郎担问题的最终节点是起始点,而最短遍历路径不要求最后回到起始点,但如果能够以一个高效的算法来解决货郎担问题,最短遍历路径也可参照得出近似算法。完全NP问题完全的算法是不存在的,因为对于遍历点大于20时要想得出结果需要几年甚至几十年的时间。一般采用近似算法来代替最优算法,常见的算法有正交路径法、最近点路径法等。
3.4 后置处理
后置处理模块的主要作用是用来将刀位文件转化为NC代码。把它作为独立模块的作用是可以通过不同的后置处理生成适应不同数控系统的NC代码,增强系统的通用性。
3.4.1 后置处理模块的设计
后置处理模块分为两大类:一类为专用后置处理模块,另一类是通用后置处理模块。根据冲压数控系统的特点,通用后置处理模块更适合本系统,通过制定标准格式的机床文件,通过对话框实现机床数据的标准化文件。在NC代码生成和图形仿真时调用机床标准文件,即可获得相应的数控代码信息。数控系统C代码的设置界面如图3所示。
图3 G代码的设置界面
3.4.2 NC代码生成
(1)点位冲孔的NC代码生成
点位冲孔的C代码是GOO,但为了适应更多的数控系统,作者建立一个变量gcode_00,用来表示快速点定位冲孔指令,系统默认代码为GOO,不同的数控系统可以在自动编程系统的后置处理设置中设定。刀具的中心位置坐标由加工路径模块确定,刀具信息由模具选择模块确定。
(2)步冲加工的NC代码生成
以直线步冲为例,系统默认的直线步冲的G代码是G69,不同的数控系统仍然可以在自动编程系统的C代码设置中设定。步冲的起始位置和终点位置坐标由加工路径模块确定,刀具信息由模具选择模块确定。步冲的长度即是起点位置和终点位置的距离,用函数Distance可以轻松实现,步矩的确定分为圆形模具步冲和矩形模具步冲两种情况。
3.4.3 步冲步矩的确定
用圆形的模具进行步冲时必然会产生均匀的步冲齿花,步距越大,齿花越明显。圆形模具的步冲步距取决于步冲齿花的高度,即取决于步冲精度的大小,齿花大小决定了孔的加工精度,所以设计程序时把精度要求作为一个输入参数,在自动编程系统的步冲精度设置中设定,步距的大小由式(2)计算确定。
p=2(ds-s2)1/2 (2)
式中:P为步距;d为模具直径;s为齿花高度。
矩形模具的步冲步距只取决于步冲的长度与模具的尺寸。用步冲起点和终点的距离除以步冲方向的模具尺寸得出的数值取整加一,得出最小步冲步数;然后,再用步冲起点和终点的距离除以步冲步数得出的数值即可作为步冲步距。
当然,在大多数数控系统中,矩形模具的步冲步距可以是小于步冲方向的模具尺寸的任何值,为了保证加工的效率和加工效果,可以人工估算一个合理步矩值,然后通过自动编程系统的步冲精度设置中设定。如果步冲起点和终点的距离除以此步距得出的步冲步数不为整数时,数控系统会自动调整步矩以适合加工。
4 加工过程的仿真
在数控加工过程中,零件加工后的质量是否符合要求,在加工过程中是否会发生零件与刀具、刀具与夹具、刀具与机床工作台之间的干涉与碰撞,刀具是否对零件进行了过切或少切,刀具的走刀路线、走刀方式是否合理等一系列实际加工中可能会发生的问题都决定于自动编程系统所输出的数控加工指令集是否正确。根据NC代码文件提供的信息,将加工轨迹模拟出来,显示在显示屏上,以方便程序校验和冲压过程检验。
4.1 仿真系统总体结构
仿真系统应该能够完成数控程序的错误检查,动态地模拟数控机床驱动刀具的运动及加工过程。因此加工过程的仿真一般由文件处理、错误检查和模拟仿真三部分组成。其总体结构如图4所示。
图4 仿真系统总体结构图
4.2 NC代码的翻译与仿真的实现
获得了程序段的数据,就可以利用其提供的数值进行仿真。
实现了在屏幕上作图不等于实现了加工过程的仿真,如果不仅想看到全部的图形显示在屏幕上,而且想动态的观测加工的先后顺序,就需要加一些程序。实现动态的仿真可以由两种方法实现:
一是调用AutoCAD的内部命令“delay”。这种方法的优点是简单快捷,可以随意设定两个图形间的生成时间,即可以随意调节仿真的速度。
第二种方法是编写动态函数z_timer。动态函数z_timer的作用是通过输入的冲床T轴移动速度,再根据图形中计算出的两个相邻加工点的距
离,即可得出其移动所需要的时间,然后再由Delay函数实现延时。这种方法的优点是:全部时间与实际时间相符,可以加入换刀的时间,实现真正实时的仿真,并且可以通过对话框指定时间缩放比例,即也可以按比例控制仿真的速度。
5 程序运行实例
5.1 NC代码的自动生成
选用实际加工的电控板图纸如图5所示。
图5 电气控制板
首先,将图5按1:1的比例在AutoCAD中绘制出来,然后检查要加工的矩形孔是否是整体,如果矩形孔是用多条直线段绘制的,就需要转化为一条多段线。点击菜单“数控加工”→“加工刀具预检验”,以检查所需加工的孔在刀库中是否存在合适的加工刀具,检查完毕后,系统会提示矩形孔60×20没有直接可以使用的模具。因此,可以指定步冲模具为T316号刀具,即13×13方模具,但是为了让动态仿真更为清晰,选用T321号步冲模具,即10×10方模具。
点菜单“数控加工”→“NC代码生成”,在弹出的对话框中根据提示选择要加工的图形,并设定好相关参数,点击确定即可生成相应的NC代码,如图6所示。
图6 系统生成NC代码文件
5.2 NC代码的动态仿真的实例
争先对NC代码文件进行错误检查,确认没有词法和语法错误后,点击“数控加工”→“数控仿真”,激活数控仿真对话框,通过对话框选定要进行仿真的NC文件,设定好冲压仿真速度,点击确定按钮,对话框自动关闭,并且在当前屏幕上开始对所指定的NC代码文件进行动态仿真。仿真效果如图7所示。图7显示了NC代码文件的仿真结果,图中的虚线展示了刀具走刀的中心轨迹。
图7 仿真结果
6 结论
本系统已成功应用到山西某电控设备厂。实践生产证明,本系统具有NC代码的自动生成和图形的动态仿真功能,并且可以对已有的NC代码进行检错。系统通过对加工零件图的自动编程,避免了手工编程繁琐的坐标计算,并对加工路径进行了优化处理,提高了生产效率;结合图形仿真模块的应用,有效地减少了加工事故的发生,提高了冲压加工的安全性。