1、数控编程之MasterCAM文件的后处理数控编程之MasterCAM文件的后处理 数控编程之MasterCAM文件的后处理 2009-10-16 22:56:20| 分类: 机械类 |举报|字号 订阅2.数控自动编程原理我们在进行数控手工编程时,先是求出组成零件几何图形的基本线圆图素的节点(交点)坐标值,然后按数控程序的格式要求固定地排列起来,再少量地在某些部位嵌入一些加工工艺指令而已。也就是说只要求出各交点坐标,则转化成数控程序是就相当于填表一样有规则。自动编程就是利用计算机来计算这些交点,再按规律自动组成数控程序。对于简单零件图形,由于各交点坐标很容易求出,通常都只需要采用手工编程即可,若
2、用自动编程则感觉不出其优势,但对于复杂零件图形,由于交点坐标手工很难计算,所以往往需要借助于自动编程。当然,对于简单图形,若需要经常性地进行数学变换,同样需要使用自动编程系统。数控自动编程从发展的历史来分,可有:1)数控语言型批处理式自动编程早期的自动编程都是编程人员根据零件图形及加工工艺要求,采用数控语言,先编写成源程序单,再输入计算机,由专门的编译程序,进行译码、计算和后置处理后,自动生成数控机床所需的加工程序清单,然后通过制成纸带或直接用通讯接口,将加工程序送入到机床CNC装置中。这其中的数控语言是一套规定好的基本符号和由基本符号描述零件加工程序的规则,它比较接近工厂车间里使用的工艺用语
3、和工艺规程,主要由几何图形定义语句、刀具运动语句和控制语句三种语句组成。编译程序是根据数控语言的要求,结合生产对象和具体的计算机,由专家应用汇编语言或其它高级语言编好的一套庞大的程序系统。这种自动编程系统的典型就是APT语言。APT语言最早于1955年由美国研制成功,经多次修改完善,于70年代发展成APT-,一直沿用至今。其它如法国的IFAPT、德国的EXAPT、日本的FAPT、HAPT以及我国的ZCK、SKC等都是APT的变形。这些数控语言有的能处理35坐标,有的只能处理2坐标,有车削用的、铣削及点位加工用的等。这种方式的自动编程系统,由于当时计算机的图形处理能力较差,所以一般都无图形显示,
4、不直观,易出错。虽然后来增加了一些图形校验功能,但还是要反复地在源程序方式和图形校验方式之间来回切换,并且还需要掌握数控语言,初学者用起来总觉不太方便。2)人机对话型图形化自动编程在人机对话式的条件下,编程员按菜单提示的内容反复与计算机对话,陆续回答计算机的提问。从一开始,对话方式就紧密与图形显示相联,从工件的图形定义,刀具的选择,起刀点的确定,走刀路线的安排直到各种工艺 指令的及时插入,全在对话过程中提交给了计算机,最后得到的是所需的机床数控程序单。这种自动编程具有图形显示的直观性和及时性,能较方便地进行对话修改,易学且不易出错。图形化自动编程系统有EZ-CAM、Master CAM、UGI
5、I、PRO/E、CAXA制造工程师等。由于图形显示的直观性和及时性,图形化自动编程现在已经是数控加工领域应用最广的自动编程方式。这类软件一般包括几何绘图的CAD部分和加工刀路定义的CAM部分。然而,就CAM部分来说,刀路定义完成后,怎样针对不同的数控系统来生成相对应的NC程序呢?那就涉及到后置处理技术。3.MasterCAM软件及其后置处理技术31 MasterCAM软件的数据处理流程MasterCAM软件由CAD模块绘制图形,存盘后保存为*.MCx(x为版本号,如MC7、MC8、MC9等);进行加工刀路定义后,即可生成相对独立的*.NCI刀路数据文件,该文件存放了关于刀具、工艺参数、加工节点
6、坐标等按照刀路定义顺序产生的一些格式固定的数据;最后需要生成NC程序时,由后置处理模块读取NCI文件中的数据,根据选用的机床数控系统后置处理文件(MP*.PST)的要求,编译组合成适于数控加工机床用的NC程序清单文件*.NC。当然,MasterCAM中还有存放刀具参数、毛坯及刀具材质、配置系统状态、加工工艺表单等的一些数据格式文件。32 MasterCAM软件针对数控系统的后置处理技术从以上MasterCAM软件的数据处理流程可知,MasterCAM经刀路定义后生成的刀路数据文件NCI是不变的,最后生成NC程序时需要用到不同的后置处理格式文件*.PST,从而生成不同的NC格式程序代码。系统提供
7、适于各种不同数控系统的后置处理文件,如适于日本FANUC系统的MPFAN.PST,适于美国Dynapth数控系统的Mpdypth.pst,适于德国马豪数控系统的Mpmahoxy.pst、Mpmahoxz.pst,适于mazakm数控系统的Mpmazakm.pst等等。尽管如此,由于我们所使用到的机床很多功能处理上经机床生产厂家做过各式各样的改变,可能无法直接使用由默认后置处理各式生成的NC程序,因此,研究探索后置处理文件就很有必要。MasterCAM软件最后NC程序的生成取决于不同的后置处理文件PST ,通过探索修改PST文件即可获得我们所需要的适应不同数控系统的NC程序格式。4后置处理文件参
8、数项对NC程序输出的影响简述通过修改后置处理(*PST)文件参数的变量赋值,可控制NC程序输出,以下是控制程序输出单节的内容,我们由此来简单的看一看修改各参数项的影响。# General Output Settings 基本输出选项设置# -sub_level : 1 #Enable automatic subprogram supportbreakarcs : 2 #Break a rcs, 0 = no, 1 = quadrants, 2 = 180deg. max arcsarcoutput : 1 #0 = IJK, 1 = R no sign, 2 = R signed neg. o
9、ver 180arctype : 2 #Arc center 1=abs, 2=St-Ctr, 3=Ctr-St, 4=unsigned inc.do_full_arc : 0 #Allow full circle output? 0=no, 1=yeshelix_arc : 2 #Support helix arc output, 0=no, 1=all planes, 2=XY plane onlyarccheck : 3 #Check for small arcs, convert to linearatol : .01 #Angularity tolerance for arcchec
10、k = 2ltol : .002 #Length tolerance for arccheck = 1vtol : .0001 #System tolerancemaxfeedpm : 500 #Limit for feed in inch/minltol_m : .05 #Length tolerance for arccheck = 1, metricvtol_m : .0025 #System tolerance, metricmaxfeedpm_m : 10000 #Limit for feed in mm/minforce_wcs : yes #Force WCS output at
11、 every toolchange?spaces : 0 #Number of spaces to add between fieldsomitseq : no #Omit sequence numbers?seqmax : 9999 #Max. sequence numberstagetool : 0 #0 = Do not pre-stage tools, 1 = Stage toolsuse_gear : 0 #Output gear selection code, 0=no, 1=no max_speed : 10000 #Maximum spindle speedmin_speed
12、: 50 #Minimum spindle speednobrk : no #Omit breakup of x, y & z rapid movesprogname : 1 #Use uppercase for program name (sprogname)xflip : no #Reverse X axis orientation - eap 1/17/03yflip : no #Reverse Y axis orientation - eap 1/17/03zflip : no #Reverse Z axis orientation - eap 1/17/03# -以break
13、arcs为例:当breakarcs=0时,不打断圆弧,以整圆形式输出;当baeakarcs=1时,将圆弧划为4等分,分4象限的形式输出:当breakarcs=2时,按180度打断圆弧,分2部分输出。如图5所示外形铣削,当baeakarcs=1时,其程序输出为:%O1234N100G21N102G0G17G40G49G80G90( 10. FLAT ENDMILL TOOL - 1 DIA. OFF. - 1 LEN. - 1 DIA. - 10.)N104T1M6N106G0G90G54X-65.Y-45.A0.S2000M3N108G43H1Z10.M8N110Z5.N112G1Z-2.F2
14、00.N114X-55.F500.N116X40.N118G3X55.Y-30.R15.N120G1Y15.505N122G3X75.Y40.R25.N124X50.Y65.R25.N126X25.505Y45.R25.N128G1X-30.N130Y40.N132G2X-50.Y20.R20.N134G1X-55.N136Y-45.N138Y-55.N140Z3.F10000.N142G0Z10.N144M5N146G91G28Z0.M9N148G28X0.Y0.A0.N150M30%当breakarcs=2时,程序输出如下:%O1234N100G21N102G0G17G40G49G80G9
15、0( 10. FLAT ENDMILL TOOL - 1 DIA. OFF. - 1 LEN. - 1 DIA. - 10.)N104T1M6N106G0G90G54X-65.Y-45.A0.S2000M3N108G43H1Z10.M8N110Z5.N112G1Z-2.F200.N114X-55.F500.N116X40.N118G3X55.Y-30.R15.N120G1Y15.505N122G3X45.Y64.495R25.N124X25.505Y45.R25.N126G1X-30.N128Y40.N130G2X-50.Y20.R20.N132G1X-55.N134Y-45.N136Y-55
16、.N138Z3.F10000.N140G0Z10.N142M5N144G91G28Z0.M9N146G28X0.Y0.A0.N148M30%5后置处理文件的改编51 南通XH713AFANUC-0i系统的后置处理南通XH713A立 式加工中心采用斗笠式刀库,和机械手换刀不同,它无法预先进行选刀操作,其选刀和自动换刀过程密不可分,必须先将主轴上的刀具装回到原刀袋中,才可以往下进行选刀。换刀时主轴应移动到第二Z参考点的位置,卸刀时主轴则提升到第一Z参考点的高度。换刀过程中还需要控制刀库座盘的整体移动,动作相当复杂,因此机床厂家对其所用的FANUC-0i系统进行了适当的改造,根据换刀动作的要求,编写
17、了一个O9000的子程序,要求用户在编写自动换刀的程序时,采用M98P9000的程序格式,且换刀前应让机床Z轴处于第二参考点的位置上。另外,机床开启冷却液是使用的M7指令,而非M8指令。其他方面基本采用FANUC的标准程序形式。针对该机床的特点,我们在改写MPFAN.PST文件时就需要将所有可能生成“TxxM6”的指令改为生成“TxxM98P9000”的指令,将生成“M8”的指令改为生成“M7”的指令输出,将换刀前自动回第一参考点的“G28”的指令改为生成回第二参考点“G30”的指令输出。针对M8改M7,可改动字符串定义单节的定义,将sm08、sm08_1、sm08_2变量都用“M7”这一字符
18、串进行赋值定义,即将如下定义段fstrsel sm04 spdir2 spindle# -# Coolant M code selectionsm09 M9 #Coolant Offsm08 M8 #Coolant Floodsm08_1 M8 #Coolant Mistsm08_2 M8 #Coolant Toolscoolant #Target for stringfstrsel sm09 coolant scoolant #-改为:fstrsel sm04 spdir2 spindle# -# Coolant M code selectionsm09 M9 #Coolant Offsm0
19、8 M7 #Coolant Flood sm08_1 M7 #Coolant Mistsm08_2 M7 #Coolant Toolscoolant #Target for stringfstrsel sm09 coolant scoolant #-如果要兼顾到可能会用到M8的情形,可改动其中一个如sm08_1为 M7,这样在刀路定义时选择开启冷却液的第三项“喷雾”,即可。针对换刀程序格式输出,可直接将程序格式预定义单节中所有“M6”改为“M98P9000”,将所有“G28”改为“G30”即可。#-# Start of File and Toolchange Setup#-psof0 #Sta
20、rt of file for tool zero psofpsof #Start of file for non-zero tool number pcuttypetoolchng = one if ntools = one,#skip single tool outputs, stagetool must be onstagetool = m_one !next_tool"%", e*progno, e"(PROGRAM NAME - ", sprogname, ")", e"(DATE=DD-MM-YY - "
21、, date, " TIME=HH:MM - ", time, ")", epbld, n, *smetric, e pbld, n, *sgcode, *sgplane, "G40", "G49", "G80", *sgabsinc, esav_absinc = absinc if mi1 <= one, #Work coordinate systemabsinc = onepfbld, n, sgabsinc, *sg28ref, "Z0.", epfbld, n,
22、 *sg28ref, "X0.", "Y0.", epfbld, n, "G92", *xh, *yh, *zh, eabsinc = sav_absincpcom_movebc_mmlt #Multiple tool subprogram callptoolcommentcommentpcanif stagetool >= zero, pbld, n, *t, "M6", epindexif mi1 > one, absinc = zeropcan1, pbld, n, *sgcode, *sgabs
23、inc, pwcs, pfxout, pfyout, pfcout, *speed, *spindle, pgear, strcantext, epbld, n, "G43", *tlngno, pfzout, scoolant, next_tool, eabsinc = sav_absincpcom_moveatoolchng = zero c_msng #Single tool subprogram callptlchg0 #Call from NCI null tool change (tool number repeats) pcuttypepcom_movebc_
24、mmlt #Multiple tool subprogram callcommentpcanresult = newfs(15, feed) #Reset the output format for 'feed'pbld, n, sgplane, e pspindchngpbld, n, scoolant, eif mi1 > one & workofs <> prv_workofs,sav_absinc = absincabsinc = zeropbld, n, sgabsinc, pwcs, pfxout, pfyout, pfzout, pfco
25、ut, epe_inc_calcps_inc_calcabsinc = sav_absincif cuttype = zero, ppos_cax_linif gcode = one, plinoutelse, prapidoutpcom_moveac_msng #Single tool subprogram callptlchg #Tool change pcuttypetoolchng = one if mi1 = one, #Work coordinate systempfbld, n, *sg28ref, "X0.", "Y0.", epfbld
26、, n, "G92", *xh, *yh, *zh, epbld, n, "M01", epcom_movebc_mmlt #Multiple tool subprogram callptoolcommentcommentpcanresult = newfs(15, feed) #Reset the output format for 'feed'pbld, n, *t, "M6", epindexsav_absinc = absinc if mi1 > one, absinc = zeropcan1, pbld
27、, n, *sgcode, *sgabsinc, pwcs, pfxout, pfyout, pfcout, *speed, *spindle, pgear, strcantext, epbld, n, "G43", *tlngno, pfzout, scoolant, next_tool, eabsinc = sav_absincpcom_moveatoolchng = zero c_msng #Single tool subprogram callpretract #End of tool path, toolchange sav_absinc = absinc abs
28、inc = onesav_coolant = coolantcoolant = zero#cc_pos is reset in the toolchange herecc_pos = zero gcode = zeropcanpbld, n, sccomp, *sm05, psub_end_mny, epcan1, pbld, n, sgabsinc, sgcode, *sg28ref, "Z0.", scoolant, s trcantext, epbld, n, *sg28ref, "X0.", "Y0.", protretinc
29、, epcan2absinc = sav_absinc coolant = sav_coolantprotretinc #Reset the C axis revolution counterif frc_cinit & rot_on_x,rev = zerosav_rev = zerocabs = zerocsav = zeroindx_out = zeroif index, e, pindxcalc, pindexelse, *cabsprvcabs = zero!csav, !cabspeof0 #End of file for tool zero peofpeof #End of file for non-zero tool pretractcomment#Remove pound character to output first tool with staged tools#if stagetool = one, pbld, n, *first_tool, en, "M30", e mergesubclearsubmergeaux
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1