11 KiB
11 KiB
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 为 identity,M428 后为 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=0,Identity | Web MDI/remap 执行后 switchkins type 为 0 |
M428 |
kinstype=1,XYZBC/TCP | Web MDI/remap 执行后 switchkins type 为 1 |
M430 |
kinstype=2,USERK | 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 并可作为验收程序 |
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:刀具预览路径,20ms 统一采样。executionPath:刀具执行路径,20ms 统一采样。pathComparison:native/Web 预览与执行路径误差统计。uiEquivalence:AXIS/PyVCP/Vismach 在 Web 中的等效控件和状态。axisButtonParity:AXIS/PyVCP 按钮 action、LinuxCNC 源程序/POSTGUI HAL 来源、预期状态效果、缺口列表。
当前主要缺口
当前 T-001 到 T-042 均已完成。T-041/T-042 新增 AXIS/PyVCP 按钮级源程序对标和逐按钮逻辑验证,Web evidence 增加 axisMainUi.axisButtonParity 与 coverage.axisButtonParityCovered。
已闭环事项:
- WASM artifact 已构建并随 app build 进入
app/dist/wasm-port/build/wasm。 - Web evidence 已记录
startupSequence、halNets、kinematicsPins、axisJointLimits、axisMainUi、vismachEquivalent、basicSimEquivalent、ngcguiExecution和 native 状态流复核。 - Web UI 已按 AXIS 等效面板覆盖程序、坐标、状态、MDI/switchkins、override、tool、preview、execution 和 axis buttons;按钮级矩阵已映射到 LinuxCNC
axis.py与switchkins_postgui.hal。 - Vismach 等效模型已按
xyzbc-trt-gui.py的 pin 和模型层级完成 Web 端验收,smoke:browser覆盖 canvas 非空和 dataset。 - native/Web 刀具预览路径和执行路径 JSON 均已按 20ms 周期采集,compare 已输出误差统计。
boat-xyzbc.ngcstaging 和 Ngcgui/remap 子程序全集 Web 可执行验收已完成。