|
|
楼主 |
发表于 2026-6-2 21:21:12
|
显示全部楼层
做了一定修改
这份“Mastercam G32 完美版两段式增量斜进斜退”后处理修改方案,是经过多次底层排雷与实战优化的最终心血结晶。它不仅攻克了 Fanuc 系统的“45度长轴报警”缺陷,消灭了代码丢失与进给暴走的 Bug,还实现了 4 种进退刀模式的自由切换。
---
### 🚀 核心功能特性
1. **四模切换**:支持直插直退(0)、斜进斜退(1)、仅斜进(2)、仅斜退(3)。
2. **两段式绝对安全退尾**:利用 `*g32_xabs` 锁定起刀安全高度,退刀时先斜退脱离牙槽,再垂直拉升至绝对高点,彻底杜绝盲切拖刀。
3. **系统防错展平**:摒弃复杂的括号与 `abs()` 函数,采用极简正负反转算法,免疫老版本编译器的乱码与逻辑崩溃。
4. **智能方向识别**:自动读取螺纹起止点判断正反车削,编程员只需无脑输入正数。
---
### 🛠️ 完整代码修改全记录
#### 第一步:全局变量定义与格式化
**位置**:在文件顶部搜索 `fmt` 区域。
**操作**:粘贴以下代码(严格顶格,不要留多余空格)。
# --------------------------------------------------------------------------
g32_x_mid : 0 # 运算中转
g32_xabs : 0 # 标记g32安全X绝对高度
g32_zabs : 0 # 标记g32安全Z绝对高度
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
# --------------------------------------------------------------------------
```
#### 第二步:系统参数捕获 (自动识别方向)
**位置**:搜索 `pparameter$` 模块。
**操作**:在读取加工参数的区域插入 `10813` 和 `10814`。
pparameter$ #Information from parameters
if prmcode$ = 20103, stinsert2 = sparameter$
result = fprm (abs(lathecc))
# --- 插入这两行提取螺纹起止点 ---
if prmcode$ = 10813, thread_q1 = rparsngl(sparameter$,1)
if prmcode$ = 10814, thread_q2 = rparsngl(sparameter$,1)
# -----------------------------
```
#### 第三步:G32 第一阶段 (锁定绝对安全高度)
**位置**:替换 `pthrg32_1$` 模块。
# --------------------------------------------------------------------------
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
]
# --------------------------------------------------------------------------
```
#### 第四步:G32 第二阶段 (进刀拦截准备)
**位置**:替换 `pthrg32_2$` 模块。
# --------------------------------------------------------------------------
pthrg32_2$ #G32 threading second
gcode$ = zero
if (mi9$ = 1 | mi9$ = 2) & mr1$ > 0, [
copy_x = vequ(x$)
pcan
c_rcc_setup$
plcc_lead_begin
pcom_moveb
]
else, [
lrapid$
]
# --------------------------------------------------------------------------
```
#### 第五步:G32 第三阶段 (两段斜进与主切削)
**位置**:替换 `pthrg32_3$` 模块。
# --------------------------------------------------------------------------
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 | mi9$ = 2) & 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, *yjlwr],
e$
pcom_movea
prv_gcode$ = m_one
# --------------------------------------------------------------------------
```
#### 第六步:G32 第四阶段 (联动抬刀斜退)
**位置**:替换 `pthrg32_4$` 模块。
# --------------------------------------------------------------------------
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 | mi9$ = 3) & mr2$ > 0, [
feed = feed
g32_zabs = g32_xabs
g32_xabs = copy_x * dia_mult
g32_xabs = g32_xabs + 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 & mi9$ <> 3) | mr2$ <= 0, [
gcode$ = zero
lrapid$
]
# --------------------------------------------------------------------------
```
---
#实战注意事项
#### 1. 控制定义 UI 提示修改
为了让编程员直观操作,强烈建议打开 Mastercam 的**控制定义 ** -> **文本** -> **杂项整数**。
将 `[9]` (对应 `mi9$`) 的描述修改为:
**`自定义螺纹控制: 0=直插, 1=斜进斜退, 2=仅斜进, 3=仅斜退`**
#### 2. 实战参数填写规范 (核心避坑指南)
在螺纹刀轨的“杂项变量”面板中,严格遵守以下填写规则:
* **安全高度 (软件刀轨自带)**:根据毛坯正常给定(必须略大于毛坯外径/小于内孔)。
* **W 向斜进量 (mr1$) / 斜退量 (mr2$)**:输入正数绝对值(如 `1.0` 或 `2.0`),后处理会自动判别正负方向,无需人为添加负号。
* **X 向增量 U 值 (mr5$)**:
* **外螺纹**输入正数(如 `1.4`),**内螺纹**输入负数(如 `-1.4`)。
* ⚠️ **极度警告 1**:这里填写的 `mr5$` 必须是**直径值**(因为底层坐标已经乘以了 `dia_mult` 系数)。
* ⚠️ **极度警告 2(破解 Fanuc 45度报错的命门)**:你设置的 `mr5$` 的**半径增量**(即 `mr5$ / 2`,例如 $1.4 \div 2 = 0.7$)**必须严格小于**你的 `mr1$` 或 `mr2$`(W 进退刀量,如 1.0)。只有满足 $Z向距离 > X向半径距离$,系统才不会触发长轴错乱报警。
#### 3. 备份建议
此版本涉及后处理最核心的坐标分配与插补逻辑,请将修改好的 `.pst` 文件重命名为类似 `GENERIC_FANUC_4X_MT_LATHE_G32优化版_V1.pst` 妥善保存。在未来升级 Mastercam 版本迁移后处理时,这些极简的代码逻辑可以直接无损平移。 |
|