84 lines
3.4 KiB
Markdown
84 lines
3.4 KiB
Markdown
# 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/MDI,paused 时恢复,非 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 进入 OFF;OFF 下点 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。
|