2023年11月25日发(作者:)

MASTERCAM后处理修改

MASTERCAM后处理修改

Mstercam的的默认后处理是 (M的后处理的扩展名为PST),其中定义了NC程序的格式,⼯艺参数,接⼝的⼀些

功能等,有些东西是不能改动的,其实我们主要改动的就是⼏个⽅⾯:

1 程序的开头和结尾。系统不⼀样,他的程序的开头和结尾可能就存在不同

2 三轴和四轴的添加和改动

3 ⼑具的设置

(不好意思,这是我觉得需要改的原因,⼤家不要扔西⽠⽪)

⾸先⽤记事本打开⽂件(这个⽂件在D:Mcam9MillPosts中)如图

2 下⾯主要讲讲程序的开头的改动:

1G54的改动

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将其删除或改为注释⾏

进⾏模具加⼯时,需从G54G59的⼯件坐标系指令中指定⼀个,最常⽤的是G54。部分控制器使⽤G92指令确定⼯件坐标

系。对⼑时需定义⼯件坐标原点,原点的机械坐标值保存在CNC控制器的G54G59指令参数中。CNC控制器执⾏G54G59

指令时,调出相应的参数⽤于⼯件加⼯。采⽤系统缺省的后处理⽂件时,相关参数设置正确的情况下可输出G55G59指令,

但⽆法实现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$"

逻辑表达式,返回值为01

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语⾔在处理⼑路信息的时候,先读取NCIG Code, 然后根据读取到的G Code去调⽤相应的预定义后处理块。⽐⽅说,如

果读到的G Code0,就会调⽤prapidpzrapid。然后,第⼆⾏的参数就会储存到相应的系统预定义变量中,⽤来输出或做

相关的计算。⼤体上这就是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⽂件就可以知道后处理逻辑跑到什

么地⽅了。设为其他值另有⽤处,以后再说。

以上这些调试信息,如果fastmodeyes1的时候是不会出现的。把fastmode改为no0,调试信息就会出现在输出⾥⾯了。

这是V9版本的。如果⽤的是X的话,改fastmode是没有⽤的。XV9很⼤的不同就是很多后处理开关变量被移到机器定义

(Machine Definition)和控制器定义(Control Definitoin)中了,fastmode 就是其中之⼀。改动Control Definiton -> NC Output ->

Post Debug Information来输出调试信息。还有,如果是X的话,所有预定义变量名和后处理块后⾯都要加"$"

Mastercam软件是由美国CNC SOFTWARE 公司研制开发的基于微机的CAD(计算机辅助设计)和CAM(计算机辅助制造)

系统。⾃1984年诞⽣以来,就以其强⼤的加⼯功能闻名于世。由于其较好的性能价格⽐(对硬件的要求不⾼,操作灵活,易

学易⽤,能使企业很快见到效益),

是⼯业界和学校⼴泛采⽤的CADCAM系统。

后置处理⽂件简称后处理⽂件,是⼀种可以由⽤户以回答问题的形式⾃⾏修改的⽂件,其扩展名为.PSTNC程序的⽣成受软

件的后置处理程序的控制,不同数控系统的数控机床对应于不同的后置处理程序。Mastercam的后置处理程序内定成适应⽇本

FANUC控制器的通⽤格式。在具体应⽤软件进⾏编程之前,⼀般要对当前的后处理程序进⾏修改和设定。国产的数控系统⼀

般在Mastercam中没有对应的.PST后处理⽂件。

我校的数控铣床采⽤的是国产的数控系统(HX2000M数控系统),同样在Mastercam中也没有对应的.PST后处理⽂件。

Mastercam⽣成的NC代码需经多处修改后才能使⽤,极为不便。在数控教学的实践中我渐渐有这样的想法,能不能针对我校

的数控系统开发专⽤的Mastercam后处理程序,更好地进⾏数控实习教学呢?经过⼀段时间的摸索,我尝试着对Mastercam

后处理程序进⾏了相应的修改。

我使⽤的是Mastercam7.1的版本。⾸先分析了学校采⽤HX2000M系统的数控铣床的特点和它的GM代码的格式。该系统不

具有换⼑功能,⽽且圆弧只能以IJK的形式编程。接着我反复⽐较Mastercam内置的⼏⼗种后处理程序所⽣成的NC程序,

发现其中由后处理程序⽣成的NC程序与HX2000M编程格式最为相近。我想格式相同之处越多,后处理程序修改

的地⽅也就相对越少。于是我确定把后处理程序作为我尝试修改的后处理程序。我⽤WINDOWS⾃带的写字板,

打开后处理程序,进⾏编辑修改。

Mastercam7.1系统的后处理⽂件由下⾯⼏个模块组成。

1Annotation(注释)。对后处理⽂件及其设定⽅法作⼀般性介绍,此部分内容⼀般都不需要修改。

2DEBUG/PROGRAM SWITCHES, debugging and program switches (系统程序规划)。此部分是MASTERCAM的后处理系

统规划, ⼀般不需要修改。

3Work 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"

4POSTLINES, 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",程序结束)

由于学校的数控系统不具有换⼑功能,因⽽有关换⼑的设定就可以省略修改。

5Numbered questions for Mastercam(问题参数设定)。⼀般不需更改。

经过上述修改后的后处理程序所⽣成的NC程序,除了删除程序开始的"%",其它不需要作任何修改,可以直接在

我校采⽤HX2000M系统的数控铣床上使⽤。极⼤的⽅便了我在数控铣床实习⽅⾯的教学。

1annotation(注释).对后处理⽂件及其设定⽅法作⼀般性介绍.此部分内容⼀般都不⽤更改.

以下是截取的部分注释:(注释前都带#,系统在执⾏代码处理时是不会读取前⾯带#号的语句的.) # 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

3general output settings(常规后处理设定).此部分可视情况更改,以适合机台或个⼈使⽤.以下截取的是9.0版的⼀些常规设定.

冒号前⾯的是变量,冒号后⾯的是设定值,#号后⾯是注解(⼀般是说明0代表什么,1代表什么,2代表什么,yesno应该不⽤翻译了

?!)英⽂后⾯的中⽂注解是我加进去的,翻译的不是很详细,但相信⼤家能看懂.没有翻译的就表⽰我根本不会或此设定不常⽤....

嘿嘿... 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

前⼀⽅法为强制输出固定指令代码,如需使⽤G55G59指令时,有所不便。多⼑路同时输出时,只在整个程序中出现⼀次

G54指令。后⼀⽅法同其他后处理⽂件产⽣G54指令的原理相同,多⼑路同时输出时,每次换⼑都会出现G54指令,也可根据

参数⾃动转换成G55G59指令。

输出三轴加⼯中⼼程序的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

新的指令顺序使下⼑点(安全⾼度)xyz坐标值同其他指令分开,易于在断⼑时修改。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

此修改适⽤于⽀持G81G83钻孔循环指令的控制器

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代码是不带⼩数点的两位整数,多轴加⼯中⼼的旋转轴的地址代码是ABC,圆弧长度允许误差为

0.002,系统允许误差为0.00005,进给速度最⼤值为10m/min等。

4.定义问题

可以根据机床加⼯需要,插⼊⼀个问题给后置处理程序执⾏。

如定义NC程序的⽬录,定义启动和退出后置处理程序时的C-Hook程序名。

5.字符串列表

字符串起始字母为s,可以依照数值选取字符串,字符串可以由两个或更多的字符来组成。

字符串sg17,表⽰指定XY加⼯平⾯,NC程序中出现的是G17scc1表⽰⼑具半径左补偿,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程序可存放在主程序、⼦程序和⼯作程序⽬录下,扩展名分别为:MPFSPFWPD,⼀般放在⼯作程序⽬录下。因此经

修改的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程序要求给出循环加⼯所有参数,输出格式为:

CYCLE83RTPRFPSDISDPDPRFDEPFDPRDAMDTBDTSFRFVARI

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 - 修改坐标系为G54xxx

# --------------------------------------------------------------------------

# 特征:

# --------------------------------------------------------------------------

#

#

# 下列Misc.(杂项) 必须使⽤整数:

#

# mi2 - 绝对或增量坐标at top level

# 0 = 绝对

# 1 = 增量

#

# mi3 - 选择G28G30来执⾏参考点回归.

# 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= IJK1= 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