基于AutoLISP数控车加工程序仿真功能开发
2019-01-08韩洪征朱颖孙琳
韩洪征,朱颖,孙琳
(1. 中航发沈阳黎明航空发动机有限责任公司,辽宁 沈阳 110034; 2. 沈阳工学院,辽宁 沈阳 110034)
0 引言
在发动机的生产中,车加工占比很大。车加工数控程序的仿真是一个细致、耗时的过程,现有的成熟仿真软件如VERICUT,凭借其强大的后处理功能,能够以三维实体状态模拟实际加工,分析干涉、碰撞等。但进行数控程序复查时只能在程序运行结束后,运行“自动比较”命令比较设计模型与VERICUT输出模型,进行过切或残留检查。由于无法设定过切、残留值测量方向,测量的结果往往达不到理想要求。
针对这些问题,基于AutoCAD软件,使用AutoLISP语言编程[1]开发出数控车加工仿真功能,起到对VERICUT进行补充作用:
1) 借助AutoCAD软件的缩放功能实时检查刀轨与部件轮廓的相对位置,并可随意方向测量过切残留。相比于VERICUT软件的数控程序复查功能(图1),AutoCAD可以随时随意对工件外廓与刀轨图像进行缩放和平移,以检查二者的相对位置(如图2);
2) 无需复杂后置处理,灵活运用,通用性强,可支持卧车、立车,Fanuc系统、Siemens系统的仿真;
图1 利用VERICUT软件复查程序
图2 使用开发功能进行车加工程序仿真
3) 零件尺寸进行微调、更改,无需进行繁杂的模型转换,只需在CAD上更改后的二维轮廓图上采点生成程序段,反应迅速,方便准确。
1 数控程序代码分析
数控程序是控制机床运动的语言,常见的语言系统有Fanuc以及Siemens,由于二者有很大的共通性,以Fanuc系统数控车加工程序为例分析,其他系统以此类推。
图3为工件轮廓图。程序零点设在大端面中心,刀片采用VBMT160408(35°菱形刀片),刀尖半径为0.8mm。轮廓编程,程序如表1所列。
图3 工件轮廓图
程序段注释O1234(REV.A,R0.8)程序号以及注释G97M03 S30指定转速G40重置半径补偿方式G0Z500.快速进给G1G42X32.75F50.直线插补,刀半径补偿Z400.F20.直线插补,更改进给Z100.F10.直线插补,更改进给Z61.446F0.2直线插补,更改进给,开始切削G2X33.562 Z59.69R4.圆弧插补G1X53.052 Z39.741直线插补G2X98.517 Z25.546R25.3圆弧插补G1X150.直线插补G0G40Z500.快速进给,半径补偿重置M05主轴停M30机床停
2 仿真功能开发
2.1 仿真目标
仿真一个程序,主要包括两个部分内容:一是还原出刀具运行的轨迹,并与工件轮廓进行对比验证;二是标识出每段轨迹运行时所对应的转速、进给、刀补方向等辅助信息。
a) 刀轨模拟
控制车刀运动的准备功能字是“G00”、“G01”、“G02”、“G03”,其中“G00”表示快速定位到指定坐标位置;“G01”是以给定进给量(以“F”辅助功能字引出)进行直线插补运动到指定坐标位置;“G02”、“G03”准备功能字表示分别以顺时针或逆时针方向进行圆弧插补。这些准备功能字决定刀具轨迹的形状。辅助功能字“X”,“Z”决定轨迹的坐标选择,并引出具体坐标值,对于圆弧插补,还要提供辅助功能字“R”来标明转动圆弧半径。
b) 辅助信息标识
转速、进给、刀补方向需要在每一段程序中标识出来。转速以“S”辅助功能字引出;进给以“F”辅助功能字引出;刀具半径补偿准备功能字为“G40”,“G41”以及“G42”,由于数控程序有轮廓、刀心编程方式的分别,在仿真过程中,需要体现出程序轨迹对应的补偿方向。
2.2 程序实现
图4为程序设计流程图,从图4上可以看出,读入程序后主要进行两个方面的内容:一是绘出刀具轨迹,二是在每一条轨迹上做出注释。
图4 程序设计流程图
AutoLISP可以利用命令“getfiled”打开文本文档[2],因此,将程序保存在文本文档里,在AutoCAD的命令栏里输入“lathe”命令,程序打开一个对话框供用户选择程序,如图5所示。
图5 用户选择仿真的程序
选择程序后,对话框关闭,程序开始仿真,仿真过程如图6所示,每按下一次空格,软件读取一条程序段显示在命令行的输入框,并将已执行完毕的程序段自动传递到输入历史框里。与此同时,执行的程序对应的刀轨按照插补方式的不同以图层区分并绘制在工件轮廓图上。仿真完毕后,将鼠标放在刀具轨迹线上方,即可通过“超链接”[3]方式显示出该段程序的辅助信息。如图6所示的超链接信息“S30F0.2G42”,表示转速30r/min,进给0.2mm/r,程序沿前进方向右偏置。通过鼠标滚轮的缩放并CAD的测量功能,可以测量刀具轨迹与工件轮廓的任意方向的距离,以此得到任意方向的过切量或残留量。
图6 仿真结果展示
2.3 程序编制思路
从流程图中可以看出,程序运行的方式就是在程序段中搜寻功能字如“G、F、X、Z、R、S”。下面列出寻址“F”功能字并获得“F”后面引出的进给值的程序伪代码:
(提取程序段data)
(setqF_code(vl-string-position70data))
;搜寻程序中的“F”字的位置代号
(setqF_value"")
;存放进给值的变量F_value置空
(whileF_code
;当存在“F”字进行如下操作
(setqF_code(1+F_code))
;设置“F”后字符位置代号
(setqaddF_value(vl-string-eltdataF_code))
;析出“F”后一位字符
(cond
((>addF_value57) (setqF_codenil))
(( ((=addF_value47) (setqF_codenil)) ;若不为数字或小数点,则退出循环 (t(progn (setqF_value(strcatF_value(chraddF_value)))) (if(>= (1+F_code) (strlendata)) (setqF_codenil))) ;若为数字或小数点则放入F_value并搜寻下一个,直到程序段最后则退出循环 ) ) (if(/=F_value"") (setqF_cord(atofF_value))) ;如存在F值,赋值给F_cord。 当新建工件程序,或者工件尺寸发生变化时需要重编程序,使用UG或Mastercam比较繁琐,对于更改局部程序,需要手动去计算点位坐标。由于增加了人为干扰因素,容易造成程序错误。针对这一不便,基于AutoCAD使用AutoLISP编程开发出采点功能[4],直接在工件轮廓上采集线条端点位置信息,并将该位置信息按照机床代码格式直接以程序段输出。 采集CAD图形上的点位的坐标可以使用“getpoint”命令得到一个点位的列表,分别用“car”和“cadr”取得该点位的X坐标和Y坐标。为防止点位捕捉错误,可在“对象捕捉”中使用命令(setvar"osmode" 4133)[5]设置捕捉模式为端点、圆心、交点、延伸选项。 机床的坐标与CAD的坐标有着一一对应关系,表2列出了这种对应关系。 表2 CAD坐标与机床坐标对应关系 根据表中对应坐标关系进行坐标转换,并将坐标值以程序语句形式保存成字符串[6]。 (vl-load-com) ;调用VLISP扩展功能 (setqmynote(vlax-create-object"htmlfile")) ;建立html (setqRESULT(vlax-invoke(vlax-get(vlax-getmynote'PARENTWINDOW) 'CLIPBOARDDATA) 'SETDATA"Text"STR)) ;赋值给RESULT (vlax-release-objectmynote) ;关闭html 按以上程序代码将坐标点转换的程序语句输出到粘贴板。如图7所示,分别选取图中的1,2两点,对应的程序语句如图中信息提示,将坐标信息粘贴到文本编辑器中并添加准备功能字等便可以形成数控程序。 图7 采点结果展示 数控程序仿真功能[7],针对一些非宏普通程序,不需要检查碰撞等复杂工况的条件下,能够很好地对数控车加工程序进行仿真验证,相对一些大型仿真软件,能够避免过于复杂的后置设置[8],并且在自动比较分析时可以在任意方向进行余量分析。兼容Fanuc和Siemens仿真系统,运用灵活,通用性强。 数控程序采点功能,可以简化程序局部更改过程,对于尺寸变化需要更改程序的情况,使用采点功能直接在工件二维图上采集坐标点,并将其自动转化为机床程序坐标语句,后续添加准备功能字等即可变成程序段[9],避免在CAD/CAM软件上重新画图,重新出程序的复杂过程。3 程序创建及更改采点功能开发
3.1 点位采集
3.2 坐标转换与程序段输出
4 结语