Files
cnc_wams/完善wasm/working/15-04语法口径源码复核.md
2026-07-10 21:26:42 -04:00

46 lines
4.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 15-04 语法口径源码复核
## 定位
本文件复核 `04基于Web的LinuxCNC兼容数控仿真平台.txt` 中疑似与本地 LinuxCNC 源码口径不完全一致的 G/M 代码项。复核对象限定为 `/home/mes123456/cnc_wams/linuxcnc` 当前锁定 commit `60597ee0718873d2449058c824262a275e5e4bad`,结论只对该本地源码基线负责。
## 复核结论表
| 04 项 | 04 写法 | 本地 LinuxCNC 源码证据 | 严格结论 | 后续处理 |
| --- | --- | --- | --- | --- |
| 1.40 | 坐标旋转 G68/G69 | `interp_internal.hh:237-242` 未见 `G_68/G_69`;坐标旋转由 G10/G5x R 参数进入 `rotation_xy`,见 `interp_convert.cc:2406-2429``interp_convert.cc:4938-4940` | 需修订:不能按本地源码宣称 G68/G69 已对标 | 将验收口径改为 LinuxCNC G10/G5x R / `rotation_xy` / `SET_XY_ROTATION`;若坚持 G68/G69必须另补真实源码或版本差异证据 |
| 1.41 | 镜像 G51.1/G50.1 | `interp_internal.hh:241-242` 只有 `G_50/G_51``interp_convert.cc:2923` 将 G50/G51 列入控制模式;未检索到 `G_51_1/G_50_1` | 需修订04 的 G51.1/G50.1 镜像口径未被本地源码证实 | 不得把 G51.1/G50.1 作为本地 LinuxCNC 已支持项;如需要镜像功能,先补上游源码/测试或改为项目扩展并标非 LinuxCNC-owned |
| 7.3 | 主轴模式切换 M19/M18 | M19 在 `interp_convert.cc:4063-4077` 调用 orient/wait 队列,文档 `docs/src/gcode/m-code.adoc:213-234` 定义 `M19 R- Q- [P-] [$-]`;未找到 M18 作为速度模式切换的解释器或文档证据 | 部分成立M19 orient 成立M18 速度模式不成立或待证据 | 7.3 严格状态保留为部分成立M18 不进入通过统计,除非后续找到本地 LinuxCNC 对应实现 |
| 8.4 | RTCP 开启 G43.1,并涉及 G43.4 口径 | `interp_internal.hh:237-240``G_43/G_43_1/G_43_2/G_49``interp_convert.cc:6273-6284` 实现 G43.1 动态刀长补偿;未检索到 `G_43_4` | 部分成立G43.1 是动态刀长补偿,不能等同声明本地源码支持 G43.4 RTCP 开启 | RTCP 验收应绑定 `xyzbc-trt-kins.c``trtfuncs.c`、switchkins/remap、刀具偏置和 native/Web evidenceG43.4 不得宣称已支持 |
| 8.5 | RTCP 关闭 G49 | `interp_convert.cc:6234-6236` 处理 G49 为取消刀长补偿,随后 `USE_TOOL_LENGTH_OFFSET` 更新 offset无证据表明 G49 独立关闭 RTCP 运动学状态 | 部分成立G49 取消 TLO 成立等价“RTCP 关闭”需另补运动学状态证据 | 表述改为“取消刀长补偿/撤销与 RTCP 相关的工具偏置输入”;不能单独作为 RTCP off 完整证据 |
## 源码检索记录
执行的关键检索:
```bash
rg -n "G_68|G_69|G_43_4|G_51_1|G_50_1|G_43_1|G_43_2|G_50|G_51|M19|ORIENT_SPINDLE|SET_XY_ROTATION|rotation_xy" linuxcnc/src/emc/rs274ngc linuxcnc/docs/src linuxcnc/configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating
rg -n "G43\.4|G68|G69|G51\.1|G50\.1|M18" linuxcnc/docs/src/gcode linuxcnc/src/emc/rs274ngc
```
检索结论:
- 未发现本地解释器枚举或 G-code 文档中的 `G68/G69``G51.1/G50.1``G43.4`
- 已发现 `rotation_xy``SET_XY_ROTATION`、G10/G5x R 坐标旋转路径。
- 已发现 `G43.1` 动态刀长补偿、`G43.2` 累加刀长补偿、`G49` 取消刀长补偿路径。
- 已发现 `M19` orient spindle 路径和 `$` 多主轴选择约束,未发现 `M18` 作为速度模式切换路径。
## 对 working 的影响
1. `14-04-125项逐项源码证据绑定表.md` 中 1.40、1.41、7.3、8.4、8.5 不再标为泛泛“待复核”,改为明确的“需修订/部分成立”。
2. `13-04验收文档任务对标矩阵.md` 的 W04-EVID-002 已有首个复核结果04 的部分 G/M 代码写法不能自动继承为 LinuxCNC 通过项。
3. 后续若要把 04 的 125 项全部晋级,必须先修订上述五项口径,或补充本地 LinuxCNC 以外的版本差异说明和独立扩展边界。
## 结论
本轮已完成 04 语法口径复核的首批高风险项。当前可确认的是LinuxCNC 源码支持 `rotation_xy` 坐标旋转路径、`G43.1/G43.2/G49` 刀长补偿路径和 `M19` 主轴定向路径;不能确认本地 LinuxCNC 支持 04 所写的 `G68/G69``G51.1/G50.1``G43.4``M18` 速度模式切换。
## 后续状态
`ACC-046/INT-033` 已按本复核结论修订 04 原文1.40/1.41 改为 `G10 L2 Pn R/R0` 设置与取消旋转7.3 改为 M19 主轴定向6.4/8.4/8.5 改为预编译 TRT kinematics 与 G43.1/G49 刀偏输入边界。项目未新增 G68/G69、镜像、G43.4 或 M18 私有语义。