2023年11月25日发(作者:)
MASTERCAM后处理修改
MASTERCAM后处理修改
Mstercam的的默认后处理是 (M的后处理的扩展名为PST),其中定义了NC程序的格式,⼯艺参数,接⼝的⼀些
功能等,有些东西是不能改动的,其实我们主要改动的就是⼏个⽅⾯:
1 程序的开头和结尾。系统不⼀样,他的程序的开头和结尾可能就存在不同
2 三轴和四轴的添加和改动
3 ⼑具的设置
(不好意思,这是我觉得需要改的原因,⼤家不要扔西⽠⽪)
⾸先⽤记事本打开⽂件(这个⽂件在D:Mcam9MillPosts中)如图
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程序,
发现其中由后处理程序⽣成的NC程序与HX2000M编程格式最为相近。我想格式相同之处越多,后处理程序修改
的地⽅也就相对越少。于是我确定把后处理程序作为我尝试修改的后处理程序。我⽤WINDOWS⾃带的写字板,
打开后处理程序,进⾏编辑修改。
Mastercam7.1系统的后处理⽂件由下⾯⼏个模块组成。
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(问题参数设定)。⼀般不需更改。
经过上述修改后的后处理程序所⽣成的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_)可正常输出G54指令。由于后处理⽂件⼴泛采⽤,这⾥仍以此⽂件为例
进⾏所有修改。其他后处理⽂件内容有所不同,修改时根据实际情况调整。
选择【File】>【Edit】>【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_,输出4轴加⼯中⼼程序的三菱控制器后处理⽂件为
。
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)
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 代码输出,
# 不⽀持⾃动换⼑,有最⼤圆弧报警
# 它来源于
# 是针对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
发布评论