MASTERCAM后处理修改精编版.docx
《MASTERCAM后处理修改精编版.docx》由会员分享,可在线阅读,更多相关《MASTERCAM后处理修改精编版.docx(67页珍藏版)》请在冰点文库上搜索。
MASTERCAM后处理修改精编版
MASTERCAM后处理修改
Mstercam的的默认后处理是MPFAN.PST(M的后处理的扩展名为PST),其中定义了NC程序的格式,工艺参数,接口的一些功能等,有些东西是不能改动的,其实我们主要改动的就是几个方面:
1程序的开头和结尾。
系统不一样,他的程序的开头和结尾可能就存在不同
2三轴和四轴的添加和改动
3刀具的设置
(不好意思,这是我觉得需要改的原因,大家不要扔西瓜皮)
首先用记事本打开MPFAN.PST文件(这个文件在D:
\Mcam9\Mill\Posts中)如图
2下面主要讲讲程序的开头的改动:
(1)G54的改动
按CTRL+F查出StartofFileandToolchangeSetup这一选项:
你会在下面的程序中找到
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代码:
查找结果所在行为:
ifstagetool>=zero,pbld,n,*t,"M6",e将其修改为:
ifstagetool>=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 #ForceWCSoutputateverytoolchange?
将no改为yes,修改结果为:
force_wcs :
yes #ForceWCSoutputateverytoolchange?
输出的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系统里加入了机器定义(MachineDefinition)和控制器定义(ControlDefinition),MP语言还要和这两个东东发生关系。
NCI。
这个NCI么,其实结构是非常简单的。
打开一个NCI文件,会发现它是以每两行作为一个功能结构。
MP语言在读取NCI的时候也是两行两行的读取的。
例如:
1
411.52.5-0.1253.2
每两行中的第一行,只有一个参数,而且和控制器代码(GCode)有不少相似之处,比方说,1代表直线移动,0代表快速移动,2代表顺时针圆弧移动,81代表钻孔过程开始等等。
但是不可将这两种GCode混淆起来。
两行中的第二行,就是对应第一行GCode的参数行。
每个GCode所对应的参数各不相同,而且同一个GCode在不同的加工过程(车削,铣削等)中参数也不相同。
在上面的例子中,具体的每个参数的意义如下:
铣削
参数 含义 对应系统变量 预定值
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的GCode,然后根据读取到的GCode去调用相应的预定义后处理块。
比方说,如果读到的GCode是0,就会调用prapid或pzrapid。
然后,第二行的参数就会储存到相应的系统预定义变量中,用来输出或做相关的计算。
大体上这就是Mstercam用后处理把NCI翻译成机器代码的简要过程。
不过,说起来挺容易,具体里面怎么跑的可没法子一句话说得清楚。
这么多的NCI代码,这么多的后处理块,看起来都TMD头晕。
如果各位老大不怕头晕的话,嘿嘿,下面我来讲怎么输出相关信息来了解这整个翻译的过程。
用文本编辑器打开后处理器,找到这一块:
fastmode :
yes #EnableQuickPostProcessing,(settonofordebug)
bug1 :
2 #0=Nodisplay,1=Genericlistbox,2=Editor
bug2 :
40 #Appendpostlinelabels,non-zeroiscolumnposition?
bug3 :
0 #AppendwhatlinenumbertoeachNCline?
bug4 :
1 #AppendNCIlinenumbertoeachNCline?
bug1,不要动他,2就好了。
bug2比较重要。
如果是一个非零正值的话,在输出机器代码的时候,会把输出这一行所被调用的第一个后处理块的名称附上。
因为一个后处理块可以调用其他的后处理块,所以如果还有其他的后处理块被调用的话,最后一个被调用的后处理块的名称也会被附上。
这些附加信息输出的起始列数就是所属入的非零正值数。
在上面的例子中,第一个和最后一个被调用的后处理块名称输出开始于第四十列。
如果是一个非零负值的话,所有被调用的后处理块名称都会被输出,不论有没有输出机器代码。
这是非常有用的,有助于了解后处理里面的逻辑是怎么跑的,但是,结果有时候会变得非常非常的长。
当然,如果bug2是零的话这些附加信息就没有了。
bug3,不要管他,没啥用,历史原因留在这里,保持零就好了
bug4,另一个很重要的参数。
如果为1的话,会输出当前所到的NCI文件的行数。
对比NCI文件就可以知道后处理逻辑跑到什么地方了。
设为其他值另有用处,以后再说。
以上这些调试信息,如果fastmode是yes或1的时候是不会出现的。
把fastmode改为no或0,调试信息就会出现在输出里面了。
这是V9版本的。
如果用的是X的话,改fastmode是没有用的。
X和V9很大的不同就是很多后处理开关变量被移到机器定义(MachineDefinition)和控制器定义(ControlDefinitoin)中了,fastmode就是其中之一。
改动ControlDefiniton->NCOutput->PostDebugInformation来输出调试信息。
还有,如果是X的话,所有预定义变量名和后处理块后面都要加"$"。
Mastercam软件是由美国CNCSOFTWARE公司研制开发的基于微机的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/PROGRAMSWITCHES,debuggingandprogramswitches(系统程序规划)。
此部分是MASTERCAM的后处理系统规划,一般不需要修改。
3、Workcoordinateoutput,userdefined (工作设定)。
把其中的
pg92_sof #G92coordinatesettingatstart (G92的设定)
"/",n,"G91","G28","Z0.",e
"/",n,"G28","X0.","Y0.",e
"/",n,*sgwcs,*xh,*yh,*zh,e
改成:
pg92_sof #G92coordinatesettingatstart
n,*sgwcs,*xh,*yh,*zh,e (设定工件坐标系)
n,*speed,*spdlon,prange (设定主轴转速)
删除了HX2000M数控系统中没有的"/"、"G28"。
4、POSTLINES,PRE-DEFINED-Postlinenamesarere-assigned.
(文件起始和刀具交换设置)。
同样把其中的
pheader psof peof 后面的内容改成如下的格式(原内容略去):
pheader #Fileheader
"%p"," (",progname,")",e
注意:
"%",程式开头的百分号,不能改,FANUC系统专用,此处自动生成NC程序后要作惟一修改,删除。
psof #Startoffilefornon-zerotoolnumber
pinit (刀具开始加工时的格式)
progno
comment
ifmi1<=three,pg92_sof
ifstagetool=zero,n,*t,pcoolon
ifstagetool=one,n,*next_tool,"M06"
n,"G90","G00",*zr, e (Z轴快速定位)
n,"G00",pwcs,*xr,*yr,e (X轴、Y轴快速定位)
prv_gcode=zero
peof #Endoffilefornon-zerotool (刀具加工结束时的格式)
n,"M05" (主轴停止)
n,"G00","X0","Y0.",pcooloff
ifmi1<=three&mi1>zero,pg92_out
ifstagetool=one,n,*first_tool,"M06"
n,"M02" (将原"M30"改成"M02",程序结束)
由于学校的数控系统不具有换刀功能,因而有关换刀的设定就可以省略修改。
5、NumberedquestionsforMastercam(问题参数设定)。
一般不需更改。
经过上述修改后的MP-EZ.PST后处理程序所生成的NC程序,除了删除程序开始的"%",其它不需要作任何修改,可以直接在我校采用HX2000M系统的数控铣床上使用。
极大的方便了我在数控铣床实习方面的教学。
1)annotation(注释).对后处理文件及其设定方法作一般性介绍.此部分内容一般都不用更改.
以下是截取的部分注释:
(注释前都带#号,系统在执行代码处理时是不会读取前面带#号的语句的.)
#postname:
mpfan
#product:
mill
#machinename:
genericfanuc
#controlname:
genericfanuc
#description:
genericfanucmillpost
#associatedpost:
none
#mill/turn:
no
#4-axis/axissubs.:
yes
#5-axis:
no
#subprograms:
yes
#executable:
mpv9.0
#
#warning:
thispostisgenericandisintendedformodificationto
#themachinetoolrequirementsandpersonalpreference.
2)debuggingandfactorysetprogramswitches(系统程序规划).此部分是mastercam版本的后处理系统规划,每个版本都大同小异,一般不需更改.以下截取的是9.0版的)
m_one:
-1#defineconstant
zero:
0#defineconstant
one:
1#defineconstant
two:
2#defineconstant
three:
3#defineconstant
four:
4#defineconstant
five:
5#defineconstant
c9k:
999#defineconstant
fastmode:
yes#enablequickpostprocessing,(settonofordebug)
bug1:
2#0=nodisplay,1=genericlistbox,2=editor
bug2:
40#appendpostlinelabels,non-zeroiscolumnposition?
bug3:
0#appendwhatlineno.toeachncline?
bug4:
1#appendncilineno.toeachncline?
whatno:
yes#donotperformwhatlinebranches?
(leaveasyes)
get_1004:
1#findgcode1004withgetnextop?
rpd_typ_v7:
0#useversion7stylecontourflags/processing?
strtool_v7:
2#useversion7+toolname?
tlchng_aft:
2#delaycalltotoolchangeuntilmoveline
cant_tlchng:
1#ignorecantextentryonmovewithtlchng_aft
newglobal:
1#errorcheckingforglobalvariables
getnextop:
0#buildthenextvariabletable
3)generaloutputsettings(常规后处理设定).此部分可视情况更改,以适合机台或个人使用.以下截取的是9.0版的一些常规设定.冒号前面的是变量,冒号后面的是设定值,#号后面是注解(一般是说明0代表什么,1代表什么,2代表什么,yes或no应该不用翻译了吧?
!
)英文后面的中文注解是我加进去的,翻译的不是很详细,但相信大家能看懂.没有翻译的就表示我根本不会或此设定不常用....嘿嘿...
sub_level:
1#enableautomaticsubprogramsupport(启用自动支持子程式)
breakarcs:
2#breakarcs,0=no,1=quadrants,2=180deg.maxarcs(打断圆弧方式)
arcoutput:
1#0=ijk,1=rnosign,2=rsignedneg.over180(转出圆弧方式)
arctype:
2#arccenter1=abs,2=st-ctr,3=ctr-st,4=unsignedinc.
do_full_arc:
0#allowfullcircleoutput?
0=no,1=no(是否转成整圆方式)
helix_arc:
0#supporthelixarcoutput,0=no,1=allplanes,2=x