众所周知,mastercam是不能够做到像其他软件一样按照操作或是按照组批处理程序。这也是目前mastercam的一大缺点。那么我们有办法解决这个问题吗?
这个问题我曾经咨询过mastercam美国后处理开发小组的人,他们的回复令我大跌眼镜。不可以,但是可以开发插件。这不是废话吗?
难道mastercam真的不能够做到批处理吗?
仔细分析一下,这个有几种结果。
1.开发插件,可以做到,已经开发处理好几种相关的外挂。
2.对每个操作或是组进行不同文件名的分配,可以达到批处理的效果。
3.利用机器的自带功能。可以做到。但只有部分机器可以。
目前市面上的数控机器不是都有自动分段/断开功能。当机器在传输程序时,读到程序有M30时,机器会自动把程序分开,并重新生成一个新的程序,再继续传输,直到下一个M30.
那么在这个过程中我们必须要保证程序号(Oxxxx)是唯一的,否则就会替换前面已经有的程序。
至于这个方法可能不是所有的机器都能够识别和做到,最好大家都去试一下,写一个简单的程序,到机器上传输一下就知道会不会自动分开。这个我早在2000年时在brother和howa机器上实现过,能够成功断开。faunc系统应该有没有问题的。没有试验过。
如就像下面这样的程序:
%
O1235(D522-79255-200A)
(DATE=DD-MM-YY - 15-06-11 TIME=HH:MM - 14:09)
G0G17G40G49G80G90
T1M6(T1-3.00 DIA 4FL 90 DEGREE FACEMILL R.03;LOC;.50 OOH;2.00)
G0G90G55X-17.4843Y-.2524A0.S9000M3
G43H1Z1.5M8
Z1.1
G1Z1.0143F200.
X16.6213
Y-1.6428
X-16.5843
Y-3.0332
X16.6213
Y-4.4236
X-17.4843
G0Z1.5
M5
G28G91Z0.0
G28G91X0.0Y0.0
M1
M30==============》此处必须有M30
%
%
O1236(D522-79255-200A)
(DATE=DD-MM-YY - 15-06-11 TIME=HH:MM - 14:09)
M01
T2M6(T2-2.00 DIA 4FL FACEMILL R.03;LOC;.375 OOH;2.00)
G0G90G55X-9.9917Y-2.1592A0.S9000M3
G43H2Z1.5
Z1.1143
G1X-10.0496Z1.1132F150.
X-8.539Z1.0869
X-10.0496Z1.0605
X-8.539Z1.0341
X-10.0496Z1.0078
X-8.539Z.9814
G0Z1.5
M5
G28G91Z0.0
G28G91X0.0Y0.0
M1
M30
%
今天我给大家的一种新的利用mastercam后处理进行修改成批处理的方法。也就是第三种方法.
这个方法其实很简单,关键就是不要让程序号(Oxxxx)重复,否则在传输过程将会出现替换的问题.
首先分析一下。批处理,就是同一个刀具的程序生成在一个程序里面,不同的刀具生成不同的程序号,不同程序,同时还要保证每个程序的完整性
完整性就是必须有程序头和程序尾等。。。
下面跟着我一步一步的往下做吧。后处理基于mastercamX5 MPFan.pst文件进行修改的。请勿用其他的后处理,主要是所调用的代码是基于这个后处理,不然又会有很多人说代码不对。
1.查找pheader$在上面增加以下代码
pheader1 #Call before start of other toolchange By http://postp.net
pheader$
2.查找*progno$在其上面加入以下代码
progno$ = t$ + 1234
上面的代码意思是把程序名命名为当前的刀号+1234
3.查找ptlchg$在下面增加以下代码。
pheader1
pbld, *smetric, e$
pbld, *sgcode, *sgplane, scc0, sg49, sg80, *sgabsinc, e$
4.查找pretract 在块的结尾添加以下代码
pretract_1 #End of tool path, toolchange
sav_absinc = absinc$
absinc$ = one
sav_coolant = coolant$
coolant$ = zero
# if nextop$ = 1003, #Uncomment this line to leave coolant on until eof unless
[ # explicitely turned off through a canned text edit
if all_cool_off,
[
#all coolant off with a single off code here
if coolant_on, pbld, sall_cool_off, e$
coolant_on = zero
]
else,
[
local_int = zero
coolantx = zero
while local_int < 20 & coolant_on > 0,
[
coolantx = and(2^local_int, coolant_on)
local_int = local_int + one
if coolantx > zero,
[
coolantx = local_int
pbld, scoolantx, e$
]
coolantx = zero
]
coolant_on = zero
]
]
#cc_pos is reset in the toolchange here
cc_pos$ = zero
gcode$ = zero
pbld, sccomp, *sm05, psub_end_mny, e$
#pbld, sgabsinc, sgcode, *sg28ref, "Z0.", scoolant, e$
#if nextop$ = 1003 | tlchg_home, pbld, *sg28ref, "X0.", "Y0.", protretinc, e$
#else, pbld, protretinc, e$
absinc$ = sav_absinc
coolant$ = sav_coolant
pbld, *sg28ref,"G91", "Z0.0", e$
pbld, *sg28ref,"G91", "X0.0", "Y0.0", e$
pbld , "M1" , e$
pbld, "M30", e$
mergesub$
clearsub$
mergeaux$
clearaux$
"%", e$
5.查找peof$并修改为尾部信息如下
peof$ #End of file for non-zero tool
pretract
comment$
pbld, *sg28ref,"G91", "Z0.0", e$
pbld, *sg28ref,"G91", "X0.0", "Y0.0", e$
pbld , "M1" , e$
pbld, "M30", e$
mergesub$
clearsub$
mergeaux$
clearaux$
"%", e$
6.最后ptlchg1002$块,并修改其块下面的代码pretract
改为
pretract_1
大功告成。。
提示,以上代码在mastercamX4和X5两个版本完全通过,没有出现任何错误提示。程序经验证完整无缺。由此可见mastercamX版本以上的都是没有问题。相对于mastercamV8---V9.1这些版本是一样的,
只是代码有一点点不同。可以参考我的降级后处理的方法,进行相关的代码降级处理即可。
同时请勿修改任何一个代码。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删