# 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 evidence;G43.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 私有语义。