当前位置:文档之家› MASTERCAM后处理修改

MASTERCAM后处理修改

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 输出的字符串和字符串选择定义

相关主题
文本预览
相关文档 最新文档