1、1MASTERCAM 后处理修改Mstercam 的的默认后处理是 MPFAN.PST (M 的 后处理的扩展名为 PST),其中定义了 NC 程序的格式,工艺参数,接口的一些功能等,有些东西是不能改动的,其实我们主要改动的就是几个方面:1 程序的开头和结尾。系统不一样,他的程序的开头和结尾可能就存在不同2 三轴和四轴的添加和改动3 刀具的设置(不好意思,这是我觉得需要改的原因,大家不要扔西瓜皮)首先用记事本打开 MPFAN.PST 文件(这个文件在 D:Mcam9MillPosts 中)如图22 下面主要讲讲程序的开头的改动:(1) G54 的改动 按 CTRL+F 查出 Start of
2、File and Toolchange Setup 这一选项:你会在下面的程序中找到pbld, n, *sgcode, *sgplane, “G40“, “G49“, “G80“, *sgabsinc, e将其改为pbld, n, *sgcode, *sgplane, “G40“, “G49“, “G80“, *sgabsinc,“G54“, e程序将由G0G17G40G49G80G90改为G0G17G40G49G80G90G54 其中“”表示强制输出(2) G21 的改动找到pbld, n, *smetric, e 程序行在其前面加一# 将他设置为注释部分,即可不输出 G21 代码 大家应该
3、都明白 G21 是代表公制,G20 是代表英制(3) 时间和程序名的改动大家可以搜索 DATE=DD-MM-YY,这一行大家一看就明白了吧,自己想用什么代替就用什么代替,然后出一个程序一看就明白了4)刀具的设置MASTER 默认的 POST 的刀具是不显示刀具的半径和角部圆角的,在文件中加入下面的语句,就可以在程序的开头出现刀具的半径表示,方便检查刀具与程序中的刀具设置是否一致!3模具加工一边情况下用不上四轴,所以在程序中可以取消 A 代码:查找结果所在行为: if stagetool = zero, pbld, n, *t, “M6“, e 将其修改为: if stagetool = zer
4、o, e pbld, n, *t, “M6“, 另一个换刀的位置所在行为: pbld, n, *t, “M6“, e 将其删除或改为注释行4进行模具加工时,需从 G54G59 的工件坐标系指令中指定一个,最常用的是 G54。部分控制器使用 G92 指令确定工件坐标系。对刀时需定义工件坐标原点,原点的机械坐标值保存在 CNC 控制器的 G54G59 指令参数中。CNC 控制器执行 G54G59 指令时,调出相应的参数用于工件加工。采用系统缺省的后处理文件时,相关参数设置正确的情况下可输出 G55G59 指令,但无法实现 G54 指令的自动输出。单击 查找 按钮,系统弹出查找对话框,输入“forc
5、e_wcs”,单击 按钮,查找结果所在行为:force_wcs : no #Force WCS output at every toolchange?将 no 改为 yes,修改结果为:force_wcs : yes #Force WCS output at every toolchange?输出的 NC 文件修改前对应位置指令为:N106G0G90X16.Y-14.5A0.S2200M3修改后变为:N106G0G90G54X16.Y-14.5A0.S2200M3MP - 编写后处理的语言。是 Mastercam 大牛自己写的一种语言喔。它的好处是,结构简单,功能强大。缺点是,文档少,功能复杂
6、抽象,学起来实在不容易。真正从头到尾了解 MP 语言的,全世界找不出 20 个。5整数 - 不用我说了吧。实数 - 带小数点的。字符串 - 也就是一串字符, ABCDE123 这样的后处理块 - 后处理的基本功能模块,就是一系列实现某一个或一些功能的后处理指令,写在一起,给起个名字,以后用起来方便。后处理块分两种,Mastercam 系统预定义的,和用户自定义的。在 X 版以前,这两种 后处理 块在外观上没啥区别,要查看手册才能知道到底属于哪一种。从 X 版开始,系统预定义的后处理块后面加了个“$“,像 “psof$“,“pcomment$“。这样就容易区分了,而且,如果用 Mastercam
7、 自带的文本编辑器打开,预定义后处理块会用蓝色字符显示。后处理块中的每一行叫做后处理命令行。整数,实数和字符串变量也有系统预定义的和用户自定义的,在 X 版里区别也是一样,系统预定义的后面有个“$“,像“e$“ 。逻辑表达式,返回值为 0 或 1。NCI 文件,嗯,这个比较重要,是 Mastercam 输出机器代码时生成的一个中间文件,文本格式的。Mastercam 输出的所有刀路信息都在这里面了。这个文件就是后处理器的输入,而数控控制器所能用的程序就是后处理器的输出。说白了,后处理器就是一个从 NCI 到机器程序的翻译器,因为同一个 NCI。在 X 以前的版本里,有 NCI 就搞定一切,但从
8、 X 版本开始,由于 Mastercam 系统里加入了机器定义(Machine Definition)和控制器定义(Control Definition),MP 语言还要和这两个东东发生关系。NCI。这个 NCI 么,其实结构是非常简单的。打开一个 NCI 文件,会发现它是以每两行作为一个功能结构。MP 语言在读取 NCI 的时候也是两行两行的读取的。例如:141 1.5 2.5 -0.125 3.2 每两行中的第一行,只有一个参数,而且和控制器代码(G Code)有不少相似之处,比方说, 1 代表直线移动,0 代表快速移动,2 代表顺时针圆弧移动,81 代表钻孔过程开始等等。但是不可将这两种
9、 G Code 混淆起来。两行中的第二行,就是对应第一行 G Code 的参数行。每个 G Code 所对应的参数各不相同,而且同一个 G Code 在不同的加工过程(车削,铣削等)中参数也不相同。在上面的例子中,具体的每个参数的意义如下:铣削参数 含义 对应系统变量 预定值1 刀径补偿 cc / ccomp 40-取消 41-左补偿 42-右补偿 140-最后移动时取消2 X 位置 x / xnci3 Y 位置 y / ynci4 Z 位置 z / znci5 进刀速率 fr 正值 -速率 -1-不变 -2-快速移动6(可选) 控制标志 cur_cflg 6车削参数 含义 对应系统变量 预定
10、值1 刀径补偿 cc / ccomp 40-取消 41-左补偿 42-右补偿 140-最后移动时取消2 Z 位置 z / znci3 X 位置 x / xnci4 置空5 进刀速率 fr 正值 -每分钟进给量 负值-每周进给量6(可选) 控制标志 cur_cflg MP 语言在处理刀路信息的时候,先读取 NCI 的 G Code, 然后根据读取到的 G Code 去调用相应的预定义后处理块。比方说,如果读到的 G Code 是 0,就会调用 prapid 或 pzrapid。然后,第二行的参数就会储存到相应的系统预定义变量中,用来输出或做相关的计算。大体上这就是Mstercam 用后处理把 N
11、CI 翻译成机器代码的简要过程。不过,说起来挺容易,具体里面怎么跑的可没法子一句话说得清楚。这么多的 NCI 代码,这么多的后处理块,看起来都 TMD 头晕。如果各位老大不怕头晕的话,嘿嘿,下面我来讲怎么输出相关信息来了解这整个翻译的过程。用文本编辑器打开后处理器,找到这一块:fastmode : yes #Enable Quick Post Processing, (set to no for debug)bug1 : 2 #0=No display, 1=Generic list box, 2=Editorbug2 : 40 #Append postline labels, non-zer
12、o is column position? bug3 : 0 #Append whatline number to each NC line?bug4 : 1 #Append NCI line number to each NC line?bug1,不要动他, 2 就好了。bug2 比较重要。如果是一个非零正值的话,在输出机器代码的时候,会把输出这一行所被调用的第一个后处理块的名称附上。因为一个后处理块可以调用其他的后处理块,所以如果还有其他的后处理块被调用的话,最后一个被调用的后处理块的名称也会被附上。这些附加信息输出的起始列数就是所属入的非零正值数。在上面的例子中,第一个和最后一个被调用的
13、后处理块名称输出开始于第四十列。如果是一个非零负值的话,所有被调用的后处理块名称都会被输出,不论有没有输出机器代码。这是非常有用的,有助于了解后处理里面的逻辑是怎么跑的,但是,结果有时候会变得非常非常的长。当然,如果 bug2 是零的话这些附加信息就没有了。bug3,不要管他,没啥用,历史原因留在这里,保持零就好了bug4,另一个很重要的参数。如果为 1 的话,会输出当前所到的 NCI 文件的行数。对比 NCI 文件就可以知道后处理逻辑跑到什么地方了。设为其他值另有用处,以后再说。以上这些调试信息,如果 fastmode 是 yes 或 1 的时候是不会出现的。把 fastmode 改为 no
14、 或0,调试信息就会出现在输出里面了。这是 V9 版本的。如果用的是 X 的话,改 fastmode 是没有用的。X 和 V9 很大的不同就是很多后处理开关变量被移到机器定义(Machine Definition)和控制器定义(Control Definitoin)中了,fastmode 就是其中之一。改动 Control Definiton - NC Output - Post Debug Information 来输出调试信息。还有,如果是 X 的话,所有预定义变量名和 后处理块后面都要加“$“。Mastercam 软件是由美国 CNC SOFTWARE 公司研制开发的基于微机的 CAD(
15、计算机辅助设计)和 CAM(计算机辅助制造)系统。自 1984 年诞生以来,就以其强大的加工功能闻名于世。由于其较好的性能价格比(对硬件的要求不高,操作灵活,易学易用,能使企业很快见到效益) ,7是工业界和学校广泛采用的 CAD 和 CAM 系统。后置处理文件简称后处理文件,是一种可以由用户以回答问题的形式自行修改的文件,其扩展名为.PST 。NC 程序的生成受软件的后置处理程序的控制,不同数控系统的数控机床对应于不同的后置处理程序。Mastercam 的后置处理程序内定成适应日本 FANUC 控制器的通用格式。在具体应用软件进行编程之前,一般要对当前的后处理程序进行修改和设定。国产的数控系统
16、一般在 Mastercam 中没有对应的 .PST 后处理文件。我校的数控铣床采用的是国产的数控系统(HX2000M 数控系统) ,同样在 Mastercam 中也没有对应的.PST 后处理文件。Mastercam 生成的 NC 代码需经多处修改后才能使用,极为不便。在数控教学的实践中我渐渐有这样的想法,能不能针对我校的数控系统开发专用的 Mastercam后处理程序,更好地进行数控实习教学呢?经过一段时间的摸索,我尝试着对 Mastercam 的后处理程序进行了相应的修改。我使用的是 Mastercam7.1 的版本。首先分析了学校采用 HX2000M 系统的数控铣床的特点和它的 G、M 代
17、码的格式。该系统不具有换刀功能,而且圆弧只能以 I、J 、K 的形式编程。接着我反复比较 Mastercam 内置的几十种后处理程序所生成的 NC 程序,发现其中由 MP-EZ.PST后处理程序生成的 NC 程序与 HX2000M 编程格式最为相近。我想格式相同之处越多,后处理程序修改的地方也就相对越少。于是我确定把 MP-EZ.PST 后处理程序作为我尝试修改的后处理程序。我用 WINDOWS 自带的写字板,打开 MP-EZ.PST 后处理程序,进行编辑修改。Mastercam7.1 系统的 MP-EZ.PST 后处理文件由下面几个模块组成。1、 Annotation(注释) 。对后处理文件
18、及其设定方法作一般性介绍,此部分内容一般都不需要修改。2、 DEBUG/PROGRAM SWITCHES, debugging and program switches (系统程序规划)。此部分是 MASTERCAM 的后处理系统规划, 一般不需要修改。3、 Work coordinate output, user defined (工作设定) 。把其中的pg92_sof # G92 coordinate setting at start (G92 的设定)“/“, n, “G91“, “G28“, “Z0.“, e“/“, n, “G28“, “X0.“, “Y0.“, e“/“, n, *
19、sgwcs, *xh, *yh, *zh, e改成:pg92_sof # G92 coordinate setting at startn, *sgwcs, *xh, *yh, *zh, e (设定工件坐标系)n, *speed, *spdlon, prange (设定主轴转速)删除了 HX2000M 数控系统中没有的 “/“、“G28“ 。4、 POSTLINES, PRE-DEFINED - Postline names are re-assigned.(文件起始和刀具交换设置)。 同样把其中的pheader psof peof 后面的内容改成如下的格式(原内容略去):pheader #
20、File header“ % p“,“ (“, progname, “)“, e 注意: “%“,程式开头的百分号 ,不能改 ,FANUC 系统专用,此处自动生成 NC 程序后要作惟一修改,删除。 psof # Start of file for non-zero tool number pinit (刀具开始加工时的格式)prognocommentif mi1 zero, pg92_outif stagetool = one, n, *first_tool, “M06“n, “M02“ (将原“M30“改成“M02“,程序结束)由于学校的数控系统不具有换刀功能,因而有关换刀的设定就可以省略修
21、改。5、 Numbered questions for Mastercam(问题参数设定)。 一般不需更改。经过上述修改后的 MP-EZ.PST 后处理程序所生成的 NC 程序,除了删除程序开始的“%“,其它不需要作任何修改,可以直接在我校采用 HX2000M 系统的数控铣床上使用。极大的方便了我在数控铣床实习方面的教学。1) annotation(注释).对后处理文件及其设定方法作一般性介绍.此部分内容一般都不用更改.以下是截取的部分注释:(注释前都带#号,系统在执行代码处理时是不会读取前面带 #号的语句的.)# post name :mpfan# product :mill# machin
22、e name :generic fanuc# control name :generic fanuc# description :generic fanuc mill post# associated post :none# mill/turn :no# 4-axis/axis subs. :yes# 5-axis :no# subprograms :yes# executable :mp v9.0# warning:this post is generic and is intended for modification to# the machine tool requirements a
23、nd personal preference.2) debugging and factory set program switches (系统程序规划). 此部分是 mastercam 版本的后处理系统规划,每个版本都大同小异,一般不需更改.以下截取的是 9.0 版的)m_one :-1 #define constantzero :0 #define constantone :1 #define constanttwo :2 #define constantthree :3 #define constant four :4 #define constant five :5 #define c
24、onstantc9k :999 #define constantfastmode :yes #enable quick post processing, (set to no for debug)bug1 :2 #0=no display, 1=generic list box, 2=editorbug2 :40 #append postline labels, non-zero is column position? bug3 :0 #append whatline no. to each nc line?bug4 :1 #append nci line no. to each nc lin
25、e?9whatno :yes #do not perform whatline branches? (leave as yes)get_1004 :1 #find gcode 1004 with getnextop?rpd_typ_v7 :0 #use version 7 style contour flags/processing?strtool_v7 :2 #use version 7+ toolname?tlchng_aft :2 #delay call to toolchange until move line cant_tlchng :1 #ignore cantext entry
26、on move with tlchng_aft newglobal :1 #error checking for global variablesgetnextop :0 #build the next variable table 3) general output settings(常规后处理设定). 此部分可视情况更改,以适合机台或个人使用.以下截取的是 9.0 版的一些常规设定.冒号前面的是变量,冒号后面的是设定值,#号后面是注解(一般是说明0 代表什么,1 代表什么,2 代表什么,yes 或 no 应该不用翻译了吧?!)英文后面的中文注解是我加进去的,翻译的不是很详细,但相信大家能看
27、懂.没有翻译的就表示我根本不会或此设定不常用.嘿嘿. sub_level :1 #enable automatic subprogram support(启用自动支持子程式)breakarcs :2 #break arcs, 0 = no, 1 = quadrants, 2 = 180deg. max arcs(打断圆弧方式)arcoutput :1 #0 = ijk, 1 = r no sign, 2 = r signed neg. over 180(转出圆弧方式)arctype :2 #arc center 1=abs, 2=st-ctr, 3=ctr-st, 4=unsigned inc
28、.do_full_arc :0 #allow full circle output? 0=no, 1=no (是否转成整圆方式)helix_arc :0 #support helix arc output, 0=no, 1=all planes,2=xy plane only(是否转成螺旋弧)arccheck :1 #check for small arcs, convert to linear(是否检测小圆弧并将其转成线)atol :.01 #angularity tolerance for arccheck = 2(圆弧角度公差 )ltol :.002 #length tolerance
29、for arccheck = 1(圆弧长度公差)vtol :.1 #system tolerance(系统公差)maxfeedpm :500 #limit for feed in inch/min(最大进给-英制)ltol_m :.05 #length tolerance for arccheck = 1, metric(圆弧长度公差-公制)vtol_m :.0025 #system tolerance, metric(系统公差-公制)maxfeedpm_m :10000 #limit for feed in mm/min(最大进给-公制)force_wcs :no #force wcs ou
30、tput at every toolchange?(换刀时是否转出 wcs 坐标)spaces :0 #number of spaces to add between fields(两行之间是否加入空格)omitseq :yes #omit sequence numbers?(是否省略序列号)seqmax :9999 #max. sequence number(最大序列号 )stagetool :0 #0 = do not pre-stage tools, 1 = stage tools(是否沿用刀具)use_gear :0 #output gear selection code, 0=no,
31、 1=no (是否转成齿轮代码) max_speed :10000 #maximum spindle speed(最大转速 )min_speed :50 #minimum spindle speed(最小转速)nobrk :no #omit breakup of x, y & z rapid movesprogname :0 #use uppercase for program name (sprogname)(程式名称是否使用大写)4) 中间还有一些例如:common user-defined(指令设定 ),format statements(格式报告),definitions for nc
32、 output(nc 代码限定),error messages( 出错信息),toolchange / nc output variable formats(刀具变量)等基本上都是系统固定格式,不需要更改.在此就不再详述.当然,我也不建议你更改这些项目,如果你改错的话,系统很可能不执行或机台报警.5) start of file and toolchange setup(文本内容和换刀设定).此部分内容很重要,很多使用者都从这里10着手把程式改成自己需要的格式.以下截取的是 9.0 版的部分内容,其中有些是我根据自己需要更改的,中文是我加的注解.引号内是可以更改的内容.“%“, e(程式开头的
33、百分号)*progno, e(程式号码)comment(注解,可有可无,如不需要则删除此句)“(program name - “, sprogname, “)“, e(程式名称,可有可无)“(“, *tnote, *toffnote, *tlngnote, *tldia, “)“, e(刀具直径及补正参数显示,如不需要则把此整句删除)“(date=dd-mm-yy - “, date, “ time=hh:mm - “, time, “)“, e(程式日期显示,可有可无)pbld, n, *“/m99“, e (我自己加的一句,如不需要则整句删除,而不是只删除引号内的内容)pbld, n, *
34、“g90“, “g92“,“x0.y0.z10.“, e(定义加工原点,也可以改为 g54 坐标)sav_absinc = absinc (绝对坐标系 ). (中间省略的部分是系统根据刀路自动转出的程式,一般不必改).(以下几句是出现在程式尾,可以根据需要添加或删除) n, “z10.“, e (加工完成后提刀至安全高度)n, “x0.y0.“, e (归零)n, “g91“, e (转用相对坐标)n, “m99“, e (回到主程式)mergesub(此四句为程式结尾固定语句,不必理它)clearsubmergeauxclearaux“%“, e(程式尾 ) AAAAAAAAAAAAAAAA
35、AAAAAAAAAAAAAAAAAAAAAA1、增加 G54 指令(方法一): 采用其他后处理文件(如 MP_EZ.PST)可正常输出 G54 指令。由于 FANUC.PST 后处理文件广泛采用,这里仍以此文件为例进行所有修改。其他后处理文件内容有所不同,修改时根据实际情况调整。 选择【File】【Edit 】【PST】命令,系统弹出读文件窗口,选择 Mpfan.PST 文件,系统弹出如下图所示编辑器。 单击 按钮,系统弹出查找对话框,输入“G49”,如下图所示: 单击 按钮,查找结果所在行为: pbld, n, *sgcode, *sgplane, “G40“, “G49“, “G80“, *sgabsinc, e 插入 G54 指令到当前行,将其修改为: pbld, n, *sgcode, *sgplane, “G40“, “G49“, “G80“, *sgabsinc, “G54“,e 输出的 NC 文件修改前对应位置指令为: N102G0G17G40G49G80G90 修改后变为: N102G0G17G40G49G80G90G54 查找当前行的上一行: