MASTERCAM后处理修改
Mstercam的的默认后处理是MPFAN.PST (M的后处理的扩展名为PST),其中定义了NC程序的格式,工艺参数,接口的一些功能等,有些东西是不能改动的,其实我们主要改动的就是几个方面:
1 程序的开头和结尾。系统不一样,他的程序的开头和结尾可能就存在不同
2 三轴和四轴的添加和改动
3 刀具的设置
(不好意思,这是我觉得需要改的原因,大家不要扔西瓜皮)
首先用记事本打开MPFAN.PST文件(这个文件在D:\Mcam9\Mill\Posts中)如图
2 下面主要讲讲程序的开头的改动:
(1)G54的改动
按CTRL+F查出Start of 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代码大家应该都明白G21是代表公制,G20是代表英制
(3) 时间和程序名的改动
大家可以搜索DATE=DD-MM-YY,这一行大家一看就明白了吧,自己想用什么代替就用什么代替,然后出一个程序一看就明白了
4)刀具的设置
MASTER默认的POST的刀具是不显示刀具的半径和角部圆角的,在文件中加入下面的语句,就可以在程序的开头出现刀具的半径表示,方便检查刀具与程序中的刀具设置是否一致!
模具加工一边情况下用不上四轴,所以在程序中可以取消A代码:查找结果所在行为:
if stagetool >= zero, pbld, n, *t, "M6", e将其修改为:
if stagetool >= zero, e #pbld, n, *t, "M6",
另一个换刀的位置所在行为:
pbld, n, *t, "M6", e将其删除或改为注释行
进行模具加工时,需从G54~G59的工件坐标系指令中指定一个,最常用的是G54。部分控制器使用G92指令确定工件坐标系。对刀时需定义工件坐标原点,原点的机械坐标值保存在CNC控制器的G54~G59指令参数中。CNC控制器执行G54~G59指令时,调出相应的参数用于工件加工。采用系统缺省的后处理文件时,相关参数设置正确的情况下可输出G55~G59指令,但无法实现G54指令的自动输出。单击查找按钮,系统弹出查找对话框,输入“force_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.S2200M3
MP - 编写后处理的语言。是Mastercam大牛自己写的一种语言喔。它的好处是,结构简单,功能强大。缺点是,文档少,功能复杂抽象,学起来实在不容易。真正从头到尾了解MP语言的,全世界找不出20个。
整数- 不用我说了吧。
实数- 带小数点的。
字符串- 也就是一串字符,ABCDE123这样的
后处理块- 后处理的基本功能模块,就是一系列实现某一个或一些功能的后处理指令,写在一起,给起个名字,以后用起来方便。后处理块分两种,Mastercam系统预定义的,和用户自定义的。在X版以前,这两种后处理块在外观上没啥区别,要查看手册才能知道到底属于哪一种。从X版开始,系统预定义的后处理块后面加了个"$",像"psof$","pcomment$"。这样就容易区分了,而且,如果用Mastercam自带的文本编辑器打开,预定义后处理块会用蓝色字符显示。后处理块中的每一行叫做后处理命令行。
整数,实数和字符串变量也有系统预定义的和用户自定义的,在X版里区别也是一样,系统预定义的后面有个"$",像"e$"。
逻辑表达式,返回值为0或1。
NCI文件,嗯,这个比较重要,是Mastercam输出机器代码时生成的一个中间文件,文本格式的。Mastercam输出的所有刀路信息都在这里面了。这个文件就是后处理器的输入,而数控控制器所能用的程序就是后处理器的输出。说白了,后处理器就是一个从NCI到机器程序的翻译器,因为同一个NCI。在X以前的版本里,有NCI就搞定一切,但从X版本开始,由于Mastercam系统里加入了机器定义(Machine Definition)和控制器定义(Control Definition),MP语言还要和这两个东东发生关系。
NCI。这个NCI么,其实结构是非常简单的。打开一个NCI文件,会发现它是以每两行作为一个功能结构。MP语言在读取NCI的时候也是两行两行的读取的。例如:
1
41 1.5 2.5 -0.125 3.2
每两行中的第一行,只有一个参数,而且和控制器代码(G Code)有不少相似之处,比方说,1代表直线移动,0代表快速移动,2代表顺时针圆弧移动,81代表钻孔过程开始等等。但是不可将这两种G Code混淆起来。两行中的第二行,就是对应第一行G Code的参数行。每个G Code所对应的参数各不相同,而且同一个G Code在不同的加工过程(车削,铣削等)中参数也不相同。在上面的例子中,具体的每个参数的意义如下:
铣削
参数含义对应系统变量预定值
1 刀径补偿cc / ccomp 40-取消41-左补偿42-右补偿140-最后移动时取消
2 X位置x / xnci
3 Y位置y / ynci
4 Z位置z / znci
5 进刀速率fr 正值-速率-1-不变-2-快速移动
6(可选) 控制标志cur_cflg
车削
参数含义对应系统变量预定值
1 刀径补偿cc / ccomp 40-取消41-左补偿42-右补偿140-最后移动时取消
2 Z位置z / znci
3 X位置x / xnci
4 置空
5 进刀速率fr 正值-每分钟进给量负值-每周进给量
6(可选) 控制标志cur_cflg
MP语言在处理刀路信息的时候,先读取NCI的G Code, 然后根据读取到的G Code去调用相应的预定义后处理块。比方说,如果读到的G Code是0,就会调用prapid或pzrapid。然后,第二行的参数就会储存到相应的系统预定义变量中,用来输出或做相关的计算。大体上这就是Mstercam 用后处理把NCI翻译成机器代码的简要过程。
不过,说起来挺容易,具体里面怎么跑的可没法子一句话说得清楚。这么多的NCI代码,这么多的后处理块,看起来都TMD头晕。如果各位老大不怕头晕的话,嘿嘿,下面我来讲怎么输出相关信息来了解这整个翻译的过程。用文本编辑器打开后处理器,找到这一块:
fastmode : yes #Enable Quick Post Processing, (set to no for debug)
bug1 : 2 #0=No display, 1=Generic list box, 2=Editor
bug2 : 40 #Append postline labels, non-zero 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比较重要。如果是一个非零正值的话,在输出机器代码的时候,会把输出这一行所被调用的第一个后处理块的名称附上。因为一个后处理块可以调用其他的后处理块,所以如果还有其他的后处理块被调用的话,最后一个被调用的后处理块的名称也会被附上。这些附加信息输出的起始列数就是所属入的非零正值数。在上面的例子中,第一个和最后一个被调用的后处理块名称输出开始于第四十列。
如果是一个非零负值的话,所有被调用的后处理块名称都会被输出,不论有没有输出机器代码。这是非常有用的,有助于了解后处理里面的逻辑是怎么跑的,但是,结果有时候会变得非常非常的长。当然,如果bug2是零的话这些附加信息就没有了。
bug3,不要管他,没啥用,历史原因留在这里,保持零就好了
bug4,另一个很重要的参数。如果为1的话,会输出当前所到的NCI文件的行数。对比NCI文件就可以知道后处理逻辑跑到什么地方了。设为其他值另有用处,以后再说。
以上这些调试信息,如果fastmode是yes或1的时候是不会出现的。把fastmode改为no或0,调试信息就会出现在输出里面了。
这是V9版本的。如果用的是X的话,改fastmode是没有用的。X和V9很大的不同就是很多后处理开关变量被移到机器定义(Machine Definition)和控制器定义(Control Definitoin)中了,fastmode 就是其中之一。改动Control Definiton -> NC Output -> Post Debug Information来输出调试信息。还有,如果是X的话,所有预定义变量名和后处理块后面都要加"$"。
Mastercam软件是由美国CNC SOFTWARE 公司研制开发的基于微机的CAD(计算机辅助设计)和CAM(计算机辅助制造)系统。自1984年诞生以来,就以其强大的加工功能闻名于世。由于其较好的性能价格比(对硬件的要求不高,操作灵活,易学易用,能使企业很快见到效益),
是工业界和学校广泛采用的CAD和CAM系统。
后置处理文件简称后处理文件,是一种可以由用户以回答问题的形式自行修改的文件,其扩展名为.PST。NC程序的生成受软件的后置处理程序的控制,不同数控系统的数控机床对应于不同的后置处理程序。Mastercam的后置处理程序内定成适应日本FANUC控制器的通用格式。在具体应用软件进行编程之前,一般要对当前的后处理程序进行修改和设定。国产的数控系统一般在Mastercam中没有对应的.PST后处理文件。
我校的数控铣床采用的是国产的数控系统(HX2000M数控系统),同样在Mastercam中也没有对应的.PST后处理文件。Mastercam生成的NC代码需经多处修改后才能使用,极为不便。在数控教学的实践中我渐渐有这样的想法,能不能针对我校的数控系统开发专用的Mastercam后处理程序,更好地进行数控实习教学呢?经过一段时间的摸索,我尝试着对Mastercam的后处理程序进行了相应的修改。
我使用的是Mastercam7.1的版本。首先分析了学校采用HX2000M系统的数控铣床的特点和它的G、M代码的格式。该系统不具有换刀功能,而且圆弧只能以I、J、K的形式编程。接着我反复比较Mastercam内置的几十种后处理程序所生成的NC程序,发现其中由MP-EZ.PST后处理程序生成的NC程序与HX2000M编程格式最为相近。我想格式相同之处越多,后处理程序修改的地方也就相对越少。于是我确定把MP-EZ.PST后处理程序作为我尝试修改的后处理程序。我用WINDOWS自带的写字板,打开MP-EZ.PST后处理程序,进行编辑修改。
Mastercam7.1系统的MP-EZ.PST后处理文件由下面几个模块组成。
1、Annotation(注释)。对后处理文件及其设定方法作一般性介绍,此部分内容一般都不需要修改。
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, *sgwcs, *xh, *yh, *zh, e
改成:
pg92_sof # G92 coordinate setting at start
n, *sgwcs, *xh, *yh, *zh, e (设定工件坐标系)
n, *speed, *spdlon, prange (设定主轴转速)
删除了HX2000M数控系统中没有的"/"、"G28" 。
4、POSTLINES, PRE-DEFINED - Postline names are re-assigned.
(文件起始和刀具交换设置)。同样把其中的
pheader psof peof 后面的内容改成如下的格式(原内容略去):
pheader # File header
" % p"," (", progname, ")", e
注意:"%",程式开头的百分号,不能改,FANUC系统专用,此处自动生成NC程序后要作惟一修改,删除。
psof # Start of file for non-zero tool number
pinit (刀具开始加工时的格式)
progno
comment
if mi1 <= three, pg92_sof
if stagetool = zero, n, *t, pcoolon
if stagetool = one, n, *next_tool, "M06"
n, "G90", "G00", *zr, e (Z轴快速定位)
n, "G00", pwcs, *xr, *yr, e (X轴、Y轴快速定位)
prv_gcode = zero
peof # End of file for non-zero tool (刀具加工结束时的格式)
n, "M05" (主轴停止)
n, "G00", "X0", "Y0.", pcooloff
if mi1 <= three & mi1 > zero, pg92_out
if stagetool = one, n, *first_tool, "M06"
n, "M02" (将原"M30"改成"M02",程序结束)
由于学校的数控系统不具有换刀功能,因而有关换刀的设定就可以省略修改。
5、Numbered questions for Mastercam(问题参数设定)。一般不需更改。
经过上述修改后的MP-EZ.PST后处理程序所生成的NC程序,除了删除程序开始的"%",其它不需要作任何修改,可以直接在我校采用HX2000M系统的数控铣床上使用。极大的方便了我在数控铣床实习方面的教学。
1)annotation(注释).对后处理文件及其设定方法作一般性介绍.此部分内容一般都不用更改.
以下是截取的部分注释:(注释前都带#号,系统在执行代码处理时是不会读取前面带#号的语句的.) # post name :mpfan
# product :mill
# machine 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 and personal preference.
2) debugging and factory set program switches (系统程序规划).此部分是mastercam版本的后处理系统规划,每个版本都大同小异,一般不需更改.以下截取的是9.0版的)
m_one :-1 #define constant
zero :0 #define constant
one :1 #define constant
two :2 #define constant
three :3 #define constant
four :4 #define constant
five :5 #define constant
c9k :999 #define constant
fastmode :yes #enable quick post processing, (set to no for debug)
bug1 :2 #0=no display, 1=generic list box, 2=editor
bug2 :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 line?
whatno :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 on move with tlchng_aft
newglobal :1 #error checking for global variables
getnextop :0 #build the next variable table
3)general output settings(常规后处理设定).此部分可视情况更改,以适合机台或个人使用.以下截取的是9.0版的一些常规设定.冒号前面的是变量,冒号后面的是设定值,#号后面是注解(一般是说明0代表什么,1代表什么,2代表什么,yes或no应该不用翻译了吧?!)英文后面的中文注解是我加进去的,翻译的不是很详细,但相信大家能看懂.没有翻译的就表示我根本不会或此设定不常用....嘿嘿... 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.
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 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 output 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, 1=no (是否转成齿轮代码)
max_speed :10000 #maximum spindle speed(最大转速)
min_speed :50 #minimum spindle speed(最小转速)
nobrk :no #omit breakup of x, y & z rapid moves
progname :0 #use uppercase for program name (sprogname)(程式名称是否使用大写)
4)中间还有一些例如:common user-defined(指令设定),format statements(格式报告),definitions for nc output(nc代码限定),error messages(出错信息),toolchange / nc output variable formats(刀具变量)等基本上都是系统固定格式,不需要更改.在此就不再详述.当然,我也不建议你更改这些项目,如果你改错的话,系统很可能不执行或机台报警......
5) start of file and toolchange setup(文本内容和换刀设定).此部分内容很重要,很多使用者都从这里
着手把程式改成自己需要的格式.以下截取的是9.0版的部分内容,其中有些是我根据自己需要更改的,中文是我加的注解.引号内是可以更改的内容.
"%", e(程式开头的百分号)
*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, *"g90", "g92","x0.y0.z10.", e(定义加工原点,也可以改为g54坐标)
sav_absinc = absinc (绝对坐标系)
......
(中间省略的部分是系统根据刀路自动转出的程式,一般不必改)
......
(以下几句是出现在程式尾,可以根据需要添加或删除)
n, "z10.", e (加工完成后提刀至安全高度)
n, "x0.y0.", e (归零)
n, "g91", e (转用相对坐标)
n, "m99", e (回到主程式)
mergesub(此四句为程式结尾固定语句,不必理它)
clearsub
mergeaux
clearaux
"%", e(程式尾)
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
1、增加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
查找当前行的上一行:
pbld, n, *smetric, e
将其整行删除,或加上“#”成为注释行:
#pbld, n, *smetric, e
修改后G21指令不再出现,某些控制器可不用此指令。注意修改时保持格式一致。G21指令为选择公制单位输入,对应的英制单位输入指令为G20。
2、增加G54指令(方法二):
单击按钮,系统弹出查找对话框,输入“force_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.S2200M3
前一方法为强制输出固定指令代码,如需使用G55~G59指令时,有所不便。多刀路同时输出时,只在整个程序中出现一次G54指令。后一方法同其他后处理文件产生G54指令的原理相同,多刀路同时输出时,每次换刀都会出现G54指令,也可根据参数自动转换成G55~G59指令。
输出三轴加工中心程序的FANUC后处理文件为MP_EZ.PST,输出4轴加工中心程序的三菱控制器后处理文件为MP520AM.PST。
3、删除第四轴数据“A0.”,以适应三轴加工中心:
单击按钮,系统弹出查找对话框,输入“Rotary Axis”,单击按钮,查找结果所在行为:164. Enable Rotary Axis button? y
将其修改为:
164. Enable Rotary Axis button? n
修改后第四轴数据不再出现。
4、删除刀具号、换刀指令、回参考点指令,适应无刀库的数控铣机床:
单击按钮,系统弹出查找对话框,输入“M6”,单击按钮,查找结果所在行为:
if stagetool >= zero, pbld, n, *t, "M6", e
将其修改为:
if stagetool >= zero, e #pbld, n, *t, "M6",
另一个换刀的位置所在行为:
pbld, n, *t, "M6", e
将其删除或改为注释行:
#pbld, n, *t, "M6", e
修改后换刀指令行不再出现,通常修改第一个出现“M6”指令的位置即可。
单击按钮,系统弹出查找对话框,输入“*sg28ref”,单击按钮,查找结果所在行为:
pbld, n, sgabsinc, sgcode, *sg28ref, "Z0.", scoolant, e
pbld, n, *sg28ref, "X0.", "Y0.", protretinc, e
将其修改为:
pbld, n, scoolant, e
#pbld, n, *sg28ref, "X0.", "Y0.", protretinc, e
输出的NC文件修改前对应位置指令为:
N116G91G28Z0.M9
修改后变为:
N116M9
PST文件中另有两个类似位置,如使用G92指令确定工件坐标,可对其适当修改。加工结束后,机床各轴不回参考点,便于手动换刀时节省时间。
5、删除NC文件的程序名、注释行:
单击按钮,系统弹出查找对话框,输入“%”,单击按钮,查找结果所在行为:
"%", e
*progno, e
"(PROGRAM NAME - ", progname, ")", e
"(DATE=DD-MM-YY - ", date, " TIME=HH:MM - ", time, ")", e
将其删除或改为注释行:
"%", e
#*progno, e
#"(PROGRAM NAME - ", progname, ")", e
#"(DATE=DD-MM-YY - ", date, " TIME=HH:MM - ", time, ")",
输出的NC文件修改前对应位置指令为:
O0010
(PROGRAM NAME - A2)
(DATE=DD-MM-YY - 25-12-04 TIME=HH:MM - 10:45)
修改后以上指令行不再出现。
单击按钮,系统弹出查找对话框,输入“pstrtool”,单击按钮,查找结果所在行为:
"(", pstrtool, *tnote, *toffnote, *tlngnote, *tldia, ")", e
将其删除或改为注释行:
#"(", pstrtool, *tnote, *toffnote, *tlngnote, *tldia, ")", e
输出的NC文件修改前对应位置指令为:
(D16R8.0 TOOL - 2 DIA. OFF. - 0 LEN. - 0 DIA. - 16.)
修改后以上指令行不再出现。此注释行指明当前刀路所使用的刀具参数,可用于加工前核对加工单,建议保留。法兰克及三菱控制器可以接受注释内容。
6、取消行号:
单击按钮,系统弹出查找对话框,输入“omitseq”,单击按钮,查找结果所在行为:
omitseq : no #Omit sequence no.
将其修改为:
omitseq : yes #Omit sequence no.
修改后行号不再出现。
7、调整下刀点坐标值位置:
单击按钮,系统弹出查找对话框,输入“g43”,单击按钮,查找结果所在行为:
pcan1, pbld, n, *sgcode, *sgabsinc, pwcs, pfxout, pfyout,
pfcout, *speed, *spindle, pgear, strcantext, e
pbld, n, "G43", *tlngno, pfzout, scoolant, next_tool, e
将其修改为:
pcan1, pbld, n, *sgcode, *sgabsinc, pwcs, pfxout, pfyout, pfcout, e
pbld, n, *sgcode, pfzout, e
pbld, n, *speed, *spindle, pgear, strcantext, e
pbld, n, "G43", *tlngno, scoolant, next_tool, e
输出的NC文件修改前对应位置指令为:
G0G90G54X16.Y-14.5S2200M3
G43H0Z20.M8
修改后变为:
G0G90G54X16.Y-14.5
G0Z20.
S2200M3
G43H0M8
新的指令顺序使下刀点(安全高度)x、y、z坐标值同其他指令分开,易于在断刀时修改。G43指令在PST文件中有两个位置,如仅使用G54指令时,修改第一个出现“G43”的位置即可。
8、输出普通及啄式钻孔循环指令:
单击按钮,系统弹出查找对话框,输入“usecandrill”,单击按钮,查找结果相关行为:usecandrill : no #Use canned cycle for drill
usecanpeck : no #Use canned cycle for Peck
将其修改为:
usecandrill : yes #Use canned cycle for drill
usecanpeck : yes #Use canned cycle for Peck
此修改适用于支持G81、G83钻孔循环指令的控制器
Mastercam系统配置的是适应单一类型控制系统的通用后置处理,该后置处理提供了一种功能数据库模型,用户根据数控机床和数控系统的具体情况,可以对其数据库进行修改和编译,定制出适应某一数控机床的专用后置处理程序。
Mastercam系统后置处理文件的扩展名为PST,称为PST文件,它定义了切削加工参数、NC程序格式、辅助工艺指令,设置了接口功能参数等,其结构由八个部分组成:
1.注解
程序每一列前有“#”符号表示该列为不影响程序执行的文字注解。如:
# mi2-Absolute, or Incremental positioning
0=absolute
1=incremental
表示mi2定义编程时数值给定方式,若mi=0为绝对值编程,mi=1为增量值编程。
在这一部分里,定义了数控系统编程的所有准备功能G代码格式和辅助功能M代码格式。
2.程序纠错
程序中可以插入文字提示来帮助纠错,并显示在屏幕上。如:
# Error messages (错误信息)
psuberror # Arc output not allowed
"ERROR-WRONG AXIS USED IN AXIS SUBSTITUTION", e
如果展开图形卷成旋转轴时,轴替换出错,则在程序中会出现上面引号中的错误提示。
3.定义变量的数据类型、使用格式和常量赋值
如规定G代码和M代码是不带小数点的两位整数,多轴加工中心的旋转轴的地址代码是A、B和C,圆弧长度允许误差为0.002,系统允许误差为0.00005,进给速度最大值为10m/min等。
4.定义问题
可以根据机床加工需要,插入一个问题给后置处理程序执行。
如定义NC程序的目录,定义启动和退出后置处理程序时的C-Hook程序名。
5.字符串列表
字符串起始字母为s,可以依照数值选取字符串,字符串可以由两个或更多的字符来组成。
字符串sg17,表示指定XY加工平面,NC程序中出现的是G17,scc1表示刀具半径左补偿,NC 程序中出现的是G41,字符串sccomp代表刀具半径补偿建立或取消。
6.自定义单节
可以让使用者将一个或多个NC码作有组织的排列。
自定义单可以是公式、变量、特殊字符串等:
pwcs # G54+ coordinate setting at toolchange
if mil >1, pwcs_g54
表示用pwcs单节指代#G54+在换刀时坐标设定值,mil定义为工件坐标系(G54~G59)
7.预先定义的单节
使用者可按照数控程序规定的格式将一个或多个NC代码作有组织的排列,编排成一条程序段。8.系统问答
后置处理软件提出了五组问题,供使用者回答,可按照注解文字、赋值变量、字符串等内容,根据使用的机床、数控系统进行回答。
设计后置处理文件,一般是按照NC程序的结构模块来进行。根据NC程序的功能,后置处理文件分成六个模块如下:
1.文件头
文件头部分设定程序名称和编号,此外,SINUMERIK 810D系统还必须指定NC程序存放路径,并按照以下格式输出:
“%_N_(程序名及编号)_(路径)”。
NC程序可存放在主程序、子程序和工作程序目录下,扩展名分别为:MPF、SPF、WPD,一般放在工作程序目录下。因此经修改的Pst文件格式为:
Pheader # Start of file
" %_N_", progname, "_WPD" (程序名、存放目录)
2.程序起始
在程序开始,要完成安全设定、刀具交换、工件坐标系的设定、刀具长度补偿、主轴转速控制、冷却液控制等,并可显示编程者、编程日期、时间等注解。
修改后的有刀具号Pst文件开头格式如下:
# Start of file for non-zero tool number
......
pspindle (主轴转速计算)
pcom_movbtl (移动设备)
ptoolcomment (刀具参数注解)
......
pbld, n, *sgcode, *sgplane, "G40", "G80", *sgabsinc
(快进、XY加工平面、取消刀补、取消固定循环、绝对方式编程)
if mil <=one, pg92_rtrnz, pg92_rtrn, pg92_g92 (返回参考点)
......
pbld, n, *sgcode, *sgabsinc, pwcs, pfxout, pfyout, pfcout, *speed, *spindle, pgear, pcan1
(快进至某位置、坐标系编置、主轴转速等)
pbld, n, pfzout, *tlngno, scoolant, [ if stagetool=one, *next_tool]
(安全高度、刀长补偿、开冷却液)
pcom_movea (加工过程)
3.刀具交换
刀具交换执行前,须完成返回参考点、主轴停止动作,然后换刀,接着完成刀具长度补偿、安全设定、主轴转速控制。
Pst文件中用自定义单节ptlchg指代换刀过程,编辑修改后的程序如下:
Ptlchg # Tool change
......
ptoolcomment (新刀参数注解)
comment (插入注解)
if stagetool <> two, pbld, n, *t, e (判断、选刀)
n, "M6" (换刀)
pindex (输出地址)
pbld, n, *sgcode, *sgabsinc, pwcs, pfxout, pfyout, pfcout, *speed, *spindle, pgear, pcan1
(快进至某位置、坐标系偏置、主轴转速等)
pbld, n, pfzout, *tlngno, "M7", [if stagetool=one, *next_tool]
(安全高度、刀长补偿号、开冷却液)
pcom_movea (加工过程)
4.加工过程
这一过程是快速移动、直线插补、圆弧插补、刀具半径补偿等基本加工动作。
对于几乎所有系统,这些加工动作的程序指令基本相同。只是注意SINUMERIK 810D系统的刀具长度补偿值由字母D后加两位数字调用,不需要G43/G44指令;而半径补偿值则由G41/G42调用,不需要再接地址代码。用G40取消刀具长度和刀具半径补偿。
5.切削循环
Mastercam软件提供了6种内定的孔加工固定循环方式:一般钻削(Drill/Cbore)、深孔啄钻(Peck Drill)、断屑钻(Chip Break)、右攻丝(Tap)、精镗孔(Bore#1)、粗镗孔(Bore #2),通过杂项选项(Misc #1/Misc #2)可设定左攻丝、背镗孔、盲孔镗孔、盲孔铰孔等循环,并采用G73~G89代码来表示。
如对于深孔钻削固定循环,Mastercam采用的格式为:G83 X_Y_Z_R_Q_F;而SINUMERIK 810D 系统用CYCLE83指代深孔钻削循环,其NC程序要求给出循环加工所有参数,输出格式为:CYCLE83(RTP,RFP,SDIS,DP,DPR,FDEP,FDPR,DAM,DTB,DTS,FRF,VARI)
在pst文件中需按SINUMERIK 810D系统格式进行定义、修改和编写。
6.程序结尾
程序结尾一般情况下是取消刀补、关冷却液、主轴停止、执行回参考点,程序停止等动作。下面是修改后的pst程序结尾:
Ptoolend_t #End of tool path, toolchange
......
pbld, n, sccomp, "M5", *scoolant, e (取消刀补、主轴停止、关冷却液)
pbld, n, *sg74, "Z1=0. X1=0. Y1=0.", e (返回参考点)
if mi2=one, pbld, n, *sg74, "X1=0.", "Y1=0.", protretinc, e
else, protretabs (程序结束)
# POST 名称 : wgkG54
# 类型: MILL
# 机床名称 : GENERIC FANUC
# 控制器名称: GENERIC FANUC
# 描述: GENERIC FANUC 3 AXIS MILL POST
# Associated Post : NONE
# 车/铣复合 : NO
# 4-axis/Axis subs. : NO
# 五轴: NO
# 子程序支持: NO
# 自动换刀 : NO
# 工作坐标系: G54
# Executable : MP 8.00
#
#
#
# 这个POST支持FANUC控制器普通三轴铣床的的G 代码输出,
# 不支持自动换刀,有最大圆弧报警
# 它来源于MP-EZ.PST
# 是针对Mastercam Mill V8的特征而设计的
#
#
# --------------------------------------------------------------------------
# 修改日志:
# --------------------------------------------------------------------------
# Programmers Note:
# CNC 05/01/00 - Initial post setup, jce
# 2002-10-11 - 去掉自动换刀,xxx
# 2002-10-12 - 增加中文注释,xxx
# 2002-10-21 - 增加最大圆弧警告,xxx
# 2002-11-05 - 修改坐标系为G54,xxx
# --------------------------------------------------------------------------
# 特征:
# --------------------------------------------------------------------------
#
#
# 下列Misc.(杂项) 必须使用整数:
#
# mi2 - 绝对或增量坐标at top level
# 0 = 绝对
# 1 = 增量
#
# mi3 - 选择G28或G30来执行参考点回归.
# 0 = G28, 1 = G30
#
# Canned text:
# 在轮廓点里插入"cantext".以允许/禁止下列Mastercam里许可的功能,# Entering cantext on a contour point from within Mastercam allows the # following functions to enable/disable.
# Cantext 值:
# 1 = Stop = 输出"M00" 停止码
# 2 = Ostop = 输出"M01" 选择停止码
# 3 = Bld on = 在NC 单节打开单节删除码(\)
# 4 = bLd off = 在NC 单节关闭单节删除码(\)
#
#
# 钻孔:
# 在这个POST 里支持所有的钻孔方法.
#
# 附加注意事项:
# 1) G54 calls are generated where the work offset entry of 0 = G54,
# 1 = G55, etc.
# 2) 由NCI变量"met_tool"决定是否使用米制
#
# 3) 以增量方式从换刀起始位置计算运动量.
# 起始位置通常定义为所有换刀时刀具所处的最后位置
# Incremental mode calculates motion from home position at toolchanges. # The home position is used to define the last position of the tool
# for all toolchanges.
# 4) 变量'absinc' 现已被预先定义, 设定mi2 (杂项整数)以定义
# 绝对/增量程序输出.
#
# --------------------------------------------------------------------------
# Debugging and Factory Set Program Switches 调试和加工设置程序切换# --------------------------------------------------------------------------
m_one : -1 #定义常数
zero : 0 #定义常数
one : 1 #定义常数
two : 2 #定义常数
three : 3 #定义常数
four : 4 #定义常数
five : 5 #定义常数
c9k : 9999 #定义常数
fastmode : 1 #Posting 速度最佳化
bug1 : 2 #0=不显示, 1=普通列表框, 2=编辑器
bug2 : -30 #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 line?
whatno : yes #不执行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 #忽视cantext 入口on move with tlchng_aft newglobal : 1 #全局变量错误检测
getnextop : 0 #建立下一个变量表
# --------------------------------------------------------------------------
# 一般输出设置
# --------------------------------------------------------------------------
sub_level : 1 #允许自动子程序支持
breakarcs : no #在各象限分割圆弧
arcoutput : 0 #0= IJK,1= R不带符号,2= R (超过180度时带负号)arctype : 2 #圆弧中心1=abs, 2=St-Ctr, 3=Ctr-St, 4=unsigned inc. arccheck : 1 #检测小圆弧,转化为直线
atol : .01 #arccheck=2时的角度公差
ltol : .002 #arccheck=1时的长度公差
vtol : .0001 #系统公差
maxfeedpm : 500 #进给速度极限(英寸/分钟)
ltol_m : .05 #arccheck=1时的长度公差,米制
vtol_m : .0025 #系统公差,米制
maxfeedpm_m : 10000 #进给速度极限毫米/分钟
force_wcs : yes #每次换刀时强制输出WCS
spaces : 1 #各指令之间插入的空格数
omitseq : no #省略序号
seqmax : 9999 #最大序号
stagetool : 0 #0 = 无预先备刀, 1 = 预备刀具
use_gear : 0 #输出齿轮交换代码,0=no,1=yes
max_speed : 6000 #最大主轴转速
min_speed : 1 #最小主轴转速
nobrk : no #Omit breakup of x, y & z rapid moves
progname : 1 #使用大写字母表示程序名
max_arc : 50000 #机床允许的最大圆弧半径
# --------------------------------------------------------------------------
# 旋转轴设定
# --------------------------------------------------------------------------
vmc : 1 # 0 = 卧式,1 = 立式
# --------------------------------------------------------------------------
# 允许钻孔固定循环功能
# -------------------------------------------------------------------------- usecandrill : yes #使用普通钻孔固定循环
usecanpeck : yes #使用啄式钻孔固定循环
usecanchip : yes #使用断屑钻孔固定循环
usecantap : yes #使用攻螺纹固定循环
usecanbore1 : yes #使用镗孔固定循环1
usecanbore2 : yes #使用镗孔固定循环2
usecanmisc1 : yes #使用杂项固定循环1
usecanmisc2 : yes #使用杂项固定循环2
# --------------------------------------------------------------------------
# 通用自定义变量初始化(不能改变!)
# --------------------------------------------------------------------------
xia : 0 #Formated absolute value for X incremental calculations yia : 0 #Formated absolute value for Y incremental calculations zia : 0 #Formated absolute value for Z incremental calculations bld : 0 #单节删除激活
result : 0 #Return value for functions
sav_spc : 0 #Save spaces
sav_gcode : 0 #Gcode saved
sav_absinc : 0 #Absolute/Incremental Saved Value
sav_coolant : 0 #Coolant saved
toolchng : 1 #On a toolchange flag
spdir2 : 1 #Copy for safe spindle direction calculation
#Drill variables
drlgsel : -1 #Drill Select Initialize
drillref : 0 #Select drill reference
peckacel : 0 #Fractional percent to reduce peck2 when usecan.. : no drlgcode : 0 #Save Gcode in drill
sav_dgcode : 0 #Drill gcode saved
# --------------------------------------------------------------------------
# 格式列表- n=nonmodal, l=leading, t=trailing, i=inc, d=delta
#
# --------------------------------------------------------------------------
#定义英制/米制坐标格式列表
fs2 1 0.7 0.6 #小数, absolute, 7 place, default for initialize (
fs2 2 0.4 l1.3 #小数, absolute, 4/3 place (x,y,z)
fs2 3 0.4 l1.3d #小数, delta, 4/3 place (i,j,k)
#Common format statements
fs2 4 1 0 1 0 #整数, 无前缀
fs2 5 2 0 2 0l #整数, 强制两位前缀
fs2 6 3 0 3 0l #整数, 强制三位前缀
fs2 7 4 0 4 0l #整数, 强制四位前缀
fs2 9 0.1 0.1 #小数, absolute, 1 place
fs2 10 0.2 0.2 #小数, absolute, 2 place
fs2 11 0.3 0.3 #小数, absolute, 3 place
fs2 12 0.4 0.4 #小数, absolute, 4 place
fs2 13 0.5 0.5 #小数, absolute, 5 place
fs2 14 0.3 0.3d #小数, delta, 3 place
fs2 15 0.2 0.1 #小数, absolute, 2/1 place
fs2 16 1 0 1 0n #整数, 强制输出
# 输出加工类型字符串定义
# -------------------------------------------------------------------------- # 字符串- 字符串标签必须由's' 开头,它们没有预先指派
# -------------------------------------------------------------------------- #Select operation note
sop00 "NULL" # String definition
sop01 "CONTOUR" # " "
sop02 "CONTOUR" # " "
sop03 "DRILL CYCLE" # " "
sop04 "OCKET...." # " "
sop05 "RULED....." # " "
sop06 "2D-SWEPT.." # " "
sop07 "3D-SWEPT.." # " "
sop08 "REVOLVED.." # " "
sop09 "LOFT......" # " "
sop10 "COONS....." # " "
sop11 "TRIM ....." # " "
sop12 "FLOWLINE.." # " "
sop13 "SURFACE_FINISH" # " "
sop14 "SURFACE_ROUGH" # " "
sop15 "OINT....." # " "
sop16 "DRILL-5AX."
sop17 "CURVE-5AX."
sop18 "SWARF-5AX."
sop19 "flat MILL"
sop20 "op20?....."
sopnote # Target string
fstrsel sop00 opcode sopnote
# -------------------------------------------------------------------------- # NC 输出的字符串和字符串选择定义