3.4 KiB
3.4 KiB
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 上电”,而是:
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.jsTOGGLE_POWER不再在STATE_ESTOP下阻止,允许按钮动作进入 OFF 分支。
-
app/src/state/store.jsTOGGLE_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 后才能上电。
验证结果
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。