Files
cnc_wams/完善wasm/working/18-04五轴范围差异与代表应用复核.md
2026-07-10 21:26:42 -04:00

91 lines
8.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.
# 18-04 五轴范围差异与代表应用复核
## 定位
本文件落实 `ACC-030``INT-017`,复核 `04基于Web的LinuxCNC兼容数控仿真平台.txt``2.8 五轴联动专项` 的范围声明。
复核范围:
- `8.1 A/C 轴点动`
- `8.2 A 轴限位`
- `8.3 C 轴无限回转`
- `8.6 五轴联动插补`
- `8.7 斜面钻孔`
- `8.8 球面加工`
- `8.9 叶轮加工`
- `8.10 旋转轴进给率`
严格口径:
1. `web-rtcp-5axis-xyzbc-trt-sim-plan` 的默认代表应用是 `xyzbc-trt`,不能自动代表 LinuxCNC 本地树中的全部五轴族。
2. 04 中写到 `A/C``XYZAB``xyzab.ini``sphere.ngc` 或泛五轴 demo 时,必须绑定到具体 LinuxCNC 配置、程序和 profile gate。
3. LinuxCNC 本地树存在多个五轴配置族,任何一个 profile 的通过证据都不能跨 profile 继承。
## LinuxCNC 五轴资产范围
| 五轴族 | 本地 LinuxCNC 资产 | 坐标/运动学 | 当前 Web 证据含义 |
| --- | --- | --- | --- |
| XYZBC TRT | `configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini``src/emc/kinematics/xyzbc-trt-kins.c``trtfuncs.c``demos/xyzbc_switchkins.ngc``demos/boat-xyzbc.ngc` | `COORDINATES = XYZBC``KINEMATICS = xyzbc-trt-kins` | 默认代表应用Node smoke、profile、staging、semantic path、task-HAL 和 compare evidence 可作为该 profile 的代表证据 |
| XYZAC TRT | `configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini``src/emc/kinematics/xyzac-trt-kins.c``demos/xyzac_switchkins*.ngc``demos/boat-xyzac.ngc``demos/impeller-7bl-xyzac.ngc` | `COORDINATES = XYZAC``KINEMATICS = xyzac-trt-kins` | Web 项目已有 profile/source boundary 和 program-case gate不是默认 `xyzbc-trt` UI 发布结论 |
| XYZAB TDR | `configs/sim/axis/vismach/5axis/table-dual-rotary/xyzab-tdr.ini``demos/xyzab-tdr-demo.ngc` | `COORDINATES = XYZAB``KINEMATICS = xyzab_tdr_kins` | Web 项目有 gmoccapy/trivkins XYZAB boundary gate不能等同于 XYZAB TDR RTCP 完整执行 |
| XYZACB/XYZBCA TRSRN | `configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/*` | 多旋转头/台组合,含 TWP/remap/Python 边界 | 当前不属于默认 `xyzbc-trt` 代表应用完成范围 |
| max5/bridgemill 等 | `configs/sim/axis/vismach/5axis/max5``bridgemill` | 其他五轴仿真配置 | 需逐 profile 建 gate不能由 `xyzbc-trt` 继承 |
## 关键源码差异
| 04 写法 | 本地源码复核 | 严格结论 |
| --- | --- | --- |
| `A/C 轴点动` | `xyzac-trt.ini``XYZAC`;默认代表应用 `xyzbc-trt.ini``XYZBC`Web 默认 profile 明确 `coordinates: ["X","Y","Z","B","C"]` | 04 写 A/C 时不能由默认 XYZBC 证据直接覆盖;需使用 XYZAC profile gate 或改写为 B/C 代表应用 |
| `A 轴限位 ±120°` | `xyzac-trt.ini``[AXIS_A] MIN_LIMIT=-100 MAX_LIMIT=50``xyzab-tdr.ini``[AXIS_A] MIN_LIMIT=-3600 MAX_LIMIT=3600`;未见 04 写的 `±120` 对应配置 | 需修订 04 限位数值或指定真实来源配置 |
| `C 轴 WRAPPED_ROTARY` | LinuxCNC 支持 `WRAPPED_ROTARY`,源码读取在 `rs274ngc_pre.cc`;但 `xyzbc-trt.ini`/`xyzac-trt.ini` 的 C 轴采用 `MIN_LIMIT=-36000 MAX_LIMIT=36000`,未设置 `WRAPPED_ROTARY=1` | C 轴大范围回转代表证据成立;`WRAPPED_ROTARY` 字面结论需单独绑定 wrapped rotary 配置 |
| `sphere.ngc` | 本地 `linuxcnc``wasm-port/vendor` 未发现 `nc_files/5axis/sphere.ngc`;现有代表程序为 `boat-xyzbc.ngc``boat-xyzac.ngc``xyzbc_switchkins.ngc``impeller-7bl-xyzac.ngc` 等 | 04 的 sphere fixture 需修订或补入具体上游资产;不能按不存在路径宣称通过 |
| `叶轮加工 自定义路径` | 本地存在 `impeller-7bl-xyzac.ngc`Web 项目有 `verify_impeller_feed_task_hal_run.mjs``verify_real_linuxcnc_5axis_program_cases.mjs` | 叶轮项可按 XYZAC/impeller 代表程序条件通过;不能自动归入默认 XYZBC profile |
## 现有 Web 证据边界
| 证据 | 覆盖内容 | 边界 |
| --- | --- | --- |
| `tests/node/verify_xyzbc_trt_web_app.mjs` | 默认 `xyzbc-trt` profile、`XYZBC` 坐标、B/C 轴、`xyzbc_switchkins.ngc``boat-xyzbc.ngc``helix_bc.ngc`、task-HAL 状态 | 只证明默认 XYZBC TRT 代表应用,不证明 A/C、XYZAB 或全部五轴族 |
| `tests/node/verify_profile_boundary.mjs` | `xyzac-trt``xyzbc-trt``gmoccapy-xyzac-trt``gmoccapy-xyzab` 的 profile/source boundary | 多 profile 边界存在,但部分 profile `promotionAllowed=false`,不能直接宣称 UI 发布 |
| `tests/node/verify_real_linuxcnc_5axis_program_cases.mjs` | `boat-xyzac``boat-xyzbc``impeller-7bl-xyzac``xyzac_switchkins_test_*``xyzac_switchkins``xyzbc_switchkins` 的 LinuxCNC vendored G-code source guard 与 canonical/TP samples | 是程序级代表 proof不等价于所有机床 UI/RTCP/full-process 都通过 |
| `tests/node/verify_impeller_feed_task_hal_run.mjs` | `impeller-7bl-xyzac.ngc` 的进给段、Task-HAL 执行和速度段 evidence | 支撑 8.9 叶轮代表程序profile 是 XYZAC/impeller不是默认 XYZBC |
## 04 条目结论
| 04 项 | 复核结论 | 后续 gate |
| --- | --- | --- |
| `8.1 A/C 轴点动` | 条件通过:默认代表应用是 B/CA/C 需走 `xyzac-trt` profile gate | 增加 A/C profile 的 browser/evidence gate或将 04 默认代表项改写为 B/C |
| `8.2 A 轴限位` | 需修订:未见 `±120°` 来源;本地 `xyzac``-100..50``xyzab-tdr``-3600..3600` | 指定真实 INI 或修订验收数值 |
| `8.3 A 轴回卷旋转` | 已修订:上游 `wrapped_rotary.ini``[AXIS_A] WRAPPED_ROTARY=1` 已进入 vendor 和结构化 INI gate | 保持独立 wrapped-rotary profile不由 XYZBC/XYZAC C 轴大范围配置替代 |
| `8.6 五轴联动插补` | 已有代表应用证据:`xyzbc_switchkins``boat-xyzbc` 和多 profile program-case gate | 保持 profile 粒度,不跨 profile 继承 |
| `8.7 斜面钻孔` | 待补专项证据:已有 `centering.ngc``helix_bc.ngc` 和固定循环/旋转组合线索,但未形成“斜面钻孔”专名 gate | 增加固定循环 + 旋转定位的 program-case JSON |
| `8.8 球面加工` | 需修订或补 fixture本地未发现 04 写的 `sphere.ngc`;可用 `boat-xyzbc/boat-xyzac` 作为曲面代表,但名称和来源要改 | 指定存在的上游 G-code 或新增 sphere 资产来源证明 |
| `8.9 叶轮加工` | 条件通过:`impeller-7bl-xyzac.ngc` 和专项 Node gate 存在;不是默认 XYZBC profile | 运行并登记 `verify_impeller_feed_task_hal_run.mjs`、program-case gate |
| `8.10 旋转轴进给率` | 条件通过XYZAC impeller 4066 个旋转进给段公式通过6 段受 INI 限速,实际峰值 1800 deg/min | 保留 requested/actual/limit 三类字段和 timing-estimate 边界 |
## 最小验收命令建议
```bash
npm --prefix web-rtcp-5axis-xyzbc-trt-sim-plan/app run smoke:node
node web-rtcp-5axis-xyzbc-trt-sim-plan/tests/node/verify_profile_boundary.mjs
node web-rtcp-5axis-xyzbc-trt-sim-plan/tests/node/verify_real_linuxcnc_5axis_program_cases.mjs
node web-rtcp-5axis-xyzbc-trt-sim-plan/tests/node/verify_impeller_feed_task_hal_run.mjs
```
通过标准:
- 默认 `xyzbc-trt` 仍必须输出 `xyzbc_trt_web_app_smoke=ok`
- profile boundary 必须明确 `xyzac-trt``xyzbc-trt``gmoccapy-xyzac-trt``gmoccapy-xyzab` 的坐标、promotion 状态和 source reference。
- program-case gate 必须覆盖 `boat-xyzbc``impeller-7bl-xyzac`,并保留 `linuxcnc_vendored_5axis_gcode_source_file` source guard。
- 叶轮项必须由 `impeller-7bl-xyzac.ngc` 专项 gate 支撑,不得写成默认 `xyzbc-trt` 全面完成。
## 结论
`ACC-030/INT-017` 已完成五轴范围差异复核。当前可以继续宣称 `xyzbc-trt` 作为默认代表应用已有较完整证据,也可以登记 `xyzac/gmoccapy/impeller` 的专项 source-boundary 证据;但不能把 04 的 `10/10 五轴通过` 原文直接继承为“所有 A/C、XYZAB、sphere、impeller、TRSRN、max5 等五轴族全部 UI 发布”。后续所有五轴晋级必须按 profile、配置文件、G-code 程序和 evidence gate 四者绑定。
## 后续状态
`ACC-046/INT-033` 已修订 04 原文A 轴范围绑定 `xyzac-trt.ini``-100..50`,五轴联动绑定 `xyzbc_switchkins.ngc`,曲面加工绑定现有 `boat-xyzbc.ngc/boat-xyzac.ngc`。不存在的 `sphere.ngc` 和跨 profile 的 ±120° 声明已移除;各 profile 仍不得互相继承 UI 发布结论。
`ACC-047/INT-034` 已把 `wrapped_rotary.ini` 纳入 source manifest/vendor 并以结构化 parser 证明 A 轴 `WRAPPED_ROTARY=1`;同时修复 G93 timing 对角轴 INI 限速的遗漏,补齐 8.10 的 requested/actual/limit 数值证据。