# 08 LinuxCNC 源程序测试资产

生成时间：2026-06-22

## 1. 选择结果

本轮按用户要求，从 `/home/meswork/cnc_wams/linuxcnc` LinuxCNC 源程序中选定一组更适合项目测试的真实 RTCP/五轴资产：

```text
INI:
/home/meswork/cnc_wams/linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt.ini

G-code:
/home/meswork/cnc_wams/linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/impeller-7bl-xyzac.ngc
```

已复制到 `working_run`：

```text
web-rtcp-5axis-sim-plan/working_run/test_linuxcnc_source/xyzac-trt.ini
web-rtcp-5axis-sim-plan/working_run/test_linuxcnc_source/impeller-7bl-xyzac.ngc
```

已移除不合适的短程序副本：

```text
web-rtcp-5axis-sim-plan/working_run/test_linuxcnc_source/xyzac_switchkins_test_1.ngc
```

## 2. 选择原因

选择 `xyzac-trt.ini` + `impeller-7bl-xyzac.ngc`，原因：

```text
1. INI 是 LinuxCNC 官方 5axis table-rotary-tilting 仿真配置。
2. 坐标为 XYZAC，与当前项目默认 profile `xyzac-trt` 一致。
3. KINEMATICS = xyzac-trt-kins sparm=identityfirst。
4. 包含完整 M428/M429/M430 remap contract。
5. 包含 HAL_PIN_VARS=1。
6. 包含 motion.analog-out-03 => motion.switchkins-type HALCMD。
7. G-code 以 M428 ;TCP:xyzac 进入 TCP/RTCP kinematics。
8. G-code 使用 G93 inverse-time feed。
9. G-code 包含大量 XYZAC 五轴联动段。
10. G-code 共 4510 行，比短 switchkins test 程序更适合测试项目功能完整性。
11. G-code 来自 /home/meswork/cnc_wams/linuxcnc 源程序，不是项目手写 fixture。
```

## 3. 源文件哈希

当前副本与 `/home/meswork/cnc_wams/linuxcnc` 源文件逐字节一致：

```text
xyzac-trt.ini
sha256=4b7fa6cb8d3e7031e769b3e0c779b586b67cfd45d715985f40d4ec23c662dc97

impeller-7bl-xyzac.ngc
sha256=e90f0b4b6c43809da94a8170ee1029b5afc3e1bbe9bf2ae66298a8baefad013c
```

验证结果：

```text
ini_cmp=0
ngc_cmp=0
```

## 4. 测试覆盖点

这组资产覆盖：

```text
1. LinuxCNC INI definition contract。
2. profile/INI 坐标一致性：XYZAC。
3. kinematics module 一致性：xyzac-trt。
4. RTCP/TCP kinematics：
   M428 -> xyzac TCP
5. inverse-time feed：
   G93
6. 长路径五轴联动：
   XYZAC motion lines with A/C rotary axes
7. machine-file staging。
8. taskHalRuntime.openProgram(programPath)。
9. RUN command sequence。
10. taskHalStatusLoop feedback。
11. UI activeLine/DRO/RTCP/runtime feedback same-snapshot 证据。
12. 长路径 preview、执行轨迹、rapid/feed 与五轴姿态变化。
```

## 5. 已运行验证

执行：

```bash
node web-rtcp-5axis-sim-plan/tests/node/verify_real_linuxcnc_5axis_program_cases.mjs
```

结果：

```text
linuxcnc_source_program_case_count=8
all_cases_program_preview_points=ok
all_cases_executed_path_points=ok_after_run_or_step
all_cases_toolpath_preview_source=linuxcnc_interpreter_canonical_motion
all_cases_tool_execution_trace_source=linuxcnc_tp_samples_or_task_motion_hal_feedback
all_switchkins_cases_rtcp_state_changes_verified=1
all_cases_source_guard=linuxcnc_vendored_5axis_gcode_source_file
fixture_toolpath_fallback_not_promoted=1
real_linuxcnc_5axis_program_cases_smoke=ok
```

## 6. 后续使用方式

后续新增测试时优先引用这组资产：

```text
working_run/test_linuxcnc_source/xyzac-trt.ini
working_run/test_linuxcnc_source/impeller-7bl-xyzac.ngc
```

如果要测试短 switchkins identity/TCP 循环，再补充：

```text
/home/meswork/cnc_wams/linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins_test_1.ngc
```

如果要测试 xyzbc 对称链路，再补充：

```text
/home/meswork/cnc_wams/linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/xyzbc-trt.ini
/home/meswork/cnc_wams/linuxcnc/configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzbc.ngc
```
