Files
cnc_wams/web-rtcp-5axis-sim-plan/docs/linuxcnc-parity-matrix.md

64 lines
6.3 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.
# LinuxCNC 对标程序与功能矩阵
本文记录 Web-RTCP 五轴数控仿真界面当前对标的 LinuxCNC 程序、配置文件和功能边界。运行时状态对象为 `linuxCncParityMatrix`,界面在 gmoccapy diagnostics 中显示摘要Node smoke 通过 `tests/node/verify_linuxcnc_parity_matrix.mjs` 持续校验。
## 1. 对标的 LinuxCNC 程序和配置
| 类别 | LinuxCNC 来源 | Web 对标内容 |
| --- | --- | --- |
| XYZAC TRT 配置 | `configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini` | `xyzac-trt` profile、TRAJ `XYZAC`、INI 解析、项目目录 staging |
| XYZBC TRT 配置 | `configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini` | `xyzbc-trt` profile、TRAJ `XYZBC`、INI 解析、项目目录 staging |
| PyVCP/POSTGUI/HAL | `xyzac-trt.xml``xyzbc-trt.xml``switchkins_postgui.hal``xyzac-trt_cmds.hal` | SWITCHKINS 按钮语义、HALUI MDI 命令、`motion.switchkins-type` 映射 |
| remap 子程序 | `remap_subs/428remap.ngc``429remap.ngc``430remap.ngc` | `M428` TCP、`M429` identity、`M430` userk 的 kinstype 切换语义 |
| Vismach Python | `src/hal/user_comps/vismach/xyzac-trt-gui.py``xyzbc-trt-gui.py` | 机床预览层级、关节反馈 pin、刀补/偏置显示语义 |
| Kinematics C 源码 | `src/emc/kinematics/xyzac-trt-kins.c``xyzbc-trt-kins.c``trtfuncs.c``switchkins.c` | XYZAC/XYZBC 正逆解、TCP/identity/userk 切换、DRO/TCP frame 更新Node direct proof 覆盖 `switchkinsType=1`、A/B/C TCP 姿态和 XYZBC B 轴保留 |
| Tool DB / task tool state | `src/emc/task/taskclass.cc``src/emc/tooldata/tooldata_common.cc``src/emc/nml_intf/emctool.h``src/emc/rs274ngc/interp_convert.cc``xyzac-trt.tbl``xyzbc-trt.tbl` | staged `tool.tbl` 解析、`CANON_TOOL_TABLE` 字段、非随机刀库 `idx/pocketno` 分离、spindle pocket `idx=0`、tool prepare/load/read_tool_inputs/offset、OPFS/memory fallback 保存 |
| controlled user-M/remap | `remap_subs/428remap.ngc``429remap.ngc``430remap.ngc`、LinuxCNC millturn M128/M129 用法 | 白名单 `M128/M129/M428/M429/M430` 转换为可追溯 HAL/state 事件,不执行 host 脚本 |
| gmoccapy TRT 示例 | `configs/sim/gmoccapy/non_trivial_kinematics/table-rotary-tilting/xyzac-trt.ini``postgui.hal` | gmoccapy 入口、POSTGUI 工具/主轴 HAL、TRT 示例程序来源 |
| gmoccapy 原生界面 | `src/emc/usr_intf/gmoccapy/gmoccapy.py``share/gmoccapy/gmoccapy.glade`、gmoccapy 图标清单 | 操作台布局、右侧状态入口、按钮颜色/禁用/激活规则、HAL pin 语义 |
| LinuxCNC task/NML | `src/emc/nml_intf/emc.hh``src/emc/task/emctaskmain.cc``src/emc/task/emctask.cc` | E-STOP/POWER/RESET、AUTO/MANUAL/JOG/MDI、RUN/PAUSE/RESUME/STEP/STOP 的互锁 |
| task/HAL/motion 状态 | `src/emc/motion/control.c``src/hal/hal_lib.c` | task cycle、servo cycle、HAL pin 变化、实时轴值反馈边界 |
## 2. 对标的真实五轴 G-code 程序
当前验证程序来源限定为 LinuxCNC 源目录中的五轴程序,不把普通用户文件误标为 LinuxCNC 对标程序:
| 程序 | 用途 |
| --- | --- |
| `demos/xyzac_switchkins.ngc` | XYZAC switchkins 基准程序 |
| `demos/xyzbc_switchkins.ngc` | XYZBC switchkins 基准程序 |
| `demos/boat-xyzac.ngc` | XYZAC TCP 船体程序 |
| `demos/boat-xyzbc.ngc` | XYZBC TCP 船体程序 |
| `demos/impeller-7bl-xyzac.ngc` | XYZAC 叶轮长路径程序 |
| `demos/xyzac_switchkins_test_1.ngc` | M428/M429 多次切换验证 |
| `demos/xyzac_switchkins_test_2.ngc` | TCP/identity 过渡验证 |
| `demos/xyzac_switchkins_test_3.ngc` | switchkins 程序验证覆盖 |
| `gmoccapy/.../examples/impeller-7bl-xyzac.ngc` | gmoccapy fixed TRT 默认打开程序 |
| `gmoccapy/.../examples/boat-xyzac.ngc` | gmoccapy XYZAC TCP 船体程序 |
| `gmoccapy/.../examples/boat-xyzbc.ngc` | gmoccapy 示例目录中的 XYZBC TCP 程序,用于 interpreter/planner source guard 覆盖 |
| `gmoccapy/.../examples/test-xyzac.ngc``test-xyzbc.ngc` | gmoccapy TRT 示例 staging 完整性验证 |
## 3. 已承接的功能
| 功能 | 当前 Web 实现 |
| --- | --- |
| 右侧纵向入口 | `E-STOP``POWER``RESET``AUTO``MANUAL``JOG``MDI``IDENTITY``TCP` 全部建模 |
| 模式互锁 | 未复位急停不能上电;未回零不能 AUTO/MDIAUTO 运行时阻止离开 AUTO、JOG、TCP/IDENTITY 切换 |
| 颜色规则 | emergency/power/reset/mode/identity/tcp 各自有 active、ready、blocked、active-blocked 状态 |
| 项目目录 | 按 profile 生成 `web-rtcp-5axis-sim-plan/machines/<profile>`,保存当前机床 INI、HAL、TBL、NGC/remap 文件 |
| INI 对标 | staged INI 与当前 profile INI 路径和文本比对,暴露 `sourceMatchesProfile``textMatchesLoadedIni` |
| 程序验证 | LinuxCNC interpreter runtime 产出 canonical motion、switchkins 事件、planner sample |
| 实时轴值 | G-code 执行反馈驱动 `axisPose``tcpPose`、DRO、当前行、feed/DTG |
| 预览路径 | Three.js/WebGL 预览程序路径、当前刀具位置、TCP 点和刀轴方向 |
| gmoccapy HAL 语义 | 硬按钮、jog、override、spindle、coolant、tool change、message/tool/user inputs 建模 |
| task/HAL 边界 | 保留 native task/HAL 与硬件实时边界,不把 Web 仿真误标为真实机床控制 |
| tool DB Web 仿真 | 读取 staged `tool.tbl`,支持刀具号/刀长/刀径/刀袋查询、编辑、保存;按 LinuxCNC 非随机刀库语义保留真实 `pocketno`,使用内部 `idx=1..n` 和 spindle pocket `idx=0`;接入 `Tn/M6/G43/M61`、HAL loopback `read_tool_inputs()`#5400/#5401-#5413 工具参数快照 |
| 受控 user-M Web 仿真 | 只允许白名单 user-M/remap 行为输出 HAL/state patch任意未白名单 user-M 被标记为 blocked |
## 4. 当前边界
- Web 端运行的是浏览器仿真状态机和 WASM/JS runtime不运行原生 GTK `gmoccapy.py`
- `gmoccapy.py`、Glade、Vismach Python 是界面/机床模型/HAL 语义参考,不是浏览器运行时。
- 硬件驱动、实时内核、真实 HAL shared memory、host external user-M 进程、host tool DB process 不在浏览器内提升为 ready`externalUserMProcessReady=true``toolDbProcessReady=true` 只代表 `web_simulation_only`
- `linuxCncParityMatrix``semanticBoundary` 固定为 `linuxcnc_source_function_parity_matrix_for_browser_simulation_not_hardware_control`