|
昨天看到一朋友问
“请问 如何让每一句G02G03的程序前面都有G02G03 补充 ,菲迪亚系统,必须要改啊,研究好多天了,10几个小时,郁闷啊
程序比如是
G02X0Y0I0J0
G02X0Y0I2J2
G02X3Y3I3J3
自动生成的是
G02X0Y0I0J0
X0Y0I2J2
X3Y3I3J3
法兰克可以,但是菲迪亚不行啊,这个他就跑不出来郁闷啊。怎么让他不省略。”
本着助人为快乐之本的原则 我也研究了下。虽然走过些弯路 但还是顺利解决问题。特写下过程跟各位朋友分享下。
按照他的要求 就是
G02X0Y0I0J0
X0Y0I2J2
X3Y3I3J3
变换成
G02X0Y0I0J0
G02X0Y0I2J2
G02X3Y3I3J3
首先用记事本打开后处理。(已MPFAN.pst为例。)
他要改变的的问题就是让G02 G03重复添加,就先要从G02 G03下手
搜索 G2 找到了
sg02 : "G2" #Circular interpolation CW
sg03 : "G3" #Circular interpolation CCW
sg02 sg03 就代表了G2 G3 下面的
sgcode : "" #Target string
其中 sgcode 代表了这段代码的变量 sgcode=G0-G4中的任意指令
继续搜索 sgcode
第一个找到的位置
pbld, n$, *sgcode, *sgplane, scc0, sg49, sg80, *sgabsinc, e$
这句指令就是NC开头的 G0 G17 G40 G49 G80 G90 。这句不用处理。
然后继续搜索 找到
pcan1, pbld, n$, *sgcode, *sgabsinc, pwcs, pfxout, pfyout, pfcout,
这句对应就是 G0 G90 G54 X.. Y.. S.. 这句也无需修改
继续搜索 pcan1, pbld, n$, *sgcode, *sgabsinc, pwcs, pfxout, pfyout, pfcout,
这句同上。继续
pbld, n$, sgabsinc, sgcode, *sg28ref, "Z0.", scoolant, e$
这句就是 G91 G28 Z0 继续跳过
然后找到了这句
pcan1, pbld, n$, sgplane, `sgcode, sgabsinc, pccdia,
局部全文就是
prapidout #Output to NC of linear movement - rapid
pcan1, pbld, n$, sgplane, `sgcode, sgabsinc, pccdia,
pxout, pyout, pzout, pcout, strcantext, scoolant, e$
#Modify following line to customize output for high-speed toolpath
#tool inspection/change points
if rpd_typ$ = 7, pbld, n$, "M00", "(TOOL INSPECTION POINT - POST CUSTOMIZATION REQUIRED)", e$
按照注释 #Output to NC of linear movement - rapid 这句是负责直线处理的
在此下面有一行是
pcirout #Output to NC of circular interpolation
pcan1, pbld, n$, `sgfeed, sgplane, sgcode, sgabsinc, pccdia,
pxout, pyout, pzout, pcout, parc, feed, strcantext, scoolant, e$
按照注释 #Output to NC of circular interpolation 这句就是负责圆弧插补的代码。
对应第一句代码 pcan1, pbld, n$, `sgfeed, sgplane, sgcode, sgabsinc, pccdia,
但是代码中已经有了 sgcode 暂时陷入僵局。难道前面分析有错误?正在一筹莫展之际,想起来MC的后处理调试器。
于是打开调试器。定位G2 G3 程序输出 确实在 pcan1, pbld, n$, `sgfeed, sgplane, sgcode, sgabsinc, pccdia, 这句代码中。
确认前面的推测都是正确的。于是强制添加 *sgcode 指令 在此后处理 问题得到解决。
|
|