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

3.4 KiB
Raw Blame History

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 Allhome_all_joints() / c.home(-1)
  • Runtask_run() / AUTO_RUN,要求上电、已回零、程序打开。
  • Pausetask_pause() / AUTO_PAUSE,要求 AUTO 且解释器 READING/WAITING。
  • Resumetask_resume() / AUTO_RESUME,要求 paused 且 AUTO/MDI。
  • Pause/Resume 工具栏合并按钮:task_pauseresume(),要求 AUTO/MDIpaused 时恢复,非 idle 时暂停。
  • Steptask_step() / AUTO_STEP,支持自动空闲初次单步,也支持 reading/waiting/paused 队列单步推进。

本轮发现和修正

P-016-001 电源按钮 ESTOP/OFF 语义偏差

问题:

Web 原 TOGGLE_POWERSTATE_ESTOP 下会被策略阻止并提示先 reset在非 on 状态下容易按“切换”理解直接进入 on。LinuxCNC AXIS 的 onoff_clicked() 并不是“任意非 on 上电”,而是:

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 后才能上电。

验证结果

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。