Files
cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan/working/07-全量对标追踪矩阵.md
2026-07-02 23:53:51 -04:00

142 lines
13 KiB
Markdown
Raw 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.
# 07-全量对标追踪矩阵
本文件把 `doc/xyzbc-trt-runtime-files.md` 中记录的 LinuxCNC `xyzbc-trt` 真实运行功能,逐项映射到 Web 数控系统仿真界面的目标、证据和缺口。
原则:
- Web 实现必须完全对标 `xyzbc-trt-runtime-files.md` 的运行语义。
- LinuxCNC 源码、INI、HAL、remap、tool table、parameter file 和 kinematics 是语义真源。
- AXIS、PyVCP、Vismach 这类桌面 UI 组件在 Web 中做同语义等效实现。
- 每项对标最终都要进入 native/Web evidence JSON 和 compare JSON不能只停留在 UI 文案。
- 后续 native 真实执行基线统一采用 `/home/mes123456/cnc_wams/linuxcnc``/home/mes123456/linuxcnc-master` 只作为历史运行树参考。
## 运行入口与进程对标
| LinuxCNC 功能 | 真实配置来源 | Web 对标目标 | Evidence/验收 |
| --- | --- | --- | --- |
| `.desktop` 启动 `rip-environment linuxcnc xyzbc-trt.ini` | `/home/mes123456/cnc_wams/linuxcnc/linuxcnc-rtcp-5axis-shortcuts/.../xyzbc-trt.desktop` | Web profile 一键进入 `xyzbc-trt`,自动加载同一 INI/staging 文件集 | web JSON 记录 `profile=xyzbc-trt``iniPath``startupSequence` |
| `linuxcncsvr``rtapi_app``milltask``halui` | 当前进程清单 | Web runtime 用 worker/WASM/task-HAL 表示 server/task/halui 边界 | compare 检查 `runtimeComponents` 包含 `interp``tp``taskHal``haluiEquivalent` |
| AXIS 主界面进程 | `bin/axis -ini xyzbc-trt.ini` | Web 首屏直接进入 CNC 操作界面,不做营销页 | 浏览器 smoke 检查坐标、程序、switchkins、3D canvas 均可见 |
| Vismach 进程 | `loadusr -W xyzbc-trt-gui` | Web 3D 机床模型按 HAL pin 驱动 | evidence 记录 Vismach pin 值、HAL net 和模型变换 |
## INI 与显示配置对标
| INI 字段 | LinuxCNC 行为 | Web 对标目标 | 状态 |
| --- | --- | --- | --- |
| `[EMC] MACHINE = sim-xyzbc-trt-kins (switchkins)` | AXIS 标题/机器名 | 页面机器名、JSON machine name 一致 | 已完成Web evidence 记录 profile/INI machine |
| `[DISPLAY] DISPLAY = axis` | 启动 AXIS | Web 实现 AXIS 等效操作面板 | 已完成browser smoke 与 `axisMainUi` evidence 覆盖 |
| `[DISPLAY] GEOMETRY = XYZB` | AXIS 几何显示 | Web 坐标/预览按 XYZB 几何显示C 轴仍参与机床/路径 | 已完成,`axisJointLimits` 和路径样本覆盖 XYZBC/XYZB 显示语义 |
| `[DISPLAY] JOG_AXES = XYZC` | 手动 jog 轴集合 | Web jog 控制至少覆盖 X/Y/Z/C并显示 B/C 状态 | 已完成,`axisMainUi` 与 task/HAL 状态流覆盖 |
| `[DISPLAY] POSITION_OFFSET = RELATIVE` | 坐标偏置显示 | Web 默认显示相对坐标并可记录 work offset | 已完成Web UI/evidence 记录坐标显示能力 |
| `[DISPLAY] POSITION_FEEDBACK = ACTUAL` | 显示实际反馈位置 | Web 坐标读数来自 task/HAL actual feedback不只显示 commanded | 已完成Web executionPath 由 task/HAL feedback 采集 |
| `[DISPLAY] MAX_FEED_OVERRIDE = 2` | 进给倍率最大 200% | Web feed override 控件范围 0-200% | 已完成,`axisMainUi``axisJointLimits` evidence 覆盖 |
| `[DISPLAY] MAX_LINEAR_VELOCITY = 1000` | AXIS UI 限速 | Web UI 限速显示/约束一致 | 已完成,`axisJointLimits` evidence 覆盖 |
| `[DISPLAY] MAX_ANGULAR_VELOCITY = 360` | 角轴限速 | Web 角轴 jog/显示限速一致 | 已完成,`axisJointLimits` evidence 覆盖 |
| `[DISPLAY] PROGRAM_PREFIX = ../../nc_files` | 打开程序默认目录 | Web 程序文件浏览/staging 根目录记录等效路径 | 已完成OPFS staging 和 Web evidence 覆盖 |
| `[DISPLAY] TOOL_EDITOR = tooledit z diam` | 工具编辑字段 | Web tool editor 至少支持 Z 和 diameter | 已完成tool table T/P/Z/D 和 active offset closure 覆盖 |
| `TKPKG/NGCGUI_*` | AXIS Ngcgui 面板加载子程序 | Web 需 stage 并提供子程序参数化调用入口或等效验证 | 已完成Web evidence 通过 WASM wrapper 执行 Ngcgui 子程序全集 |
## 文件 staging 对标
| 文件 | 作用 | Web 对标目标 | 当前要求 |
| --- | --- | --- | --- |
| `xyzbc-trt.ini` | 主配置 | OPFS/wasm runtime 必须使用同源 INI | 已完成Web evidence 校验 INI 和 DISPLAY/TRAJ/JOINT 字段 |
| `xyzbc-trt.xml` | PyVCP switchkins 面板 | Web switchkins 面板由 XML/schema 驱动 | 已完成Web evidence 覆盖 PyVCP XML 与 pin 连接 |
| `switchkins_postgui.hal` | PyVCP 到 halui MDI 的连接 | Web 需记录 `pyvcp.* -> halui.mdi-command-*` | 已完成compare 检查 `postguiHalEquivalent` 通过 |
| `basic_sim.tcl` | 基础仿真 HAL | Web task/HAL runtime 等效模拟 joint/home/spindle/toolchange | 已完成native/Web `basicSimEquivalent` 均通过 compare |
| `xyzbc-trt_cmds.hal` | 运行后生成 HAL | Web evidence 需记录等效展开 HAL nets | 已完成Web evidence 记录 switchkins、PyVCP、Vismach、tool-offset 等效 HAL nets |
| `xyzbc-trt-gui.py` | Vismach 模型 | Web 3D pin/模型层级对标 | 已完成 Web 端模型层级、evidence 和浏览器 smoke 验收 |
| `axis.py` | AXIS 主界面行为 | Web 操作面板对标 AXIS 关键行为 | 已完成AXIS 首屏等效已通过 browser smoke 和 evidence |
| `axis.py` 按钮命令 | `estop_clicked/onoff_clicked/task_run/task_pause/task_resume/task_step/task_stop/jog_*/home_all_joints/send_mdi/set_view_*/clear_live_plot` | Web `AXIS_BUTTON_PARITY` 逐按钮记录来源、动作和状态效果 | 已完成T-041/T-042 覆盖按钮矩阵、DOM source metadata、Node 状态机和 browser 实际点击验证 |
| `xyzbc-trt-kins.c` | 运动学真源 | WASM kinematics 使用 source-derived artifact | 已完成WASM kinematics artifact 已进入 app/dist 并通过 evidence |
| `xyzbc-trt.tbl` | 工具表 | Web tool DB 读取 T/P/Z/D | Web evidence 已证明 T2/P2/Z10/D8 驱动 kinematics、path tool 和 Vismach tool-offset |
| `xyzbc.var` | 参数文件 | OPFS 保存/恢复参数 | 已完成staging 和 Web evidence 覆盖参数文件 |
## HAL 与 switchkins 对标
| LinuxCNC HAL 语义 | Web 对标目标 | Evidence/验收 |
| --- | --- | --- |
| `motion.analog-out-03 => motion.switchkins-type` | Web remap/MDI 写入 switchkins type并暴露当前类型 | native/Web JSON 对比 switchkins transitions |
| `halui.mdi-command-00 = M429` | Web `IDENTITY` 按钮执行 M429 | 按钮事件、MDI 命令、switchkins type 都写入 evidence |
| `halui.mdi-command-01 = M428` | Web `TCP:XYZBC` 按钮执行 M428 | 同上 |
| `halui.mdi-command-02 = M430` | Web `userk` 按钮执行 M430 | 同上 |
| `kinstype.is-0/1/2 -> pyvcp.multilabel` | Web multilabel 显示当前 kinematics | UI state 与 HAL state 一致 |
| `pyvcp.vismach-clear -> vismach.plotclear` | Web clear 按钮清除 3D 轨迹/preview buffer | evidence 记录 clear 前后 path count |
| `joint.N.pos-fb -> xyzbc-trt-gui.*` | Web 3D 模型从 actual joint feedback 驱动 | path/execution JSON 记录 feedback 来源 |
| `motion.tooloffset.z -> xyzbc-trt-kins.tool-offset -> gui.tool-offset` | 工具长度同时影响 kinematics 和模型显示 | tool table、tool offset、TCP/toolAxis 误差检查 |
## 运动学与机床模型对标
| 项目 | LinuxCNC 来源 | Web 对标目标 |
| --- | --- | --- |
| `KINEMATICS = xyzbc-trt-kins sparm=identityfirst` | INI/KINS | 默认 switchkins type 0 为 identityM428 后为 XYZBC TCP |
| `JOINTS = 5` | INI/KINS | Web runtime 固定 XYZBC 五关节 |
| `x-offset = -20` | HALCMD sets | Web kinematics pin 默认值一致 |
| `z-offset = -15` | HALCMD sets | Web kinematics pin 默认值一致 |
| `x/y/z-rot-point = 0` | HALCMD setp | Web kinematics pin 默认值一致 |
| `conventional-directions = 0` | HALCMD setp | Web kinematics pin 默认值一致 |
| `table-x/saddle-y/spindle-z/tilt-b/rotate-c` | Vismach pins | Web 模型层级按这些反馈驱动;`vismachEquivalent.pinValues/transforms` 可验收 |
| `tool-offset/x-offset/z-offset` | Vismach/kines pins | Web 刀具和模型偏置一致T-034 已完成 Web tool table active offset 闭环native/Web evidence 已重采并通过 compare |
## G-code、remap 与子程序对标
| 文件/命令 | LinuxCNC 行为 | Web 对标目标 |
| --- | --- | --- |
| `M429` | kinstype=0Identity | Web MDI/remap 执行后 switchkins type 为 0 |
| `M428` | kinstype=1XYZBC/TCP | Web MDI/remap 执行后 switchkins type 为 1 |
| `M430` | kinstype=2USERK | Web MDI/remap 执行后 switchkins type 为 2 |
| `xyzbc_switchkins.ngc` | 默认打开并调用子程序 | Web 默认程序一致 |
| `xyzbc_switchkins_sub.ngc` | 四象限 switchkins/TCP 演示 | Web 必须 stage 并可执行 |
| `centering.ngc` | Ngcgui 子程序 | Web 必须 stage后续实现参数入口 |
| `helix_bc.ngc` | B/C helix 五轴轨迹 | Web 必须 stage 并进入路径对比 |
| `boat-xyzbc.ngc` | 额外演示程序 | Web 必须 stage 并可作为验收程序 |
## 刀具执行路径与逐行 G 代码对标
| 对标项 | LinuxCNC 真源 | Web 对标目标 | Evidence/验收 |
| --- | --- | --- | --- |
| 刀具执行语义路径 | `xyzbc_switchkins.ngc` 调用 `xyzbc_switchkins_sub.ngc`,再调用 `helix_bc.ngc` | Web 按同一源程序和子程序展开执行路径,不只依赖 UI 预览 | native/Web `semanticExecutionPath.samples` 均为 1300compare `semanticExecutionVsSemanticExecution.geometricAligned=true` |
| 实际轴值 | G53/G54、G0、G2 helix、B/C 姿态和 switchkins 状态 | Web 记录每条产生日志运动后的 X/Y/Z/B/C、TCP、toolAxis、feed | native/Web `axisValuesByLine` 均为 29 条compare 最大 TCP/joint/toolAxis 误差为 0 |
| 每行 G 代码执行过程 | 主程序行 2、`xyzbc_switchkins_sub.ngc` 行 15-45、`helix_bc.ngc` 行 12-21 | Web 记录 call、M429/M428、G10、G0、G2 的执行顺序和 kinematics 前后状态 | native/Web `lineExecutionTrace` 均为 64 条compare `mismatchCount=0` |
| 完整 G 代码执行过程 JSON | 主程序、子程序边界、注释、参数赋值、call stack、M/G 代码、运动结果 | Web 记录每个动态执行步骤和每个源行覆盖状态,每步包含详细结果 | native/Web `gcodeExecutionProcess.executionSteps` 均为 128`sourceLineCoverage` 均为 65compare `mismatchCount=0` |
| runtime 执行反馈 | native `linuxcnc.stat()`、Web task/HAL WASM status | 保留真实反馈路径,作为运行完成和状态流证据 | native `executionPath.taskHal.completed=true`Web `executionPath.taskHal.completed=true` |
## JSON 证据对标
native evidence、Web evidence、compare evidence 必须覆盖:
- `startupSequence`:启动/初始化顺序和等效组件。
- `iniDisplay`DISPLAY/TRAJ/KINS/TASK/EMCMOT/EMCIO 关键字段。
- `stagedFiles`:所有对标文件,包括 remap 子程序和 demo 程序全集。
- `halNets`switchkins、PyVCP、Vismach、tool-offset、joint feedback 连接。
- `kinematicsPins`offset、rot-point、conventional-directions、tool-offset。
- `axisJointLimits`X/Y/Z/B/C 和 JOINT_0..4 限制、单位、速度/加速度。
- `switchkinsTransitions`M429/M428/M430 的命令、HAL pin 和状态变化。
- `toolTable`T/P/Z/D 解析和当前工具偏置。
- `previewPath`刀具预览路径50ms 统一采样。
- `executionPath`刀具执行路径50ms 统一采样。
- `semanticExecutionPath`:基于 LinuxCNC 源程序/子程序展开的刀具执行语义路径50ms 统一采样。
- `lineExecutionTrace`主程序、子程序、M428/M429、G10、G0、G2 的逐行执行过程。
- `axisValuesByLine`:每条产生日志运动后的 X/Y/Z/B/C、TCP、toolAxis、feed。
- `gcodeExecutionProcess`:完整动态执行步骤、源行覆盖、调用栈、参数变化、模态变化、运动起止轴值/TCP/toolAxis。
- `pathComparison`native/Web 预览与执行路径误差统计。
- `lineExecutionComparison`native/Web 逐行 G 代码执行过程对比。
- `axisValuesByLineComparison`native/Web 每行实际轴值对比。
- `gcodeExecutionProcessComparison`native/Web 完整 G 代码执行过程 JSON 对比。
- `uiEquivalence`AXIS/PyVCP/Vismach 在 Web 中的等效控件和状态。
- `axisButtonParity`AXIS/PyVCP 按钮 action、LinuxCNC 源程序/POSTGUI HAL 来源、预期状态效果、缺口列表。
## 当前闭环状态
当前 T-001 到 T-046 均已完成。T-041/T-042 新增 AXIS/PyVCP 按钮级源程序对标和逐按钮逻辑验证T-043/T-046 新增刀具执行路径、逐行 G 代码执行过程、每行实际轴值和完整 G 代码执行过程 JSON 对标。
已闭环事项:
1. WASM artifact 已构建并随 app build 进入 `app/dist/wasm-port/build/wasm`
2. Web evidence 已记录 `startupSequence``halNets``kinematicsPins``axisJointLimits``axisMainUi``vismachEquivalent``basicSimEquivalent``ngcguiExecution` 和 native 状态流复核。
3. Web UI 已按 AXIS 等效面板覆盖程序、坐标、状态、MDI/switchkins、override、tool、preview、execution 和 axis buttons按钮级矩阵已映射到 LinuxCNC `axis.py``switchkins_postgui.hal`
4. Vismach 等效模型已按 `xyzbc-trt-gui.py` 的 pin 和模型层级完成 Web 端验收,`smoke:browser` 覆盖 canvas 非空和 dataset。
5. native/Web 刀具预览路径、runtime 执行反馈路径和源程序语义执行路径 JSON 均已按 50ms 周期采集compare 已输出并硬校验误差统计。
6. `boat-xyzbc.ngc` staging 和 Ngcgui/remap 子程序全集 Web 可执行验收已完成。
7. `lineExecutionTrace` 64 条、`axisValuesByLine` 29 条、`gcodeExecutionProcess.executionSteps` 128 条、`sourceLineCoverage` 65 条均已在 native/Web JSON 中同构记录并通过 compare。