81 lines
6.3 KiB
Markdown
81 lines
6.3 KiB
Markdown
# gmoccapy XYZAC TRT RTCP 五轴对标验证评价
|
||
|
||
日期:2026-07-01
|
||
|
||
## 1. 评价结论
|
||
|
||
`gmoccapy-xyzac-trt` 页面功能已在 Web 仿真边界内对标 LinuxCNC `gmoccapy` 非平凡五轴 TRT 示例。结论为:通过。
|
||
|
||
通过范围是浏览器/Web/WASM 仿真边界:页面 profile、INI/HAL/TBL/NGC 项目文件 staging、gmoccapy POSTGUI 工具与主轴 HAL 语义、固定 TRT 默认 TCP 运动学、LinuxCNC interpreter canonical motion、TP planner sample、RTCP frame、DRO/Three.js 页面状态和 source guard 均已验证。该结论不声明原生 GTK `gmoccapy.py` 已移植,不声明真实硬件、host realtime kernel、host HAL shared memory、native LinuxCNC task 进程或 host tool DB process 已就绪。
|
||
|
||
## 2. LinuxCNC 基线
|
||
|
||
本轮对标的 LinuxCNC 来源位于 `/home/meswork/cnc_wams/linuxcnc`:
|
||
|
||
| 类别 | 基线文件 | 对标要点 |
|
||
| --- | --- | --- |
|
||
| gmoccapy TRT INI | `configs/sim/gmoccapy/non_trivial_kinematics/table-rotary-tilting/xyzac-trt.ini` | `DISPLAY=gmoccapy`、`OPEN_FILE=./examples/impeller-7bl-xyzac.ngc`、`JOG_AXES=XYZC`、`TRAJ=XYZAC`、`KINEMATICS=xyzac-trt-kins` |
|
||
| gmoccapy POSTGUI HAL | `configs/sim/gmoccapy/non_trivial_kinematics/table-rotary-tilting/postgui.hal` | `gmoccapy.spindle_feedback_bar`、`gmoccapy.spindle_at_speed_led`、`gmoccapy.toolchange-*`、`gmoccapy.tooloffset-z` |
|
||
| generated HAL / tool table / vars | `xyzac-trt_cmds.hal`、`xyzac-trt.tbl`、`xyzac.var` | gmoccapy 机床项目文件、刀具表和 task/HAL session 来源 |
|
||
| remap macros | `configs/sim/gmoccapy/macros/change_g43.ngc`、`settool_g43.ngc` | `M6`、`M61` gmoccapy 工具更换/设刀 remap |
|
||
| 实际五轴程序 | `examples/impeller-7bl-xyzac.ngc`、`boat-xyzac.ngc`、`boat-xyzbc.ngc`、`test-xyzac.ngc`、`test-xyzbc.ngc` | gmoccapy TRT 示例程序 staging、选择、解释、预览 |
|
||
| 运动学源码 | `src/emc/kinematics/xyzac-trt-kins.c`、`trtfuncs.c`、`switchkins.c` | TRT 正逆解、TCP/identity/userk 类型语义 |
|
||
|
||
关键差异已经显式建模:axis/vismach TRT profile 使用 `sparm=identityfirst`,`switchkinsType=1` 为 TCP;gmoccapy TRT INI 不带 `sparm=identityfirst`,因此默认 type 0 即固定 TRT/TCP。Web profile 将这一点映射为 `kinsType=tcp-xyzac`、`rtcpState=on` 的默认状态。
|
||
|
||
## 3. Web 对标实现
|
||
|
||
| 实现项 | 文件 | 评价 |
|
||
| --- | --- | --- |
|
||
| 新增 profile | `app/src/profiles/gmoccapy-xyzac-trt.js`、`app/src/profiles/index.js` | 已对齐 gmoccapy INI 路径、display、open file、jog axes、M6/M61 remap、POSTGUI HAL、tool table、fixed TRT 默认 TCP |
|
||
| source reference | `app/src/profiles/source-reference-map.js` | 已把 gmoccapy TRT INI、HAL、TBL、examples、macros、kinematics source 纳入可追溯来源 |
|
||
| vendored LinuxCNC 文件 | `../wasm-port/vendor/linuxcnc/configs/sim/gmoccapy/...`、`../wasm-port/tools/source-manifest.txt` | 已复制 LinuxCNC gmoccapy TRT 配置、examples 和 macros;manifest 已纳入这些文件 |
|
||
| machine-file staging | `app/src/runtime/linuxcnc-machine-file-staging.js` | 已支持 profile-specific `machineRel`、`demoDirectory=examples`、gmoccapy examples source guard、OPFS/memory fallback |
|
||
| INI parser | `app/src/runtime/linuxcnc-ini-runtime.js` | 已区分 switchkins TRT 与 gmoccapy fixed TRT;gmoccapy 不强制 HALUI M428/M429/M430 和 `HAL_PIN_VARS=1`,改为要求 M6/M61 与 gmoccapy HALCMD 关键项 |
|
||
| store/main | `app/src/state/store.js`、`app/src/main.js` | 已让 fixed TRT 默认进入 `tcp-xyzac`/RTCP on,并按 profile 默认加载 `impeller-7bl-xyzac.ngc` |
|
||
| build/static | `app/scripts/build-static.mjs` | 已把 gmoccapy config assets 复制到 source/dist 两套浏览器路径 |
|
||
| 页面 smoke | `tests/browser/gmoccapy_shell_smoke.html` | 已通过真实页面 profile selector 切换到 `gmoccapy-xyzac-trt`,验证 gmoccapy display、examples staging、INI、kinematics runtime、RTCP frame |
|
||
|
||
## 4. 测试与验证
|
||
|
||
| 测试项 | 验证内容 | 结果 |
|
||
| --- | --- | --- |
|
||
| profile/source map | profile 字段、fixed TRT 默认 type、gmoccapy HAL pins、source reference kinds | 通过 |
|
||
| INI 解析 | `xyzac-trt.ini` 的 DISPLAY、TRAJ、KINS、M6/M61、POSTGUI、HALCMD、servo/task period | 通过 |
|
||
| 文件 staging | gmoccapy INI、TBL、macros、examples 进入 staged project,source guard 接受 `/examples/` | 通过 |
|
||
| 实际程序解释 | `impeller-7bl-xyzac.ngc`、`boat-xyzac.ngc`、`boat-xyzbc.ngc` 由 LinuxCNC interpreter runtime 输出 canonical motion 与 planner samples | 通过 |
|
||
| 运动学/RTCP | `xyzac-trt` WASM 以 fixed TRT type 0 构造 source-derived RTCP frame,页面默认 RTCP on | 通过 |
|
||
| store/run preconditions | 切换 profile、加载 INI/runtime、加载 gmoccapy example、programValidation source guard、tool DB readiness、run preconditions | 通过 |
|
||
| 浏览器页面 | source 与 dist 页面均完成 gmoccapy shell smoke,并显式覆盖 `gmoccapy-xyzac-trt` profile 切换 | 通过 |
|
||
| 静态构建 | gmoccapy config assets 被复制到 dist 并通过浏览器 dist smoke | 通过 |
|
||
|
||
已执行命令及关键输出:
|
||
|
||
```text
|
||
node tests/node/verify_gmoccapy_xyzac_trt_parity.mjs
|
||
gmoccapy_xyzac_trt_parity_smoke=ok
|
||
|
||
npm --prefix app run smoke:node
|
||
xyzac_trt_kinematics_runtime=ok
|
||
xyzbc_trt_kinematics_runtime=ok
|
||
real_linuxcnc_5axis_program_cases_smoke=ok
|
||
machine_file_staging_smoke=ok
|
||
rtcp_store_smoke=ok
|
||
profile_boundary_smoke=ok
|
||
gmoccapy_xyzac_trt_parity_smoke=ok
|
||
gmoccapy_trt_project_sidebar_smoke=ok
|
||
linuxcnc_parity_matrix_smoke=ok
|
||
|
||
npm --prefix app run smoke
|
||
gmoccapy_shell_smoke=ok
|
||
gmoccapy_dist_smoke=ok
|
||
```
|
||
|
||
此前也已执行 `npm --prefix app run build`,输出 `gmoccapy_static_build=ok`。
|
||
|
||
## 5. 评价
|
||
|
||
`gmoccapy-xyzac-trt` 已达到本项目页面功能对标要求:页面选择、项目文件、默认程序、INI/HAL/TBL/macros、真实 gmoccapy TRT examples、fixed TCP 运动学和 RTCP 页面状态均来自 LinuxCNC 源文件或 source-derived runtime 证据,不再把 axis/vismach switchkins 配置误当作 gmoccapy fixed TRT 配置。
|
||
|
||
剩余边界不是本轮缺陷,而是明确的能力边界:浏览器不运行 native GTK gmoccapy,不连接 host HAL shared memory,不控制真实电机/IO,不启动 host realtime kernel,不执行任意 host user-M 或 native tool DB process。后续若要声明这些能力,需要新增 host/native 级验证,而不能沿用当前 Web simulation 结论。
|