|
|
这套经过深度优化的 Mastercam G32“两段式增量斜进斜退”后处理方案,不仅彻底解决了 Fanuc系统的“45度长轴判定一边倒”缺陷,还针对古老的 MP 编译器进行了底层的防错展平。为了方便你日后备份和维护,以下是整套后处理修改的最终复盘汇总:
💡 实战应用参数模板(可直接作为日常工艺卡存留)未来在 Mastercam 编写任何螺纹操作时,只要开启自定义螺纹(mi9$=1),都可以无脑套用以下增量参数:螺纹安全高度:根据毛坯正常给定(如 X9.95)。斜进刀量(mr1$)/ 斜退刀量(mr2$):直接固定输入 1.0。斜退刀U值(mr5$):外螺纹输入正数(如 1.4),内螺纹输入负数(如 -1.4)。
注:只要保证你的 mr5$ 增量半径值(直径的一半,如 $1.4/2=0.7$)小于你的进退刀 W 值(如 1.0),本程序将终身免疫系统 45 度报错,牙型绝对不会变形,但切记 mr5$为直径值(1.4)。
一、 全局变量定义区(文件顶部开始查找fmt,添加下列代码)。修改目的:声明所有自定义变量,并绑定 NC 代码输出格式(fmt)。全部采用严格顶格、无嵌套的干净代码,规避了现代编码格式乱码引起的“引号不匹配”幽灵报警。
# --------------------------------------------------------------------------
g32_x_mid : 0
g32_xabs : 0
g32_zabs : 0
thread_q1 : 0
thread_q2 : 0
g32_w1 : 0
g32_w2 : 0
fmt "X" 2 g32_x_mid
fmt "X" 2 g32_xabs
fmt "Z" 2 g32_zabs
fmt "W" 2 g32_w1
fmt "W" 2 g32_w2
# --------------------------------------------------------------------------
二、查找pthrg32_1$,G32 第一阶段:拦截并记录绝对安全高度(pthrg32_1$ 动作区)
修改目的:在螺纹刀从主程序快速定位到起点(如 G0 X9.95 Z5.)的这一瞬间,立刻将当前的 X 坐标乘以直径系数(dia_mult)记录到全局变量 g32_xabs 中。
这个高度是整个螺纹循环的绝对安全底线。后续无论刀具怎么增量下潜、怎么变动,最后一单垂直拉升时,只要调用 *g32_xabs,就能100%回到最开始的安全点。
# --------------------------------------------------------------------------
pthrg32_1$ #G32 threading first
comment$
gcode$ = zero
lrapid$
# 新增:记录每一刀开始时的安全X高度(强制换算为直径),为退尾做绝对的安全保障
g32_xabs = x$ * dia_mult
# --- 新增:获取自定义螺纹定位点 ---
if tool_op$ = 227, [
g32_xabs = xabs
g32_zabs = zabs
]
# --------------------------------------------------------------------------
三、修改
# --------------------------------------------------------------------------
pthrg32_2$ #G32 threading second
gcode$ = zero
if mi9$ = 1 & mr1$ > 0, [
copy_x = vequ(x$)
pcan
c_rcc_setup$
plcc_lead_begin
pcom_moveb
]
else, [
lrapid$
]
# --------------------------------------------------------------------------
四、 进刀与主切削模块(pthrg32_3$ 动作区)修改目的:极简数学避错:抛弃了老编译器无法解析的 abs() 函数与 () 括号运算,拆解为单步运算。实现两段斜进:只要 mr5$(增量值)不为0,程序会先 G0 垂直下潜到毛坯大径外的增量安全点,随后以极短距离 W 联动斜扎,保证 $Z$ 轴行程永远大于 $X$ 轴半径行程,锁定正确进给。
# --------------------------------------------------------------------------
pthrg32_3$ #G32 threading
if face_thd = 0, glwswj = thdpulloff$ * -1
if face_thd = 1, glwswj = thdpulloff$
if sguhz = 1 & ( dlexyd = 1 | dlexyd = 2 ), glwswj = glwswj * -1
glwswk = thdpulloff$
yjlwr = mr3$
copy_x = vequ(x$)
pcom_moveb
g32_w1 = mr1$
if g32_w1 < 0, g32_w1 = g32_w1 * -1
if thread_q1 > thread_q2, g32_w1 = g32_w1 * -1
if mi9$ = 1 & mr1$ > 0, [
g32_zabs = g32_xabs
g32_xabs = copy_x * dia_mult
g32_xabs = g32_xabs + mr5$
if mr5$ <> 0, pbld, n$, "G0", *g32_xabs, e$
g32_xabs = g32_zabs
pbld, n$, *sthdgcode, pxout, *g32_w1, pffr, e$
]
pcan1, pbld, n$, sgfeed,[ if mr3$ = 0,*sthdgcode], [ if mr3$ <> 0, "G34"],
pxout, pyout, pzout, pcout,
[if Sglwtw = 1 & face_thd <> 2, *glwswj, *glwswk ],
pffr, [ if mr3$ <> 0, *syjlwr, *syjlwr, *yjlwr],
e$
pcom_movea
prv_gcode$ = m_one
# --------------------------------------------------------------------------
五、 抬刀与斜退模块(pthrg32_4$ 动作区)修改目的:数据时机拦截:改用 copy_x 捕获当前实际切削深度,解决内置 x$ 变量被提前刷新导致退刀跑去大直径的底层 Bug。两段安全联动退刀:第一段利用 G32 斜退極短距离(当前牙底直径 + mr5$),让刀尖顺畅脱离螺纹牙槽;第二段无缝衔接 G0 垂直快速拉抬到绝对安全高点 X9.95,保障加工时不刮伤工件表面。
# --------------------------------------------------------------------------
pthrg32_4$ #G32 threading fourth
# 极简方向计算
g32_w2 = mr2$
if g32_w2 < 0, g32_w2 = g32_w2 * -1
if thread_q1 > thread_q2, g32_w2 = g32_w2 * -1
if mi9$ = 1 & mr2$ > 0, [
feed = feed
# 极简数学计算
g32_zabs = g32_xabs
g32_xabs = copy_x * dia_mult
g32_xabs = g32_xabs + mr5$
# 通过判断 mr5$ 的值决定是否执行两段式
if mr5$ <> 0, pbld, n$, *sthdgcode, *g32_xabs, *g32_w2, pffr, e$
g32_xabs = g32_zabs
if mr5$ <> 0, pbld, n$, "G0", *g32_xabs, e$
if mr5$ = 0, pbld, n$, *sthdgcode, *g32_xabs, *g32_w2, pffr, e$
prv_gcode$ = m_one
]
if mi9$ <> 1 | mr2$ <= 0, [
gcode$ = zero
lrapid$
]
# --------------------------------------------------------------------------
下面是成品程序:
%
( NC: 螺纹斜进斜出加工测试 )
N1 T1010
G97 G99
G97 M03 S600
G0 X9.95 Z5. M8
G0 X7.03
G32 X5.63 W-1. F1.
G32 Z-11. F1.
G32 X7.03 W-1. F1.
G0 X9.95
G0 X9.95 Z5.
G0 X6.71
G32 X5.311 W-1. F1.
G32 Z-11. F1.
G32 X6.71 W-1. F1.
G0 X9.95
G0 X9.95 Z5.
G0 X6.391
G32 X4.991 W-1. F1.
G32 Z-11. F1.
G32 X6.391 W-1. F1.
G0 X9.95
G0 X9.95 Z5.
G0 X6.071
G32 X4.671 W-1. F1.
G32 Z-11. F1.
G32 X6.071 W-1. F1.
G0 X9.95
G0 X9.95
G0 X125.Z250.
M09
M05
M30
%
|
|