Files
cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan/working/16-20260706-AXIS主控制按钮完全对标复核.md
2026-07-07 09:40:33 -04:00

84 lines
3.4 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.
# 2026-07-06 AXIS 主控制按钮完全对标复核
## 用户提问
项目 `/home/mes123456/cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan` 要完全对标 `/home/mes123456/cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan/doc/AXIS主控制按钮功能先决条件与状态影响详解.md`
## 对标范围
按文档逐项复核:
- 急停与解除急停:`estop_clicked()``STATE_ESTOP` / `STATE_ESTOP_RESET`
- 上电/下电:`onoff_clicked()`,仅 `STATE_ESTOP_RESET` 分支上电,其余状态发送 `STATE_OFF`
- Home All`home_all_joints()` / `c.home(-1)`
- Run`task_run()` / `AUTO_RUN`,要求上电、已回零、程序打开。
- Pause`task_pause()` / `AUTO_PAUSE`,要求 AUTO 且解释器 READING/WAITING。
- Resume`task_resume()` / `AUTO_RESUME`,要求 paused 且 AUTO/MDI。
- Pause/Resume 工具栏合并按钮:`task_pauseresume()`,要求 AUTO/MDIpaused 时恢复,非 idle 时暂停。
- Step`task_step()` / `AUTO_STEP`,支持自动空闲初次单步,也支持 reading/waiting/paused 队列单步推进。
## 本轮发现和修正
### P-016-001 电源按钮 ESTOP/OFF 语义偏差
问题:
Web 原 `TOGGLE_POWER``STATE_ESTOP` 下会被策略阻止并提示先 reset在非 on 状态下容易按“切换”理解直接进入 on。LinuxCNC AXIS 的 `onoff_clicked()` 并不是“任意非 on 上电”,而是:
```python
if s.task_state == linuxcnc.STATE_ESTOP_RESET:
c.state(linuxcnc.STATE_ON)
else:
c.state(linuxcnc.STATE_OFF)
```
修正:
- `app/src/state/linuxcnc-task-policy.js`
- `TOGGLE_POWER` 不再在 `STATE_ESTOP` 下阻止,允许按钮动作进入 OFF 分支。
- `app/src/state/store.js`
- `TOGGLE_POWER` 改为 `taskState === "estop-reset"` 时上电,否则下电到 `taskState="off"`
- 下电时关闭 power、motion、RTCP、冷却、主轴速度并清除 `allHomed`,对标 `emcJointUnhome(-2)` 的 volatile home 清除效果。
- task/HAL 命令改为上电发送 `EMC_TASK_SET_STATE ON`,否则发送 `EMC_TASK_SET_STATE OFF`
### P-016-002 自动化验证补齐
- `tests/node/verify_xyzbc_trt_web_app.mjs`
- 新增 ESTOP 下点击 Power 进入 OFF 的断言。
- 新增 OFF 下继续点击 Power 仍保持 OFF不能绕过 reset 直接上电的断言。
- 新增下电清除 `allHomed` 的断言。
- 将主按钮链路测试和后续 MDI/JOG/override 测试拆分为独立 store避免异步运行状态污染。
- `tests/browser/xyzbc_trt_browser_smoke.html`
- 新增真实 DOM 按钮路径ESTOP 后点 Power 进入 OFFOFF 下点 Power 仍保持 OFF再 ESTOP/RESET 后才能上电。
## 验证结果
```text
npm --prefix app run smoke:node
xyzbc_trt_web_app_smoke=ok
npm --prefix app run build
gmoccapy_static_build=ok
npm --prefix app run smoke:browser
xyzbc_trt_browser_smoke=ok
npm --prefix app run evidence:web
web_xyzbc_trt_evidence=/home/mes123456/cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan/working/evidence/web-xyzbc-trt-evidence.json
web status=ready-for-wasm-runtime
blockers=[]
npm --prefix app run evidence:compare
compare_xyzbc_trt_status=pass
checkCount=60
passCount=60
failCount=0
blockers=[]
```
## 结论
本轮按参考文档完成主控制按钮全量复核,并修正电源按钮与 AXIS `onoff_clicked()` 不一致的问题。当前 ESTOP、RESET、POWER、HOME、RUN、PAUSE、RESUME、PAUSE_RESUME、STEP 均有源码门禁和自动化验证覆盖Web/native evidence compare 为 60/60 pass。