Files
cnc_wams/qa/web-rtcp-5axis-site-test/output/working7-full-functional-evidence-report.md

1985 lines
105 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.
# working7 全量功能实际执行验证报告
生成时间2026-06-28T00:28:38.507Z
job_idw7full-20260628002838-518bf522
report_idreport-w7full-20260628002838-518bf522
目标页面http://127.0.0.1:41281/web-rtcp-5axis-sim-plan/app/index.html
总体结果PASS
## 我验证的范围
我在真实 Chromium 页面中逐项点击并验证主界面按钮、右侧全班按钮、程序执行、刀具预览、刀具实时执行路径、G-code 执行过程、机床轴值、倍率、主轴冷却、会话和诊断边界。
## 总体验收
| 检查项 | 结果 | 证据 |
| --- | --- | --- |
| 所有主界面区域存在 | PASS | {"titlebar":true,"preview":true,"dro":true,"gcode":true,"status-sidebar":true,"info-tabs":true,"override":true,"spindle-coolant":true,"bottom-controls":true} |
| canvas 非空且 WebGL ready | PASS | 01-loaded-inventory:0.7801, 02-initial-run-blocked:0.7801, 03-powered-homed:0.7801, 04-auto-right-panel:0.7801, 05-right-sidebar-all-states:0.7801, 06-profile-xyzbc:0.7802, 07-preview-buttons:0.7887, 08-linuxcnc-source-loaded:0.7893, 09-open-file-loaded:0.7784, 10-run-ready:0.7784, 11-run-realtime-path:0.7789, 12-pause-resume-step:0.7787, 13-stop-idle:0.7787, 14-manual-jog-axis-values:0.7787, 15-mdi-execution:0.7812, 16-overrides-hal:0.7814, 17-spindle-coolant:0.7814, 18-session-fullscreen:0.7814, 19-diagnostics-audit:0.7814 |
| 按钮库存包含核心 action | PASS | missing= |
| 核心按钮均执行验证 | PASS | missing= |
| 未发生页面异常 | PASS | - |
| 所有 action 断言通过 | PASS | - |
## 按钮执行矩阵
| action | 我执行的操作 | 结果 | 关键状态变化 |
| --- | --- | --- | --- |
| RUN | 未上电直接 RUN 应被门禁拦截 | PASS | {"before":{"machineProfile":"xyzac-trt","activeProgram":"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc","programSource":"linuxcnc-vendored-5axis-gcode","programExecutionSourceMode":"linuxcnc-task-motion-hal-wasm","runState":"idle","activeLine":1,"machine":{"powerOn":false,"estopActive":false,"taskState":"estop-reset","mode":"manual","allHomed":false,"interpState":"idle","taskPaused":false,"mdiCommand":"G0 X0 Y0 Z0"},"axisPose":{"x":0,"y":0,"z":0,"a":0,"b":0,"c":0},"dro |
| mode-auto | 未上电 AUTO 应被门禁拦截 | PASS | {"exists":true,"tagName":"BUTTON","disabled":true,"active":"false","commandReady":"false","ariaDisabled":"true","title":"mode blocked: machine must be on before AUTO","label":"AUTO","iconName":"mode_auto_inactive","iconVariant":"inactive","gmoccapyButtonId":"rbt_auto","nativePanel":"right","nativeButtonIndex":"4","halPin":"gmoccapy.v-button.button-4"} |
| mode-mdi | 未上电 MDI 应被门禁拦截 | PASS | {"exists":true,"tagName":"BUTTON","disabled":true,"active":"false","commandReady":"false","ariaDisabled":"true","title":"mode blocked: machine must be on before MDI","label":"MDI","iconName":"mode_mdi_inactive","iconVariant":"inactive","gmoccapyButtonId":"rbt_mdi","nativePanel":"right","nativeButtonIndex":"3","halPin":"gmoccapy.v-button.button-3"} |
| spindle-forward | 未上电主轴正转应被门禁拦截 | PASS | {"state":{"machineProfile":"xyzac-trt","activeProgram":"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc","programSource":"linuxcnc-vendored-5axis-gcode","programExecutionSourceMode":"linuxcnc-task-motion-hal-wasm","runState":"idle","activeLine":1,"machine":{"powerOn":false,"estopActive":false,"taskState":"estop-reset","mode":"manual","allHomed":false,"interpState":"idle","taskPaused":false,"mdiCommand":"G0 X0 Y0 Z0"},"axisPose":{"x":0,"y":0,"z":0,"a":0,"b":0,"c":0},"dro" |
| toggle-mist | 未上电冷却应被门禁拦截 | PASS | {"state":{"machineProfile":"xyzac-trt","activeProgram":"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc","programSource":"linuxcnc-vendored-5axis-gcode","programExecutionSourceMode":"linuxcnc-task-motion-hal-wasm","runState":"idle","activeLine":1,"machine":{"powerOn":false,"estopActive":false,"taskState":"estop-reset","mode":"manual","allHomed":false,"interpState":"idle","taskPaused":false,"mdiCommand":"G0 X0 Y0 Z0"},"axisPose":{"x":0,"y":0,"z":0,"a":0,"b":0,"c":0},"dro" |
| power | POWER 上电 | PASS | {"machineProfile":"xyzac-trt","activeProgram":"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc","programSource":"linuxcnc-vendored-5axis-gcode","programExecutionSourceMode":"linuxcnc-task-motion-hal-wasm","runState":"idle","activeLine":1,"machine":{"powerOn":true,"estopActive":false,"taskState":"on","mode":"manual","allHomed":false,"interpState":"idle","taskPaused":false,"mdiCommand":"G0 X0 Y0 Z0"},"axisPose":{"x":0,"y":0,"z":0,"a":0,"b":0,"c":0},"dro":{"x":0,"y":0,"z":0 |
| HOME | HOME 回零 | PASS | {"machineProfile":"xyzac-trt","activeProgram":"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc","programSource":"linuxcnc-vendored-5axis-gcode","programExecutionSourceMode":"linuxcnc-task-motion-hal-wasm","runState":"idle","activeLine":1,"machine":{"powerOn":true,"estopActive":false,"taskState":"on","mode":"manual","allHomed":true,"interpState":"idle","taskPaused":false,"mdiCommand":"G0 X0 Y0 Z0"},"axisPose":{"x":43,"y":-32.15,"z":-11.306,"a":0,"b":0,"c":0},"dro":{"x":43 |
| mode-auto | AUTO 模式 | PASS | {"state":{"machineProfile":"xyzac-trt","activeProgram":"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc","programSource":"linuxcnc-vendored-5axis-gcode","programExecutionSourceMode":"linuxcnc-task-motion-hal-wasm","runState":"idle","activeLine":1,"machine":{"powerOn":true,"estopActive":false,"taskState":"on","mode":"auto","allHomed":true,"interpState":"idle","taskPaused":false,"mdiCommand":"G0 X0 Y0 Z0"},"axisPose":{"x":0,"y":0,"z":0,"a":0,"b":0,"c":0},"dro":{"x":0,"y":0 |
| mode-manual | MANUAL 模式 | PASS | {"state":{"machineProfile":"xyzac-trt","activeProgram":"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc","programSource":"linuxcnc-vendored-5axis-gcode","programExecutionSourceMode":"linuxcnc-task-motion-hal-wasm","runState":"idle","activeLine":1,"machine":{"powerOn":true,"estopActive":false,"taskState":"on","mode":"manual","allHomed":true,"interpState":"idle","taskPaused":false,"mdiCommand":"G0 X0 Y0 Z0"},"axisPose":{"x":0,"y":0,"z":0,"a":0,"b":0,"c":0},"dro":{"x":0,"y" |
| mode-jog | JOG 入口归入 MANUAL 点动页 | PASS | {"state":{"machineProfile":"xyzac-trt","activeProgram":"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc","programSource":"linuxcnc-vendored-5axis-gcode","programExecutionSourceMode":"linuxcnc-task-motion-hal-wasm","runState":"idle","activeLine":1,"machine":{"powerOn":true,"estopActive":false,"taskState":"on","mode":"manual","allHomed":true,"interpState":"idle","taskPaused":false,"mdiCommand":"G0 X0 Y0 Z0"},"axisPose":{"x":0,"y":0,"z":0,"a":0,"b":0,"c":0},"dro":{"x":0,"y" |
| mode-mdi | MDI 模式 | PASS | {"state":{"machineProfile":"xyzac-trt","activeProgram":"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc","programSource":"linuxcnc-vendored-5axis-gcode","programExecutionSourceMode":"linuxcnc-task-motion-hal-wasm","runState":"mdi","activeLine":1,"machine":{"powerOn":true,"estopActive":false,"taskState":"on","mode":"mdi","allHomed":true,"interpState":"idle","taskPaused":false,"mdiCommand":"G0 X0 Y0 Z0"},"axisPose":{"x":0,"y":0,"z":0,"a":0,"b":0,"c":0},"dro":{"x":0,"y":0," |
| mode-manual | 返回 MANUAL | PASS | {"machineProfile":"xyzac-trt","activeProgram":"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc","programSource":"linuxcnc-vendored-5axis-gcode","programExecutionSourceMode":"linuxcnc-task-motion-hal-wasm","runState":"idle","activeLine":1,"machine":{"powerOn":true,"estopActive":false,"taskState":"on","mode":"manual","allHomed":true,"interpState":"idle","taskPaused":false,"mdiCommand":"G0 X0 Y0 Z0"},"axisPose":{"x":0,"y":0,"z":0,"a":0,"b":0,"c":0},"dro":{"x":0,"y":0,"z":0, |
| kins-tcp | 右侧 TCP 打开 RTCP | PASS | {"state":{"machineProfile":"xyzac-trt","activeProgram":"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc","programSource":"linuxcnc-vendored-5axis-gcode","programExecutionSourceMode":"linuxcnc-task-motion-hal-wasm","runState":"idle","activeLine":1,"machine":{"powerOn":true,"estopActive":false,"taskState":"on","mode":"manual","allHomed":true,"interpState":"idle","taskPaused":false,"mdiCommand":"G0 X0 Y0 Z0"},"axisPose":{"x":0,"y":0,"z":0,"a":0,"b":0,"c":0},"dro":{"x":0,"y" |
| kins-identity | 右侧 IDENTITY 关闭 RTCP | PASS | {"state":{"machineProfile":"xyzac-trt","activeProgram":"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc","programSource":"linuxcnc-vendored-5axis-gcode","programExecutionSourceMode":"linuxcnc-task-motion-hal-wasm","runState":"idle","activeLine":1,"machine":{"powerOn":true,"estopActive":false,"taskState":"on","mode":"manual","allHomed":true,"interpState":"idle","taskPaused":false,"mdiCommand":"G0 X0 Y0 Z0"},"axisPose":{"x":0,"y":0,"z":0,"a":0,"b":0,"c":0},"dro":{"x":0,"y" |
| estop | E-STOP 急停 | PASS | {"machineProfile":"xyzac-trt","activeProgram":"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc","programSource":"linuxcnc-vendored-5axis-gcode","programExecutionSourceMode":"linuxcnc-task-motion-hal-wasm","runState":"estopped","activeLine":1,"machine":{"powerOn":false,"estopActive":true,"taskState":"estop","mode":"manual","allHomed":true,"interpState":"idle","taskPaused":false,"mdiCommand":"G0 X0 Y0 Z0"},"axisPose":{"x":0,"y":0,"z":0,"a":0,"b":0,"c":0},"dro":{"x":0,"y":0 |
| power | 急停后 POWER 被阻止 | PASS | {"machineProfile":"xyzac-trt","activeProgram":"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc","programSource":"linuxcnc-vendored-5axis-gcode","programExecutionSourceMode":"linuxcnc-task-motion-hal-wasm","runState":"estopped","activeLine":1,"machine":{"powerOn":false,"estopActive":true,"taskState":"estop","mode":"manual","allHomed":true,"interpState":"idle","taskPaused":false,"mdiCommand":"G0 X0 Y0 Z0"},"axisPose":{"x":0,"y":0,"z":0,"a":0,"b":0,"c":0},"dro":{"x":0,"y":0 |
| reset | RESET 清除急停 | PASS | {"machineProfile":"xyzac-trt","activeProgram":"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc","programSource":"linuxcnc-vendored-5axis-gcode","programExecutionSourceMode":"linuxcnc-task-motion-hal-wasm","runState":"idle","activeLine":1,"machine":{"powerOn":false,"estopActive":false,"taskState":"estop-reset","mode":"manual","allHomed":true,"interpState":"idle","taskPaused":false,"mdiCommand":"G0 X0 Y0 Z0"},"axisPose":{"x":0,"y":0,"z":0,"a":0,"b":0,"c":0},"dro":{"x":0,"y |
| power | RESET 后重新上电 | PASS | {"machineProfile":"xyzac-trt","activeProgram":"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc","programSource":"linuxcnc-vendored-5axis-gcode","programExecutionSourceMode":"linuxcnc-task-motion-hal-wasm","runState":"idle","activeLine":1,"machine":{"powerOn":true,"estopActive":false,"taskState":"on","mode":"manual","allHomed":true,"interpState":"idle","taskPaused":false,"mdiCommand":"G0 X0 Y0 Z0"},"axisPose":{"x":0,"y":0,"z":0,"a":0,"b":0,"c":0},"dro":{"x":0,"y":0,"z":0, |
| HOME | RESET 后重新回零 | PASS | {"machineProfile":"xyzac-trt","activeProgram":"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc","programSource":"linuxcnc-vendored-5axis-gcode","programExecutionSourceMode":"linuxcnc-task-motion-hal-wasm","runState":"idle","activeLine":1,"machine":{"powerOn":true,"estopActive":false,"taskState":"on","mode":"manual","allHomed":true,"interpState":"idle","taskPaused":false,"mdiCommand":"G0 X0 Y0 Z0"},"axisPose":{"x":43,"y":-32.15,"z":-11.306,"a":0,"b":0,"c":0},"dro":{"x":43 |
| select-profile | 切换到 xyzbc-trt 轮廓 | PASS | {"machineProfile":"xyzbc-trt","activeProgram":"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzbc_switchkins.ngc","programSource":"linuxcnc-vendored-5axis-gcode","programExecutionSourceMode":"linuxcnc-task-motion-hal-wasm","runState":"idle","activeLine":1,"machine":{"powerOn":true,"estopActive":false,"taskState":"on","mode":"manual","allHomed":true,"interpState":"idle","taskPaused":false,"mdiCommand":"G0 X0 Y0 Z0"},"axisPose":{"x":0,"y":0,"z":0,"a":0,"b":0,"c":0},"dro":{"x":0,"y":0, |
| select-profile | 切换到 reference-only gmoccapy-xyzab | PASS | {"machineProfile":"gmoccapy-xyzab","activeProgram":"linuxcnc/nc_files/3D_Chips.ngc","programSource":"linuxcnc-vendored-5axis-gcode","programExecutionSourceMode":"linuxcnc-task-motion-hal-wasm","runState":"idle","activeLine":1,"machine":{"powerOn":true,"estopActive":false,"taskState":"on","mode":"manual","allHomed":true,"interpState":"idle","taskPaused":false,"mdiCommand":"G0 X0 Y0 Z0"},"axisPose":{"x":0,"y":0,"z":0,"a":0,"b":0,"c":0},"dro":{"x":0,"y":0,"z":0,"a":0,"b":0,"c":0},"tcpPose":{"x":0," |
| kins-tcp | reference-only profile 的 TCP 禁用 | PASS | {"before":{"exists":true,"tagName":"BUTTON","disabled":true,"active":"false","commandReady":null,"ariaDisabled":null,"title":"gmoccapy-xyzab is trivkins reference only","label":"TCP","iconName":null,"iconVariant":null,"gmoccapyButtonId":null,"nativePanel":null,"nativeButtonIndex":null,"halPin":null},"after":{"exists":true,"tagName":"BUTTON","disabled":true,"active":"true","commandReady":null,"ariaDisabled":null,"title":"gmoccapy-xyzab is trivkins reference only","label":"TCP","iconName":null,"ic |
| select-profile | 切回 xyzac-trt 轮廓 | PASS | {"machineProfile":"xyzac-trt","activeProgram":"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins.ngc","programSource":"linuxcnc-vendored-5axis-gcode","programExecutionSourceMode":"linuxcnc-task-motion-hal-wasm","runState":"idle","activeLine":1,"machine":{"powerOn":true,"estopActive":false,"taskState":"on","mode":"manual","allHomed":true,"interpState":"idle","taskPaused":false,"mdiCommand":"G0 X0 Y0 Z0"},"axisPose":{"x":0,"y":0,"z":0,"a":0,"b":0,"c":0},"dro":{"x":0,"y":0, |
| view-x | 预览 X 视图 | PASS | {"state":{"machineProfile":"xyzac-trt","activeProgram":"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins.ngc","programSource":"linuxcnc-vendored-5axis-gcode","programExecutionSourceMode":"linuxcnc-task-motion-hal-wasm","runState":"idle","activeLine":1,"machine":{"powerOn":true,"estopActive":false,"taskState":"on","mode":"manual","allHomed":true,"interpState":"idle","taskPaused":false,"mdiCommand":"G0 X0 Y0 Z0"},"axisPose":{"x":0,"y":0,"z":0,"a":0,"b":0,"c":0},"dro":{"x" |
| view-y | 预览 Y 视图 | PASS | {"state":{"machineProfile":"xyzac-trt","activeProgram":"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins.ngc","programSource":"linuxcnc-vendored-5axis-gcode","programExecutionSourceMode":"linuxcnc-task-motion-hal-wasm","runState":"idle","activeLine":1,"machine":{"powerOn":true,"estopActive":false,"taskState":"on","mode":"manual","allHomed":true,"interpState":"idle","taskPaused":false,"mdiCommand":"G0 X0 Y0 Z0"},"axisPose":{"x":0,"y":0,"z":0,"a":0,"b":0,"c":0},"dro":{"x" |
| view-z | 预览 Z 视图 | PASS | {"state":{"machineProfile":"xyzac-trt","activeProgram":"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins.ngc","programSource":"linuxcnc-vendored-5axis-gcode","programExecutionSourceMode":"linuxcnc-task-motion-hal-wasm","runState":"idle","activeLine":1,"machine":{"powerOn":true,"estopActive":false,"taskState":"on","mode":"manual","allHomed":true,"interpState":"idle","taskPaused":false,"mdiCommand":"G0 X0 Y0 Z0"},"axisPose":{"x":0,"y":0,"z":0,"a":0,"b":0,"c":0},"dro":{"x" |
| reset-view | 预览 Fit/复位视图 | PASS | {"state":{"machineProfile":"xyzac-trt","activeProgram":"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins.ngc","programSource":"linuxcnc-vendored-5axis-gcode","programExecutionSourceMode":"linuxcnc-task-motion-hal-wasm","runState":"idle","activeLine":1,"machine":{"powerOn":true,"estopActive":false,"taskState":"on","mode":"manual","allHomed":true,"interpState":"idle","taskPaused":false,"mdiCommand":"G0 X0 Y0 Z0"},"axisPose":{"x":0,"y":0,"z":0,"a":0,"b":0,"c":0},"dro":{"x" |
| clear-preview | 清除刀路预览 | PASS | {"state":{"machineProfile":"xyzac-trt","activeProgram":"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins.ngc","programSource":"linuxcnc-vendored-5axis-gcode","programExecutionSourceMode":"linuxcnc-task-motion-hal-wasm","runState":"idle","activeLine":1,"machine":{"powerOn":true,"estopActive":false,"taskState":"on","mode":"manual","allHomed":true,"interpState":"idle","taskPaused":false,"mdiCommand":"G0 X0 Y0 Z0"},"axisPose":{"x":0,"y":0,"z":0,"a":0,"b":0,"c":0},"dro":{"x" |
| RELOAD | Reload 恢复预览路径 | PASS | {"state":{"machineProfile":"xyzac-trt","activeProgram":"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins.ngc","programSource":"linuxcnc-vendored-5axis-gcode","programExecutionSourceMode":"linuxcnc-task-motion-hal-wasm","runState":"idle","activeLine":1,"machine":{"powerOn":true,"estopActive":false,"taskState":"on","mode":"manual","allHomed":true,"interpState":"idle","taskPaused":false,"mdiCommand":"G0 X0 Y0 Z0"},"axisPose":{"x":43,"y":-32.15,"z":-11.306,"a":0,"b":0,"c":0 |
| stage-linuxcnc-sources | Stage LinuxCNC source | PASS | {"machineProfile":"xyzac-trt","activeProgram":"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins.ngc","programSource":"linuxcnc-vendored-5axis-gcode","programExecutionSourceMode":"linuxcnc-task-motion-hal-wasm","runState":"idle","activeLine":1,"machine":{"powerOn":true,"estopActive":false,"taskState":"on","mode":"manual","allHomed":true,"interpState":"idle","taskPaused":false,"mdiCommand":"G0 X0 Y0 Z0"},"axisPose":{"x":43,"y":-32.15,"z":-11.306,"a":0,"b":0,"c":0},"dro":{ |
| select-linuxcnc-gcode-source | 选择第一个 LinuxCNC 5-axis G-code source | PASS | {"sourceRel":"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc","state":{"machineProfile":"xyzac-trt","activeProgram":"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc","programSource":"linuxcnc-vendored-5axis-gcode","programExecutionSourceMode":"linuxcnc-interpreter-wasm","runState":"idle","activeLine":9,"machine":{"powerOn":true,"estopActive":false,"taskState":"on","mode":"manual","allHomed":true,"interpState":"idle","taskPaused":false,"mdiComman |
| OPEN | Open 上传本地 G-code fixture | PASS | {"state":{"machineProfile":"xyzac-trt","activeProgram":"test-program.ngc","programSource":"operator-file","programExecutionSourceMode":"linuxcnc-task-motion-hal-wasm","runState":"idle","activeLine":1,"machine":{"powerOn":true,"estopActive":false,"taskState":"on","mode":"auto","allHomed":true,"interpState":"idle","taskPaused":false,"mdiCommand":"G0 X0 Y0 Z0"},"axisPose":{"x":43,"y":-32.15,"z":-11.306,"a":0,"b":0,"c":0},"dro":{"x":43,"y":-32.15,"z":-11.306,"a":0,"b":0,"c":0},"tcpPose":{"x":43,"y": |
| RUN_READY | Run Ready 一键准备 | PASS | {"machineProfile":"xyzac-trt","activeProgram":"test-program.ngc","programSource":"operator-file","programExecutionSourceMode":"linuxcnc-interpreter-wasm","runState":"idle","activeLine":3,"machine":{"powerOn":true,"estopActive":false,"taskState":"on","mode":"auto","allHomed":true,"interpState":"idle","taskPaused":false,"mdiCommand":"G0 X0 Y0 Z0"},"axisPose":{"x":0,"y":0,"z":5,"a":0,"b":0,"c":0},"dro":{"x":0,"y":0,"z":5,"a":0,"b":0,"c":0},"tcpPose":{"x":0,"y":0,"z":5,"a":0,"b":0,"c":0},"kinsType": |
| RUN | RUN 执行程序 | PASS | {"state":{"machineProfile":"xyzac-trt","activeProgram":"test-program.ngc","programSource":"operator-file","programExecutionSourceMode":"linuxcnc-task-motion-hal-wasm","runState":"running","activeLine":4,"machine":{"powerOn":true,"estopActive":false,"taskState":"on","mode":"auto","allHomed":true,"interpState":"reading","taskPaused":false,"mdiCommand":"G0 X0 Y0 Z0"},"axisPose":{"x":0,"y":0,"z":3.67183,"a":0,"b":0,"c":0},"dro":{"x":0,"y":0,"z":3.67183,"a":0,"b":0,"c":0},"tcpPose":{"x":0,"y":0,"z":3 |
| PAUSE | PAUSE 暂停 | PASS | {"machineProfile":"xyzac-trt","activeProgram":"test-program.ngc","programSource":"operator-file","programExecutionSourceMode":"linuxcnc-task-motion-hal-wasm","runState":"paused","activeLine":4,"machine":{"powerOn":true,"estopActive":false,"taskState":"on","mode":"auto","allHomed":true,"interpState":"paused","taskPaused":true,"mdiCommand":"G0 X0 Y0 Z0"},"axisPose":{"x":0,"y":0,"z":2.34366,"a":0,"b":0,"c":0},"dro":{"x":0,"y":0,"z":2.34366,"a":0,"b":0,"c":0},"tcpPose":{"x":0,"y":0,"z":2.34366,"a":0 |
| RESUME | RESUME 继续 | PASS | {"machineProfile":"xyzac-trt","activeProgram":"test-program.ngc","programSource":"operator-file","programExecutionSourceMode":"linuxcnc-task-motion-hal-wasm","runState":"running","activeLine":4,"machine":{"powerOn":true,"estopActive":false,"taskState":"on","mode":"auto","allHomed":true,"interpState":"reading","taskPaused":false,"mdiCommand":"G0 X0 Y0 Z0"},"axisPose":{"x":0,"y":0,"z":2.31046,"a":0,"b":0,"c":0},"dro":{"x":0,"y":0,"z":2.31046,"a":0,"b":0,"c":0},"tcpPose":{"x":0,"y":0,"z":2.31046,"a |
| PAUSE | STEP 前暂停 | PASS | {"machineProfile":"xyzac-trt","activeProgram":"test-program.ngc","programSource":"operator-file","programExecutionSourceMode":"linuxcnc-task-motion-hal-wasm","runState":"paused","activeLine":4,"machine":{"powerOn":true,"estopActive":false,"taskState":"on","mode":"auto","allHomed":true,"interpState":"paused","taskPaused":true,"mdiCommand":"G0 X0 Y0 Z0"},"axisPose":{"x":0,"y":0,"z":1.97842,"a":0,"b":0,"c":0},"dro":{"x":0,"y":0,"z":1.97842,"a":0,"b":0,"c":0},"tcpPose":{"x":0,"y":0,"z":1.97842,"a":0 |
| STEP | STEP 单步 | PASS | {"before":{"machineProfile":"xyzac-trt","activeProgram":"test-program.ngc","programSource":"operator-file","programExecutionSourceMode":"linuxcnc-task-motion-hal-wasm","runState":"paused","activeLine":4,"machine":{"powerOn":true,"estopActive":false,"taskState":"on","mode":"auto","allHomed":true,"interpState":"paused","taskPaused":true,"mdiCommand":"G0 X0 Y0 Z0"},"axisPose":{"x":0,"y":0,"z":1.97842,"a":0,"b":0,"c":0},"dro":{"x":0,"y":0,"z":1.97842,"a":0,"b":0,"c":0},"tcpPose":{"x":0,"y":0,"z":1.9 |
| STOP | STOP 停止 | PASS | {"machineProfile":"xyzac-trt","activeProgram":"test-program.ngc","programSource":"operator-file","programExecutionSourceMode":"linuxcnc-task-motion-hal-wasm","runState":"stopped","activeLine":4,"machine":{"powerOn":true,"estopActive":false,"taskState":"on","mode":"auto","allHomed":true,"interpState":"idle","taskPaused":false,"mdiCommand":"G0 X0 Y0 Z0"},"axisPose":{"x":0,"y":0,"z":1.94521,"a":0,"b":0,"c":0},"dro":{"x":0,"y":0,"z":1.94521,"a":0,"b":0,"c":0},"tcpPose":{"x":0,"y":0,"z":1.94521,"a":0 |
| mode-manual | 切到 MANUAL 准备点动 | PASS | {"machineProfile":"xyzac-trt","activeProgram":"test-program.ngc","programSource":"operator-file","programExecutionSourceMode":"linuxcnc-task-motion-hal-wasm","runState":"stopped","activeLine":4,"machine":{"powerOn":true,"estopActive":false,"taskState":"on","mode":"manual","allHomed":true,"interpState":"idle","taskPaused":false,"mdiCommand":"G0 X0 Y0 Z0"},"axisPose":{"x":0,"y":0,"z":1.94521,"a":0,"b":0,"c":0},"dro":{"x":0,"y":0,"z":1.94521,"a":0,"b":0,"c":0},"tcpPose":{"x":0,"y":0,"z":1.94521,"a" |
| JOG_X_NEG | JOG_X_NEG 点动 | PASS | {"before":{"machineProfile":"xyzac-trt","activeProgram":"test-program.ngc","programSource":"operator-file","programExecutionSourceMode":"linuxcnc-task-motion-hal-wasm","runState":"stopped","activeLine":4,"machine":{"powerOn":true,"estopActive":false,"taskState":"on","mode":"manual","allHomed":true,"interpState":"idle","taskPaused":false,"mdiCommand":"G0 X0 Y0 Z0"},"axisPose":{"x":0,"y":0,"z":1.94521,"a":0,"b":0,"c":0},"dro":{"x":0,"y":0,"z":1.94521,"a":0,"b":0,"c":0},"tcpPose":{"x":0,"y":0,"z":1 |
| JOG_X_POS | JOG_X_POS 点动 | PASS | {"before":{"machineProfile":"xyzac-trt","activeProgram":"test-program.ngc","programSource":"operator-file","programExecutionSourceMode":"linuxcnc-task-motion-hal-wasm","runState":"stopped","activeLine":4,"machine":{"powerOn":true,"estopActive":false,"taskState":"on","mode":"manual","allHomed":true,"interpState":"idle","taskPaused":false,"mdiCommand":"G0 X0 Y0 Z0"},"axisPose":{"x":-1,"y":0,"z":1.94521,"a":0,"b":0,"c":0},"dro":{"x":-1,"y":0,"z":1.94521,"a":0,"b":0,"c":0},"tcpPose":{"x":-1,"y":0,"z |
| JOG_Y_NEG | JOG_Y_NEG 点动 | PASS | {"before":{"machineProfile":"xyzac-trt","activeProgram":"test-program.ngc","programSource":"operator-file","programExecutionSourceMode":"linuxcnc-task-motion-hal-wasm","runState":"stopped","activeLine":4,"machine":{"powerOn":true,"estopActive":false,"taskState":"on","mode":"manual","allHomed":true,"interpState":"idle","taskPaused":false,"mdiCommand":"G0 X0 Y0 Z0"},"axisPose":{"x":0,"y":0,"z":1.94521,"a":0,"b":0,"c":0},"dro":{"x":0,"y":0,"z":1.94521,"a":0,"b":0,"c":0},"tcpPose":{"x":0,"y":0,"z":1 |
| JOG_Y_POS | JOG_Y_POS 点动 | PASS | {"before":{"machineProfile":"xyzac-trt","activeProgram":"test-program.ngc","programSource":"operator-file","programExecutionSourceMode":"linuxcnc-task-motion-hal-wasm","runState":"stopped","activeLine":4,"machine":{"powerOn":true,"estopActive":false,"taskState":"on","mode":"manual","allHomed":true,"interpState":"idle","taskPaused":false,"mdiCommand":"G0 X0 Y0 Z0"},"axisPose":{"x":0,"y":-1,"z":1.94521,"a":0,"b":0,"c":0},"dro":{"x":0,"y":-1,"z":1.94521,"a":0,"b":0,"c":0},"tcpPose":{"x":0,"y":-1,"z |
| mode-mdi | 切到 MDI | PASS | {"machineProfile":"xyzac-trt","activeProgram":"test-program.ngc","programSource":"operator-file","programExecutionSourceMode":"linuxcnc-task-motion-hal-wasm","runState":"stopped","activeLine":4,"machine":{"powerOn":true,"estopActive":false,"taskState":"on","mode":"mdi","allHomed":true,"interpState":"idle","taskPaused":false,"mdiCommand":"G0 X0 Y0 Z0"},"axisPose":{"x":0,"y":0,"z":1.94521,"a":0,"b":0,"c":0},"dro":{"x":0,"y":0,"z":1.94521,"a":0,"b":0,"c":0},"tcpPose":{"x":0,"y":0,"z":1.94521,"a":0, |
| mdi-submit | MDI 输入并执行 G90 X12.5 Y-4 Z1.25 F900 | PASS | {"machineProfile":"xyzac-trt","activeProgram":"MDI","programSource":"operator-mdi","programExecutionSourceMode":"operator-mdi","runState":"mdi","activeLine":1,"machine":{"powerOn":true,"estopActive":false,"taskState":"on","mode":"mdi","allHomed":true,"interpState":"idle","taskPaused":false,"mdiCommand":"G90 X12.5 Y-4 Z1.25 F900"},"axisPose":{"x":12.5,"y":-4,"z":1.25,"a":0,"b":0,"c":0},"dro":{"x":12.5,"y":-4,"z":1.25,"a":0,"b":0,"c":0},"tcpPose":{"x":12.5,"y":-4,"z":1.25,"a":0,"b":0,"c":0},"kinsT |
| mdi-history | MDI 历史快捷按钮 | PASS | {"machineProfile":"xyzac-trt","activeProgram":"MDI","programSource":"operator-mdi","programExecutionSourceMode":"operator-mdi","runState":"mdi","activeLine":1,"machine":{"powerOn":true,"estopActive":false,"taskState":"on","mode":"mdi","allHomed":true,"interpState":"idle","taskPaused":false,"mdiCommand":"G90 X12.5 Y-4 Z1.25 F900"},"axisPose":{"x":12.5,"y":-4,"z":1.25,"a":0,"b":0,"c":0},"dro":{"x":12.5,"y":-4,"z":1.25,"a":0,"b":0,"c":0},"tcpPose":{"x":12.5,"y":-4,"z":1.25,"a":0,"b":0,"c":0},"kinsT |
| MDI_RUN | 底部 MDI_RUN 执行当前 MDI | PASS | {"machineProfile":"xyzac-trt","activeProgram":"MDI","programSource":"operator-mdi","programExecutionSourceMode":"operator-mdi","runState":"mdi","activeLine":1,"machine":{"powerOn":true,"estopActive":false,"taskState":"on","mode":"mdi","allHomed":true,"interpState":"idle","taskPaused":false,"mdiCommand":"G90 X12.5 Y-4 Z1.25 F900"},"axisPose":{"x":12.5,"y":-4,"z":1.25,"a":0,"b":0,"c":0},"dro":{"x":12.5,"y":-4,"z":1.25,"a":0,"b":0,"c":0},"tcpPose":{"x":12.5,"y":-4,"z":1.25,"a":0,"b":0,"c":0},"kinsT |
| mode-manual | 返回 MANUAL 准备倍率 | PASS | {"machineProfile":"xyzac-trt","activeProgram":"MDI","programSource":"operator-mdi","programExecutionSourceMode":"linuxcnc-task-motion-hal-wasm","runState":"stopped","activeLine":4,"machine":{"powerOn":true,"estopActive":false,"taskState":"on","mode":"manual","allHomed":true,"interpState":"idle","taskPaused":false,"mdiCommand":"G90 X12.5 Y-4 Z1.25 F900"},"axisPose":{"x":0,"y":0,"z":1.94521,"a":0,"b":0,"c":0},"dro":{"x":0,"y":0,"z":1.94521,"a":0,"b":0,"c":0},"tcpPose":{"x":0,"y":0,"z":1.94521,"a": |
| rapid-override-down | Rapid - | PASS | {"machineProfile":"xyzac-trt","activeProgram":"MDI","programSource":"operator-mdi","programExecutionSourceMode":"linuxcnc-task-motion-hal-wasm","runState":"stopped","activeLine":4,"machine":{"powerOn":true,"estopActive":false,"taskState":"on","mode":"manual","allHomed":true,"interpState":"idle","taskPaused":false,"mdiCommand":"G90 X12.5 Y-4 Z1.25 F900"},"axisPose":{"x":0,"y":0,"z":1.94521,"a":0,"b":0,"c":0},"dro":{"x":0,"y":0,"z":1.94521,"a":0,"b":0,"c":0},"tcpPose":{"x":0,"y":0,"z":1.94521,"a": |
| rapid-override-up | Rapid + | PASS | {"machineProfile":"xyzac-trt","activeProgram":"MDI","programSource":"operator-mdi","programExecutionSourceMode":"linuxcnc-task-motion-hal-wasm","runState":"stopped","activeLine":4,"machine":{"powerOn":true,"estopActive":false,"taskState":"on","mode":"manual","allHomed":true,"interpState":"idle","taskPaused":false,"mdiCommand":"G90 X12.5 Y-4 Z1.25 F900"},"axisPose":{"x":0,"y":0,"z":1.94521,"a":0,"b":0,"c":0},"dro":{"x":0,"y":0,"z":1.94521,"a":0,"b":0,"c":0},"tcpPose":{"x":0,"y":0,"z":1.94521,"a": |
| rapid-override-reset | Rapid 100 | PASS | {"machineProfile":"xyzac-trt","activeProgram":"MDI","programSource":"operator-mdi","programExecutionSourceMode":"linuxcnc-task-motion-hal-wasm","runState":"stopped","activeLine":4,"machine":{"powerOn":true,"estopActive":false,"taskState":"on","mode":"manual","allHomed":true,"interpState":"idle","taskPaused":false,"mdiCommand":"G90 X12.5 Y-4 Z1.25 F900"},"axisPose":{"x":0,"y":0,"z":1.94521,"a":0,"b":0,"c":0},"dro":{"x":0,"y":0,"z":1.94521,"a":0,"b":0,"c":0},"tcpPose":{"x":0,"y":0,"z":1.94521,"a": |
| feed-override-up | Feed + | PASS | {"machineProfile":"xyzac-trt","activeProgram":"MDI","programSource":"operator-mdi","programExecutionSourceMode":"linuxcnc-task-motion-hal-wasm","runState":"stopped","activeLine":4,"machine":{"powerOn":true,"estopActive":false,"taskState":"on","mode":"manual","allHomed":true,"interpState":"idle","taskPaused":false,"mdiCommand":"G90 X12.5 Y-4 Z1.25 F900"},"axisPose":{"x":0,"y":0,"z":1.94521,"a":0,"b":0,"c":0},"dro":{"x":0,"y":0,"z":1.94521,"a":0,"b":0,"c":0},"tcpPose":{"x":0,"y":0,"z":1.94521,"a": |
| feed-override-down | Feed - | PASS | {"machineProfile":"xyzac-trt","activeProgram":"MDI","programSource":"operator-mdi","programExecutionSourceMode":"linuxcnc-task-motion-hal-wasm","runState":"stopped","activeLine":4,"machine":{"powerOn":true,"estopActive":false,"taskState":"on","mode":"manual","allHomed":true,"interpState":"idle","taskPaused":false,"mdiCommand":"G90 X12.5 Y-4 Z1.25 F900"},"axisPose":{"x":0,"y":0,"z":1.94521,"a":0,"b":0,"c":0},"dro":{"x":0,"y":0,"z":1.94521,"a":0,"b":0,"c":0},"tcpPose":{"x":0,"y":0,"z":1.94521,"a": |
| feed-override-reset | Feed 100 | PASS | {"machineProfile":"xyzac-trt","activeProgram":"MDI","programSource":"operator-mdi","programExecutionSourceMode":"linuxcnc-task-motion-hal-wasm","runState":"stopped","activeLine":4,"machine":{"powerOn":true,"estopActive":false,"taskState":"on","mode":"manual","allHomed":true,"interpState":"idle","taskPaused":false,"mdiCommand":"G90 X12.5 Y-4 Z1.25 F900"},"axisPose":{"x":0,"y":0,"z":1.94521,"a":0,"b":0,"c":0},"dro":{"x":0,"y":0,"z":1.94521,"a":0,"b":0,"c":0},"tcpPose":{"x":0,"y":0,"z":1.94521,"a": |
| spindle-override-up | Spindle + | PASS | {"machineProfile":"xyzac-trt","activeProgram":"MDI","programSource":"operator-mdi","programExecutionSourceMode":"linuxcnc-task-motion-hal-wasm","runState":"stopped","activeLine":4,"machine":{"powerOn":true,"estopActive":false,"taskState":"on","mode":"manual","allHomed":true,"interpState":"idle","taskPaused":false,"mdiCommand":"G90 X12.5 Y-4 Z1.25 F900"},"axisPose":{"x":0,"y":0,"z":1.94521,"a":0,"b":0,"c":0},"dro":{"x":0,"y":0,"z":1.94521,"a":0,"b":0,"c":0},"tcpPose":{"x":0,"y":0,"z":1.94521,"a": |
| spindle-override-down | Spindle - | PASS | {"machineProfile":"xyzac-trt","activeProgram":"MDI","programSource":"operator-mdi","programExecutionSourceMode":"linuxcnc-task-motion-hal-wasm","runState":"stopped","activeLine":4,"machine":{"powerOn":true,"estopActive":false,"taskState":"on","mode":"manual","allHomed":true,"interpState":"idle","taskPaused":false,"mdiCommand":"G90 X12.5 Y-4 Z1.25 F900"},"axisPose":{"x":0,"y":0,"z":1.94521,"a":0,"b":0,"c":0},"dro":{"x":0,"y":0,"z":1.94521,"a":0,"b":0,"c":0},"tcpPose":{"x":0,"y":0,"z":1.94521,"a": |
| spindle-override-reset | Spindle 100 | PASS | {"machineProfile":"xyzac-trt","activeProgram":"MDI","programSource":"operator-mdi","programExecutionSourceMode":"linuxcnc-task-motion-hal-wasm","runState":"stopped","activeLine":4,"machine":{"powerOn":true,"estopActive":false,"taskState":"on","mode":"manual","allHomed":true,"interpState":"idle","taskPaused":false,"mdiCommand":"G90 X12.5 Y-4 Z1.25 F900"},"axisPose":{"x":0,"y":0,"z":1.94521,"a":0,"b":0,"c":0},"dro":{"x":0,"y":0,"z":1.94521,"a":0,"b":0,"c":0},"tcpPose":{"x":0,"y":0,"z":1.94521,"a": |
| ignore-limits | Limits | PASS | {"before":{"machineProfile":"xyzac-trt","activeProgram":"MDI","programSource":"operator-mdi","programExecutionSourceMode":"linuxcnc-task-motion-hal-wasm","runState":"stopped","activeLine":4,"machine":{"powerOn":true,"estopActive":false,"taskState":"on","mode":"manual","allHomed":true,"interpState":"idle","taskPaused":false,"mdiCommand":"G90 X12.5 Y-4 Z1.25 F900"},"axisPose":{"x":0,"y":0,"z":1.94521,"a":0,"b":0,"c":0},"dro":{"x":0,"y":0,"z":1.94521,"a":0,"b":0,"c":0},"tcpPose":{"x":0,"y":0,"z":1. |
| block-delete | / Block | PASS | {"before":{"machineProfile":"xyzac-trt","activeProgram":"MDI","programSource":"operator-mdi","programExecutionSourceMode":"linuxcnc-task-motion-hal-wasm","runState":"stopped","activeLine":4,"machine":{"powerOn":true,"estopActive":false,"taskState":"on","mode":"manual","allHomed":true,"interpState":"idle","taskPaused":false,"mdiCommand":"G90 X12.5 Y-4 Z1.25 F900"},"axisPose":{"x":0,"y":0,"z":1.94521,"a":0,"b":0,"c":0},"dro":{"x":0,"y":0,"z":1.94521,"a":0,"b":0,"c":0},"tcpPose":{"x":0,"y":0,"z":1. |
| optional-stop | M1 | PASS | {"before":{"machineProfile":"xyzac-trt","activeProgram":"MDI","programSource":"operator-mdi","programExecutionSourceMode":"linuxcnc-task-motion-hal-wasm","runState":"stopped","activeLine":4,"machine":{"powerOn":true,"estopActive":false,"taskState":"on","mode":"manual","allHomed":true,"interpState":"idle","taskPaused":false,"mdiCommand":"G90 X12.5 Y-4 Z1.25 F900"},"axisPose":{"x":0,"y":0,"z":1.94521,"a":0,"b":0,"c":0},"dro":{"x":0,"y":0,"z":1.94521,"a":0,"b":0,"c":0},"tcpPose":{"x":0,"y":0,"z":1. |
| spindle-forward | 主轴 FWD | PASS | {"before":{"machineProfile":"xyzac-trt","activeProgram":"MDI","programSource":"operator-mdi","programExecutionSourceMode":"linuxcnc-task-motion-hal-wasm","runState":"stopped","activeLine":4,"machine":{"powerOn":true,"estopActive":false,"taskState":"on","mode":"manual","allHomed":true,"interpState":"idle","taskPaused":false,"mdiCommand":"G90 X12.5 Y-4 Z1.25 F900"},"axisPose":{"x":0,"y":0,"z":1.94521,"a":0,"b":0,"c":0},"dro":{"x":0,"y":0,"z":1.94521,"a":0,"b":0,"c":0},"tcpPose":{"x":0,"y":0,"z":1. |
| spindle-reverse | 主轴 REV | PASS | {"before":{"machineProfile":"xyzac-trt","activeProgram":"MDI","programSource":"operator-mdi","programExecutionSourceMode":"linuxcnc-task-motion-hal-wasm","runState":"stopped","activeLine":4,"machine":{"powerOn":true,"estopActive":false,"taskState":"on","mode":"manual","allHomed":true,"interpState":"idle","taskPaused":false,"mdiCommand":"G90 X12.5 Y-4 Z1.25 F900"},"axisPose":{"x":0,"y":0,"z":1.94521,"a":0,"b":0,"c":0},"dro":{"x":0,"y":0,"z":1.94521,"a":0,"b":0,"c":0},"tcpPose":{"x":0,"y":0,"z":1. |
| spindle-stop | 主轴 STOP | PASS | {"before":{"machineProfile":"xyzac-trt","activeProgram":"MDI","programSource":"operator-mdi","programExecutionSourceMode":"linuxcnc-task-motion-hal-wasm","runState":"stopped","activeLine":4,"machine":{"powerOn":true,"estopActive":false,"taskState":"on","mode":"manual","allHomed":true,"interpState":"idle","taskPaused":false,"mdiCommand":"G90 X12.5 Y-4 Z1.25 F900"},"axisPose":{"x":0,"y":0,"z":1.94521,"a":0,"b":0,"c":0},"dro":{"x":0,"y":0,"z":1.94521,"a":0,"b":0,"c":0},"tcpPose":{"x":0,"y":0,"z":1. |
| toggle-flood | Flood | PASS | {"before":{"machineProfile":"xyzac-trt","activeProgram":"MDI","programSource":"operator-mdi","programExecutionSourceMode":"linuxcnc-task-motion-hal-wasm","runState":"stopped","activeLine":4,"machine":{"powerOn":true,"estopActive":false,"taskState":"on","mode":"manual","allHomed":true,"interpState":"idle","taskPaused":false,"mdiCommand":"G90 X12.5 Y-4 Z1.25 F900"},"axisPose":{"x":0,"y":0,"z":1.94521,"a":0,"b":0,"c":0},"dro":{"x":0,"y":0,"z":1.94521,"a":0,"b":0,"c":0},"tcpPose":{"x":0,"y":0,"z":1. |
| toggle-mist | Mist | PASS | {"before":{"machineProfile":"xyzac-trt","activeProgram":"MDI","programSource":"operator-mdi","programExecutionSourceMode":"linuxcnc-task-motion-hal-wasm","runState":"stopped","activeLine":4,"machine":{"powerOn":true,"estopActive":false,"taskState":"on","mode":"manual","allHomed":true,"interpState":"idle","taskPaused":false,"mdiCommand":"G90 X12.5 Y-4 Z1.25 F900"},"axisPose":{"x":0,"y":0,"z":1.94521,"a":0,"b":0,"c":0},"dro":{"x":0,"y":0,"z":1.94521,"a":0,"b":0,"c":0},"tcpPose":{"x":0,"y":0,"z":1. |
| SAVE_SESSION | Save Session | PASS | {"machineProfile":"xyzac-trt","activeProgram":"MDI","programSource":"operator-mdi","programExecutionSourceMode":"linuxcnc-task-motion-hal-wasm","runState":"stopped","activeLine":4,"machine":{"powerOn":true,"estopActive":false,"taskState":"on","mode":"manual","allHomed":true,"interpState":"idle","taskPaused":false,"mdiCommand":"G90 X12.5 Y-4 Z1.25 F900"},"axisPose":{"x":0,"y":0,"z":1.94521,"a":0,"b":0,"c":0},"dro":{"x":0,"y":0,"z":1.94521,"a":0,"b":0,"c":0},"tcpPose":{"x":0,"y":0,"z":1.94521,"a": |
| select-profile | 会话恢复前临时切换 profile | PASS | {"machineProfile":"xyzbc-trt","activeProgram":"configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzbc_switchkins.ngc","programSource":"operator-mdi","programExecutionSourceMode":"linuxcnc-task-motion-hal-wasm","runState":"stopped","activeLine":4,"machine":{"powerOn":true,"estopActive":false,"taskState":"on","mode":"manual","allHomed":true,"interpState":"idle","taskPaused":false,"mdiCommand":"G90 X12.5 Y-4 Z1.25 F900"},"axisPose":{"x":0,"y":0,"z":1.94521,"a":0,"b":0,"c":0},"dro":{"x":0," |
| RESTORE_SESSION | Restore Session | PASS | {"machineProfile":"xyzac-trt","activeProgram":"MDI","programSource":"operator-mdi","programExecutionSourceMode":"linuxcnc-task-motion-hal-wasm","runState":"stopped","activeLine":4,"machine":{"powerOn":true,"estopActive":false,"taskState":"on","mode":"manual","allHomed":true,"interpState":"idle","taskPaused":false,"mdiCommand":"G90 X12.5 Y-4 Z1.25 F900"},"axisPose":{"x":0,"y":0,"z":1.94521,"a":0,"b":0,"c":0},"dro":{"x":0,"y":0,"z":1.94521,"a":0,"b":0,"c":0},"tcpPose":{"x":0,"y":0,"z":1.94521,"a": |
| FULL | Full 全屏状态切换 | PASS | {"before":{"machineProfile":"xyzac-trt","activeProgram":"MDI","programSource":"operator-mdi","programExecutionSourceMode":"linuxcnc-task-motion-hal-wasm","runState":"stopped","activeLine":4,"machine":{"powerOn":true,"estopActive":false,"taskState":"on","mode":"manual","allHomed":true,"interpState":"idle","taskPaused":false,"mdiCommand":"G90 X12.5 Y-4 Z1.25 F900"},"axisPose":{"x":0,"y":0,"z":1.94521,"a":0,"b":0,"c":0},"dro":{"x":0,"y":0,"z":1.94521,"a":0,"b":0,"c":0},"tcpPose":{"x":0,"y":0,"z":1. |
| AUDIT_FULL_BOUNDARY | Audit Full Boundary | PASS | {"machineProfile":"xyzac-trt","activeProgram":"MDI","programSource":"operator-mdi","programExecutionSourceMode":"linuxcnc-task-motion-hal-wasm","runState":"stopped","activeLine":4,"machine":{"powerOn":true,"estopActive":false,"taskState":"on","mode":"manual","allHomed":true,"interpState":"idle","taskPaused":false,"mdiCommand":"G90 X12.5 Y-4 Z1.25 F900"},"axisPose":{"x":0,"y":0,"z":1.94521,"a":0,"b":0,"c":0},"dro":{"x":0,"y":0,"z":1.94521,"a":0,"b":0,"c":0},"tcpPose":{"x":0,"y":0,"z":1.94521,"a": |
| GMOCAPY_HAL_PIN ignore-limits | 公开 API 写入 gmoccapy HAL pin | PASS | {"machineProfile":"xyzac-trt","activeProgram":"MDI","programSource":"operator-mdi","programExecutionSourceMode":"linuxcnc-task-motion-hal-wasm","runState":"stopped","activeLine":4,"machine":{"powerOn":true,"estopActive":false,"taskState":"on","mode":"manual","allHomed":true,"interpState":"idle","taskPaused":false,"mdiCommand":"G90 X12.5 Y-4 Z1.25 F900"},"axisPose":{"x":0,"y":0,"z":1.94521,"a":0,"b":0,"c":0},"dro":{"x":0,"y":0,"z":1.94521,"a":0,"b":0,"c":0},"tcpPose":{"x":0,"y":0,"z":1.94521,"a": |
| GMOCAPY_NATIVE_PAGE file | 公开 API 切换 gmoccapy native file page | PASS | {"machineProfile":"xyzac-trt","activeProgram":"MDI","programSource":"operator-mdi","programExecutionSourceMode":"linuxcnc-task-motion-hal-wasm","runState":"stopped","activeLine":4,"machine":{"powerOn":true,"estopActive":false,"taskState":"on","mode":"manual","allHomed":true,"interpState":"idle","taskPaused":false,"mdiCommand":"G90 X12.5 Y-4 Z1.25 F900"},"axisPose":{"x":0,"y":0,"z":1.94521,"a":0,"b":0,"c":0},"dro":{"x":0,"y":0,"z":1.94521,"a":0,"b":0,"c":0},"tcpPose":{"x":0,"y":0,"z":1.94521,"a": |
## 图文证据
### 01-loaded-inventory 我打开主界面并记录按钮库存
我确认主界面九大区域、所有 data-action 控件、canvas 和运行时 API 已经加载。
![我打开主界面并记录按钮库存](working7-full-functional-evidence/01-loaded-inventory.png)
```json
{
"runState": "idle",
"machineProfile": "xyzac-trt",
"machine": {
"powerOn": false,
"estopActive": false,
"taskState": "estop-reset",
"mode": "manual",
"allHomed": false,
"interpState": "idle",
"taskPaused": false,
"mdiCommand": "G0 X0 Y0 Z0"
},
"axisPose": {
"x": 0,
"y": 0,
"z": 0,
"a": 0,
"b": 0,
"c": 0
},
"dro": {
"x": 0,
"y": 0,
"z": 0,
"a": 0,
"b": 0,
"c": 0
},
"canvas": {
"fiveAxisCanvas": "true",
"engine": "three.js r183",
"threeReady": "true",
"threeRevision": "183",
"threePathPoints": "2",
"threeExecutedPathPoints": "1",
"threeSceneObjects": "20",
"threeToolhead": "{\"x\":0,\"y\":0,\"z\":0}",
"threeSceneUnits": "m",
"threeLinearUnits": "mm",
"threeLinearUnitScaleToMeters": "0.001",
"threeToolAxis": "{\"x\":0,\"y\":0,\"z\":1}",
"threeTcpPose": "{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"c\":0}",
"threeRtcpState": "on",
"threeSelectedView": "iso",
"threeFrameApi": "web-rtcp-5axis-motion-frame",
"threeRenderer": "webgl",
"threeSceneMode": "program-preview-and-tool-execution",
"threePreviewScope": "machine-reference-and-toolpath",
"threeMachineReferenceModel": "webgl-five-axis-reference",
"threeCameraControls": "orbit-pan-zoom",
"threeProgramPreviewSource": "linuxcnc-interpreter-wasm",
"threeToolExecutionMarker": "true",
"threeTcpMarker": "sphere",
"threeToolAxisMarker": "line",
"threeToolpathPreviewSource": "linuxcnc_interpreter_canonical_motion",
"threeToolExecutionTraceSource": "linuxcnc_tp_samples_or_task_motion_hal_feedback",
"threePathFitBounds": "ok",
"threePathBoundsMeters": "{\"center\":{\"x\":0,\"y\":0,\"z\":0.002},\"size\":{\"x\":0,\"y\":0,\"z\":0.005},\"maxSpan\":0.005}",
"threeCurrentSegmentHighlight": "ok",
"threeRapidFeedVisualDistinction": "ok",
"threeNoGcodeSemanticsGeneration": "ok",
"threeRapidPathPoints": "2",
"threeFeedPathPoints": "0",
"threeArcPathPoints": "0",
"threeCurrentSegmentPoints": "2",
"threeCurrentSegmentType": "STRAIGHT_TRAVERSE"
},
"gcode": {
"currentLine": 1,
"activeRowLine": 1,
"activeExecution": "idle | F 0.0 | cycle 1/10 | sample 10 | linuxcnc-task-motion-hal-wasm"
},
"values": {
"activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc",
"programSource": "linuxcnc-vendored-5axis-gcode",
"rapidOverride": "100 %",
"feedOverride": "100 %",
"spindleOverride": "100 %",
"halLast": "none",
"taskGates": "jog blocked / home blocked / auto blocked / mdi blocked / pause blocked / resume blocked",
"taskHal": "task / motion / hal / sync",
"fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked",
"gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping",
"gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only",
"nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main",
"session": "not-saved / - / storage pending / - / -",
"operatorMessage": "LinuxCNC task/HAL session ready /work/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt/demos/boat-xyzac.ngc"
}
}
```
### 02-initial-run-blocked 我验证未上电 RUN 门禁
未上电时 RUN 不会进入执行状态,页面给出 machine must be on 门禁原因。
![我验证未上电 RUN 门禁](working7-full-functional-evidence/02-initial-run-blocked.png)
```json
{
"runState": "idle",
"machineProfile": "xyzac-trt",
"machine": {
"powerOn": false,
"estopActive": false,
"taskState": "estop-reset",
"mode": "manual",
"allHomed": false,
"interpState": "idle",
"taskPaused": false,
"mdiCommand": "G0 X0 Y0 Z0"
},
"axisPose": {
"x": 0,
"y": 0,
"z": 0,
"a": 0,
"b": 0,
"c": 0
},
"dro": {
"x": 0,
"y": 0,
"z": 0,
"a": 0,
"b": 0,
"c": 0
},
"canvas": {
"fiveAxisCanvas": "true",
"engine": "three.js r183",
"threeReady": "true",
"threeRevision": "183",
"threePathPoints": "2",
"threeExecutedPathPoints": "1",
"threeSceneObjects": "20",
"threeToolhead": "{\"x\":0,\"y\":0,\"z\":0}",
"threeSceneUnits": "m",
"threeLinearUnits": "mm",
"threeLinearUnitScaleToMeters": "0.001",
"threeToolAxis": "{\"x\":0,\"y\":0,\"z\":1}",
"threeTcpPose": "{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"c\":0}",
"threeRtcpState": "on",
"threeSelectedView": "iso",
"threeFrameApi": "web-rtcp-5axis-motion-frame",
"threeRenderer": "webgl",
"threeSceneMode": "program-preview-and-tool-execution",
"threePreviewScope": "machine-reference-and-toolpath",
"threeMachineReferenceModel": "webgl-five-axis-reference",
"threeCameraControls": "orbit-pan-zoom",
"threeProgramPreviewSource": "linuxcnc-interpreter-wasm",
"threeToolExecutionMarker": "true",
"threeTcpMarker": "sphere",
"threeToolAxisMarker": "line",
"threeToolpathPreviewSource": "linuxcnc_interpreter_canonical_motion",
"threeToolExecutionTraceSource": "linuxcnc_tp_samples_or_task_motion_hal_feedback",
"threePathFitBounds": "ok",
"threePathBoundsMeters": "{\"center\":{\"x\":0,\"y\":0,\"z\":0.002},\"size\":{\"x\":0,\"y\":0,\"z\":0.005},\"maxSpan\":0.005}",
"threeCurrentSegmentHighlight": "ok",
"threeRapidFeedVisualDistinction": "ok",
"threeNoGcodeSemanticsGeneration": "ok",
"threeRapidPathPoints": "2",
"threeFeedPathPoints": "0",
"threeArcPathPoints": "0",
"threeCurrentSegmentPoints": "2",
"threeCurrentSegmentType": "STRAIGHT_TRAVERSE"
},
"gcode": {
"currentLine": 1,
"activeRowLine": 1,
"activeExecution": "idle | F 0.0 | cycle 1/10 | sample 10 | linuxcnc-task-motion-hal-wasm"
},
"values": {
"activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc",
"programSource": "linuxcnc-vendored-5axis-gcode",
"rapidOverride": "100 %",
"feedOverride": "100 %",
"spindleOverride": "100 %",
"halLast": "none",
"taskGates": "jog blocked / home blocked / auto blocked / mdi blocked / pause blocked / resume blocked",
"taskHal": "task / motion / hal / sync",
"fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked",
"gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping",
"gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only",
"nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main",
"session": "not-saved / - / storage pending / - / -",
"operatorMessage": "run blocked: machine must be on"
}
}
```
### 03-powered-homed 我完成上电和回零
POWER 和 HOME 后,机床处于 on/manual/allHomed 状态DRO 与轴值保持可读。
![我完成上电和回零](working7-full-functional-evidence/03-powered-homed.png)
```json
{
"runState": "idle",
"machineProfile": "xyzac-trt",
"machine": {
"powerOn": true,
"estopActive": false,
"taskState": "on",
"mode": "manual",
"allHomed": true,
"interpState": "idle",
"taskPaused": false,
"mdiCommand": "G0 X0 Y0 Z0"
},
"axisPose": {
"x": 0,
"y": 0,
"z": 0,
"a": 0,
"b": 0,
"c": 0
},
"dro": {
"x": 0,
"y": 0,
"z": 0,
"a": 0,
"b": 0,
"c": 0
},
"canvas": {
"fiveAxisCanvas": "true",
"engine": "three.js r183",
"threeReady": "true",
"threeRevision": "183",
"threePathPoints": "2",
"threeExecutedPathPoints": "1",
"threeSceneObjects": "20",
"threeToolhead": "{\"x\":0,\"y\":0,\"z\":0}",
"threeSceneUnits": "m",
"threeLinearUnits": "mm",
"threeLinearUnitScaleToMeters": "0.001",
"threeToolAxis": "{\"x\":0,\"y\":0,\"z\":1}",
"threeTcpPose": "{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"c\":0}",
"threeRtcpState": "on",
"threeSelectedView": "iso",
"threeFrameApi": "web-rtcp-5axis-motion-frame",
"threeRenderer": "webgl",
"threeSceneMode": "program-preview-and-tool-execution",
"threePreviewScope": "machine-reference-and-toolpath",
"threeMachineReferenceModel": "webgl-five-axis-reference",
"threeCameraControls": "orbit-pan-zoom",
"threeProgramPreviewSource": "linuxcnc-interpreter-wasm",
"threeToolExecutionMarker": "true",
"threeTcpMarker": "sphere",
"threeToolAxisMarker": "line",
"threeToolpathPreviewSource": "linuxcnc_interpreter_canonical_motion",
"threeToolExecutionTraceSource": "linuxcnc_tp_samples_or_task_motion_hal_feedback",
"threePathFitBounds": "ok",
"threePathBoundsMeters": "{\"center\":{\"x\":0,\"y\":0,\"z\":0.002},\"size\":{\"x\":0,\"y\":0,\"z\":0.005},\"maxSpan\":0.005}",
"threeCurrentSegmentHighlight": "ok",
"threeRapidFeedVisualDistinction": "ok",
"threeNoGcodeSemanticsGeneration": "ok",
"threeRapidPathPoints": "2",
"threeFeedPathPoints": "0",
"threeArcPathPoints": "0",
"threeCurrentSegmentPoints": "2",
"threeCurrentSegmentType": "STRAIGHT_TRAVERSE"
},
"gcode": {
"currentLine": 1,
"activeRowLine": 1,
"activeExecution": "idle | F 3600.0 | cycle 3/30 | sample 30 | linuxcnc-task-motion-hal-wasm"
},
"values": {
"activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc",
"programSource": "linuxcnc-vendored-5axis-gcode",
"rapidOverride": "100 %",
"feedOverride": "100 %",
"spindleOverride": "100 %",
"halLast": "none",
"taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked",
"taskHal": "task / motion / hal / sync",
"fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked",
"gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping",
"gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only",
"nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main",
"session": "not-saved / - / storage pending / - / -",
"operatorMessage": "task/HAL machine homed"
}
}
```
### 04-auto-right-panel 我验证右侧 AUTO 按钮
右侧 AUTO 变为 activeMANUAL 变为 inactivepower/home 状态未丢失。
![我验证右侧 AUTO 按钮](working7-full-functional-evidence/04-auto-right-panel.png)
```json
{
"runState": "idle",
"machineProfile": "xyzac-trt",
"machine": {
"powerOn": true,
"estopActive": false,
"taskState": "on",
"mode": "auto",
"allHomed": true,
"interpState": "idle",
"taskPaused": false,
"mdiCommand": "G0 X0 Y0 Z0"
},
"axisPose": {
"x": 0,
"y": 0,
"z": 0,
"a": 0,
"b": 0,
"c": 0
},
"dro": {
"x": 0,
"y": 0,
"z": 0,
"a": 0,
"b": 0,
"c": 0
},
"canvas": {
"fiveAxisCanvas": "true",
"engine": "three.js r183",
"threeReady": "true",
"threeRevision": "183",
"threePathPoints": "2",
"threeExecutedPathPoints": "1",
"threeSceneObjects": "20",
"threeToolhead": "{\"x\":0,\"y\":0,\"z\":0}",
"threeSceneUnits": "m",
"threeLinearUnits": "mm",
"threeLinearUnitScaleToMeters": "0.001",
"threeToolAxis": "{\"x\":0,\"y\":0,\"z\":1}",
"threeTcpPose": "{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"c\":0}",
"threeRtcpState": "on",
"threeSelectedView": "iso",
"threeFrameApi": "web-rtcp-5axis-motion-frame",
"threeRenderer": "webgl",
"threeSceneMode": "program-preview-and-tool-execution",
"threePreviewScope": "machine-reference-and-toolpath",
"threeMachineReferenceModel": "webgl-five-axis-reference",
"threeCameraControls": "orbit-pan-zoom",
"threeProgramPreviewSource": "linuxcnc-interpreter-wasm",
"threeToolExecutionMarker": "true",
"threeTcpMarker": "sphere",
"threeToolAxisMarker": "line",
"threeToolpathPreviewSource": "linuxcnc_interpreter_canonical_motion",
"threeToolExecutionTraceSource": "linuxcnc_tp_samples_or_task_motion_hal_feedback",
"threePathFitBounds": "ok",
"threePathBoundsMeters": "{\"center\":{\"x\":0,\"y\":0,\"z\":0.002},\"size\":{\"x\":0,\"y\":0,\"z\":0.005},\"maxSpan\":0.005}",
"threeCurrentSegmentHighlight": "ok",
"threeRapidFeedVisualDistinction": "ok",
"threeNoGcodeSemanticsGeneration": "ok",
"threeRapidPathPoints": "2",
"threeFeedPathPoints": "0",
"threeArcPathPoints": "0",
"threeCurrentSegmentPoints": "2",
"threeCurrentSegmentType": "STRAIGHT_TRAVERSE"
},
"gcode": {
"currentLine": 1,
"activeRowLine": 1,
"activeExecution": "idle | F 3600.0 | cycle 4/40 | sample 40 | linuxcnc-task-motion-hal-wasm"
},
"values": {
"activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc",
"programSource": "linuxcnc-vendored-5axis-gcode",
"rapidOverride": "100 %",
"feedOverride": "100 %",
"spindleOverride": "100 %",
"halLast": "none",
"taskGates": "jog blocked / home blocked / auto / mdi blocked / pause / resume blocked",
"taskHal": "task / motion / hal / sync",
"fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked",
"gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping",
"gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only",
"nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main",
"session": "not-saved / - / storage pending / - / -",
"operatorMessage": "task/HAL mode auto"
}
}
```
### 05-right-sidebar-all-states 我验证右侧全班按钮
右侧 E-STOP/POWER/RESET/AUTO/MANUAL/JOG/MDI/IDENTITY/TCP 的状态和门禁均已实际点击验证。
![我验证右侧全班按钮](working7-full-functional-evidence/05-right-sidebar-all-states.png)
```json
{
"runState": "idle",
"machineProfile": "xyzac-trt",
"machine": {
"powerOn": true,
"estopActive": false,
"taskState": "on",
"mode": "manual",
"allHomed": true,
"interpState": "idle",
"taskPaused": false,
"mdiCommand": "G0 X0 Y0 Z0"
},
"axisPose": {
"x": 0,
"y": 0,
"z": 0,
"a": 0,
"b": 0,
"c": 0
},
"dro": {
"x": 0,
"y": 0,
"z": 0,
"a": 0,
"b": 0,
"c": 0
},
"canvas": {
"fiveAxisCanvas": "true",
"engine": "three.js r183",
"threeReady": "true",
"threeRevision": "183",
"threePathPoints": "2",
"threeExecutedPathPoints": "1",
"threeSceneObjects": "20",
"threeToolhead": "{\"x\":0,\"y\":0,\"z\":0}",
"threeSceneUnits": "m",
"threeLinearUnits": "mm",
"threeLinearUnitScaleToMeters": "0.001",
"threeToolAxis": "{\"x\":0,\"y\":0,\"z\":1}",
"threeTcpPose": "{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"c\":0}",
"threeRtcpState": "off",
"threeSelectedView": "iso",
"threeFrameApi": "web-rtcp-5axis-motion-frame",
"threeRenderer": "webgl",
"threeSceneMode": "program-preview-and-tool-execution",
"threePreviewScope": "machine-reference-and-toolpath",
"threeMachineReferenceModel": "webgl-five-axis-reference",
"threeCameraControls": "orbit-pan-zoom",
"threeProgramPreviewSource": "linuxcnc-interpreter-wasm",
"threeToolExecutionMarker": "true",
"threeTcpMarker": "sphere",
"threeToolAxisMarker": "line",
"threeToolpathPreviewSource": "linuxcnc_interpreter_canonical_motion",
"threeToolExecutionTraceSource": "linuxcnc_tp_samples_or_task_motion_hal_feedback",
"threePathFitBounds": "ok",
"threePathBoundsMeters": "{\"center\":{\"x\":0,\"y\":0,\"z\":0.002},\"size\":{\"x\":0,\"y\":0,\"z\":0.005},\"maxSpan\":0.005}",
"threeCurrentSegmentHighlight": "ok",
"threeRapidFeedVisualDistinction": "ok",
"threeNoGcodeSemanticsGeneration": "ok",
"threeRapidPathPoints": "2",
"threeFeedPathPoints": "0",
"threeArcPathPoints": "0",
"threeCurrentSegmentPoints": "2",
"threeCurrentSegmentType": "STRAIGHT_TRAVERSE"
},
"gcode": {
"currentLine": 1,
"activeRowLine": 1,
"activeExecution": "idle | F 3600.0 | cycle 8/80 | sample 80 | linuxcnc-task-motion-hal-wasm"
},
"values": {
"activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc",
"programSource": "linuxcnc-vendored-5axis-gcode",
"rapidOverride": "100 %",
"feedOverride": "100 %",
"spindleOverride": "100 %",
"halLast": "none",
"taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked",
"taskHal": "task / motion / hal / sync",
"fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked",
"gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping",
"gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only",
"nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main",
"session": "not-saved / - / storage pending / - / -",
"operatorMessage": "kinematics identity"
}
}
```
### 06-profile-xyzbc 我验证 Profile 下拉切换
切换到 xyzbc-trt 后INI、运动学和机床文件 staging 会重新加载到对应 profile。
![我验证 Profile 下拉切换](working7-full-functional-evidence/06-profile-xyzbc.png)
```json
{
"runState": "idle",
"machineProfile": "xyzbc-trt",
"machine": {
"powerOn": true,
"estopActive": false,
"taskState": "on",
"mode": "manual",
"allHomed": true,
"interpState": "idle",
"taskPaused": false,
"mdiCommand": "G0 X0 Y0 Z0"
},
"axisPose": {
"x": 0,
"y": 0,
"z": 0,
"a": 0,
"b": 0,
"c": 0
},
"dro": {
"x": 0,
"y": 0,
"z": 0,
"a": 0,
"b": 0,
"c": 0
},
"canvas": {
"fiveAxisCanvas": "true",
"engine": "three.js r183",
"threeReady": "true",
"threeRevision": "183",
"threePathPoints": "2",
"threeExecutedPathPoints": "1",
"threeSceneObjects": "20",
"threeToolhead": "{\"x\":0,\"y\":0,\"z\":0}",
"threeSceneUnits": "m",
"threeLinearUnits": "mm",
"threeLinearUnitScaleToMeters": "0.001",
"threeToolAxis": "{\"x\":0,\"y\":0,\"z\":1}",
"threeTcpPose": "{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"c\":0}",
"threeRtcpState": "off",
"threeSelectedView": "iso",
"threeFrameApi": "web-rtcp-5axis-motion-frame",
"threeRenderer": "webgl",
"threeSceneMode": "program-preview-and-tool-execution",
"threePreviewScope": "machine-reference-and-toolpath",
"threeMachineReferenceModel": "webgl-five-axis-reference",
"threeCameraControls": "orbit-pan-zoom",
"threeProgramPreviewSource": "linuxcnc-interpreter-wasm",
"threeToolExecutionMarker": "true",
"threeTcpMarker": "sphere",
"threeToolAxisMarker": "line",
"threeToolpathPreviewSource": "linuxcnc_interpreter_canonical_motion",
"threeToolExecutionTraceSource": "linuxcnc_tp_samples_or_task_motion_hal_feedback",
"threePathFitBounds": "ok",
"threePathBoundsMeters": "{\"center\":{\"x\":0,\"y\":0,\"z\":0.002},\"size\":{\"x\":0,\"y\":0,\"z\":0.005},\"maxSpan\":0.005}",
"threeCurrentSegmentHighlight": "ok",
"threeRapidFeedVisualDistinction": "ok",
"threeNoGcodeSemanticsGeneration": "ok",
"threeRapidPathPoints": "2",
"threeFeedPathPoints": "0",
"threeArcPathPoints": "0",
"threeCurrentSegmentPoints": "2",
"threeCurrentSegmentType": "STRAIGHT_TRAVERSE"
},
"gcode": {
"currentLine": 1,
"activeRowLine": 1,
"activeExecution": "idle | F 3600.0 | cycle 10/100 | sample 100 | linuxcnc-task-motion-hal-wasm"
},
"values": {
"activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzbc_switchkins.ngc",
"programSource": "linuxcnc-vendored-5axis-gcode",
"rapidOverride": "100 %",
"feedOverride": "100 %",
"spindleOverride": "100 %",
"halLast": "none",
"taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked",
"taskHal": "task / motion / hal / sync",
"fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked",
"gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping",
"gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only",
"nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main",
"session": "profile-switched / - / storage pending / - / -",
"operatorMessage": "LinuxCNC kinematics xyzbc-trt profile frame refreshed"
}
}
```
### 07-preview-buttons 我验证刀具预览按钮和刀路状态
X/Y/Z/Fit/Clear/Reload 后canvas dataset 中的 selectedView、pathPoints、RTCP 状态与 store 同步。
![我验证刀具预览按钮和刀路状态](working7-full-functional-evidence/07-preview-buttons.png)
```json
{
"runState": "idle",
"machineProfile": "xyzac-trt",
"machine": {
"powerOn": true,
"estopActive": false,
"taskState": "on",
"mode": "manual",
"allHomed": true,
"interpState": "idle",
"taskPaused": false,
"mdiCommand": "G0 X0 Y0 Z0"
},
"axisPose": {
"x": 43,
"y": -32.15,
"z": -11.306,
"a": 0,
"b": 0,
"c": 0
},
"dro": {
"x": 43,
"y": -32.15,
"z": -11.306,
"a": 0,
"b": 0,
"c": 0
},
"canvas": {
"fiveAxisCanvas": "true",
"engine": "three.js r183",
"threeReady": "true",
"threeRevision": "183",
"threePathPoints": "2",
"threeExecutedPathPoints": "1",
"threeSceneObjects": "20",
"threeToolhead": "{\"x\":0.043,\"y\":-0.032,\"z\":-0.011}",
"threeSceneUnits": "m",
"threeLinearUnits": "mm",
"threeLinearUnitScaleToMeters": "0.001",
"threeToolAxis": "{\"x\":0,\"y\":0,\"z\":1}",
"threeTcpPose": "{\"x\":43,\"y\":-32.15,\"z\":-11.306,\"a\":0,\"c\":0}",
"threeRtcpState": "on",
"threeSelectedView": "iso",
"threeFrameApi": "web-rtcp-5axis-motion-frame",
"threeRenderer": "webgl",
"threeSceneMode": "program-preview-and-tool-execution",
"threePreviewScope": "machine-reference-and-toolpath",
"threeMachineReferenceModel": "webgl-five-axis-reference",
"threeCameraControls": "orbit-pan-zoom",
"threeProgramPreviewSource": "linuxcnc-interpreter-wasm",
"threeToolExecutionMarker": "true",
"threeTcpMarker": "sphere",
"threeToolAxisMarker": "line",
"threeToolpathPreviewSource": "linuxcnc_interpreter_canonical_motion",
"threeToolExecutionTraceSource": "linuxcnc_tp_samples_or_task_motion_hal_feedback",
"threePathFitBounds": "ok",
"threePathBoundsMeters": "{\"center\":{\"x\":0,\"y\":0,\"z\":0.002},\"size\":{\"x\":0,\"y\":0,\"z\":0.005},\"maxSpan\":0.005}",
"threeCurrentSegmentHighlight": "ok",
"threeRapidFeedVisualDistinction": "ok",
"threeNoGcodeSemanticsGeneration": "ok",
"threeRapidPathPoints": "2",
"threeFeedPathPoints": "0",
"threeArcPathPoints": "0",
"threeCurrentSegmentPoints": "2",
"threeCurrentSegmentType": "STRAIGHT_TRAVERSE"
},
"gcode": {
"currentLine": 1,
"activeRowLine": 1,
"activeExecution": ""
},
"values": {
"activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/xyzac_switchkins.ngc",
"programSource": "linuxcnc-vendored-5axis-gcode",
"rapidOverride": "100 %",
"feedOverride": "100 %",
"spindleOverride": "100 %",
"halLast": "none",
"taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked",
"taskHal": "task / motion / hal / sync",
"fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked",
"gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping",
"gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only",
"nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main",
"session": "profile-switched / - / storage pending / - / -",
"operatorMessage": "program reloaded"
}
}
```
### 08-linuxcnc-source-loaded 我验证 LinuxCNC G-code 来源选择
Stage 和 source 下拉选择后G-code 面板、程序行、刀路预览和 interpreter canonical motion 均已刷新。
![我验证 LinuxCNC G-code 来源选择](working7-full-functional-evidence/08-linuxcnc-source-loaded.png)
```json
{
"runState": "idle",
"machineProfile": "xyzac-trt",
"machine": {
"powerOn": true,
"estopActive": false,
"taskState": "on",
"mode": "manual",
"allHomed": true,
"interpState": "idle",
"taskPaused": false,
"mdiCommand": "G0 X0 Y0 Z0"
},
"axisPose": {
"x": 0,
"y": 0,
"z": 0,
"a": 0,
"b": 0,
"c": 0
},
"dro": {
"x": 0,
"y": 0,
"z": 0,
"a": 0,
"b": 0,
"c": 0
},
"canvas": {
"fiveAxisCanvas": "true",
"engine": "three.js r183",
"threeReady": "true",
"threeRevision": "183",
"threePathPoints": "2",
"threeExecutedPathPoints": "1",
"threeSceneObjects": "20",
"threeToolhead": "{\"x\":0,\"y\":0,\"z\":0}",
"threeSceneUnits": "m",
"threeLinearUnits": "mm",
"threeLinearUnitScaleToMeters": "0.001",
"threeToolAxis": "{\"x\":0,\"y\":0,\"z\":1}",
"threeTcpPose": "{\"x\":0,\"y\":0,\"z\":-84.019,\"a\":0,\"c\":0}",
"threeRtcpState": "on",
"threeSelectedView": "iso",
"threeFrameApi": "web-rtcp-5axis-motion-frame",
"threeRenderer": "webgl",
"threeSceneMode": "program-preview-and-tool-execution",
"threePreviewScope": "machine-reference-and-toolpath",
"threeMachineReferenceModel": "webgl-five-axis-reference",
"threeCameraControls": "orbit-pan-zoom",
"threeProgramPreviewSource": "linuxcnc-interpreter-wasm",
"threeToolExecutionMarker": "true",
"threeTcpMarker": "sphere",
"threeToolAxisMarker": "line",
"threeToolpathPreviewSource": "linuxcnc_interpreter_canonical_motion",
"threeToolExecutionTraceSource": "linuxcnc_tp_samples_or_task_motion_hal_feedback",
"threePathFitBounds": "ok",
"threePathBoundsMeters": "{\"center\":{\"x\":0,\"y\":0,\"z\":0.002},\"size\":{\"x\":0,\"y\":0,\"z\":0.005},\"maxSpan\":0.005}",
"threeCurrentSegmentHighlight": "ok",
"threeRapidFeedVisualDistinction": "ok",
"threeNoGcodeSemanticsGeneration": "ok",
"threeRapidPathPoints": "2",
"threeFeedPathPoints": "0",
"threeArcPathPoints": "0",
"threeCurrentSegmentPoints": "2",
"threeCurrentSegmentType": "STRAIGHT_TRAVERSE"
},
"gcode": {
"currentLine": 1,
"activeRowLine": 1,
"activeExecution": "idle | F 3600.0 | cycle 1/10 | sample 10 | linuxcnc-task-motion-hal-wasm"
},
"values": {
"activeProgram": "configs/sim/axis/vismach/5axis/table-rotary-tilting/demos/boat-xyzac.ngc",
"programSource": "linuxcnc-vendored-5axis-gcode",
"rapidOverride": "100 %",
"feedOverride": "100 %",
"spindleOverride": "100 %",
"halLast": "none",
"taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked",
"taskHal": "task / motion / hal / sync",
"fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked",
"gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping",
"gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only",
"nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main",
"session": "profile-switched / - / storage pending / - / -",
"operatorMessage": "LinuxCNC task/HAL session ready /work/sim/axis/vismach/5axis/table-rotary-tilting/xyzac-trt/demos/boat-xyzac.ngc"
}
}
```
### 09-open-file-loaded 我验证 Open 文件按钮
通过隐藏 file input 实际上传本地 fixture/test-program.ngc页面加载为 operator-file 程序。
![我验证 Open 文件按钮](working7-full-functional-evidence/09-open-file-loaded.png)
```json
{
"runState": "idle",
"machineProfile": "xyzac-trt",
"machine": {
"powerOn": true,
"estopActive": false,
"taskState": "on",
"mode": "auto",
"allHomed": true,
"interpState": "idle",
"taskPaused": false,
"mdiCommand": "G0 X0 Y0 Z0"
},
"axisPose": {
"x": 0,
"y": 0,
"z": 5,
"a": 0,
"b": 0,
"c": 0
},
"dro": {
"x": 0,
"y": 0,
"z": 5,
"a": 0,
"b": 0,
"c": 0
},
"canvas": {
"fiveAxisCanvas": "true",
"engine": "three.js r183",
"threeReady": "true",
"threeRevision": "183",
"threePathPoints": "3",
"threeExecutedPathPoints": "1",
"threeSceneObjects": "20",
"threeToolhead": "{\"x\":0,\"y\":0,\"z\":0}",
"threeSceneUnits": "m",
"threeLinearUnits": "mm",
"threeLinearUnitScaleToMeters": "0.001",
"threeToolAxis": "{\"x\":0,\"y\":0,\"z\":1}",
"threeTcpPose": "{\"x\":0,\"y\":0,\"z\":5,\"a\":0,\"c\":0}",
"threeRtcpState": "on",
"threeSelectedView": "iso",
"threeFrameApi": "web-rtcp-5axis-motion-frame",
"threeRenderer": "webgl",
"threeSceneMode": "program-preview-and-tool-execution",
"threePreviewScope": "machine-reference-and-toolpath",
"threeMachineReferenceModel": "webgl-five-axis-reference",
"threeCameraControls": "orbit-pan-zoom",
"threeProgramPreviewSource": "linuxcnc-interpreter-wasm",
"threeToolExecutionMarker": "true",
"threeTcpMarker": "sphere",
"threeToolAxisMarker": "line",
"threeToolpathPreviewSource": "linuxcnc_interpreter_canonical_motion",
"threeToolExecutionTraceSource": "linuxcnc_tp_samples_or_task_motion_hal_feedback",
"threePathFitBounds": "ok",
"threePathBoundsMeters": "{\"center\":{\"x\":0.005,\"y\":0.005,\"z\":0.002},\"size\":{\"x\":0.01,\"y\":0.01,\"z\":0.006},\"maxSpan\":0.01}",
"threeCurrentSegmentHighlight": "ok",
"threeRapidFeedVisualDistinction": "ok",
"threeNoGcodeSemanticsGeneration": "ok",
"threeRapidPathPoints": "1",
"threeFeedPathPoints": "2",
"threeArcPathPoints": "0",
"threeCurrentSegmentPoints": "1",
"threeCurrentSegmentType": "STRAIGHT_TRAVERSE"
},
"gcode": {
"currentLine": 3,
"activeRowLine": 3,
"activeExecution": "ready | F 30.0 | cycle 0/1 | sample 0 | linuxcnc-interpreter-wasm"
},
"values": {
"activeProgram": "test-program.ngc",
"programSource": "operator-file",
"rapidOverride": "100 %",
"feedOverride": "100 %",
"spindleOverride": "100 %",
"halLast": "none",
"taskGates": "jog blocked / home blocked / auto / mdi blocked / pause / resume blocked",
"taskHal": "task / motion / hal / sync",
"fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked",
"gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping",
"gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only",
"nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main",
"session": "profile-switched / - / storage pending / - / -",
"operatorMessage": "LinuxCNC interpreter motion events 3"
}
}
```
### 10-run-ready 我验证 Run Ready
Run Ready 完成 power/home/auto/source/session 前置条件,准备进入 Task/HAL 程序执行。
![我验证 Run Ready](working7-full-functional-evidence/10-run-ready.png)
```json
{
"runState": "idle",
"machineProfile": "xyzac-trt",
"machine": {
"powerOn": true,
"estopActive": false,
"taskState": "on",
"mode": "auto",
"allHomed": true,
"interpState": "idle",
"taskPaused": false,
"mdiCommand": "G0 X0 Y0 Z0"
},
"axisPose": {
"x": 0,
"y": 0,
"z": 0,
"a": 0,
"b": 0,
"c": 0
},
"dro": {
"x": 0,
"y": 0,
"z": 0,
"a": 0,
"b": 0,
"c": 0
},
"canvas": {
"fiveAxisCanvas": "true",
"engine": "three.js r183",
"threeReady": "true",
"threeRevision": "183",
"threePathPoints": "3",
"threeExecutedPathPoints": "1",
"threeSceneObjects": "20",
"threeToolhead": "{\"x\":0,\"y\":0,\"z\":0}",
"threeSceneUnits": "m",
"threeLinearUnits": "mm",
"threeLinearUnitScaleToMeters": "0.001",
"threeToolAxis": "{\"x\":0,\"y\":0,\"z\":1}",
"threeTcpPose": "{\"x\":0,\"y\":0,\"z\":0,\"a\":0,\"c\":0}",
"threeRtcpState": "on",
"threeSelectedView": "iso",
"threeFrameApi": "web-rtcp-5axis-motion-frame",
"threeRenderer": "webgl",
"threeSceneMode": "program-preview-and-tool-execution",
"threePreviewScope": "machine-reference-and-toolpath",
"threeMachineReferenceModel": "webgl-five-axis-reference",
"threeCameraControls": "orbit-pan-zoom",
"threeProgramPreviewSource": "linuxcnc-interpreter-wasm",
"threeToolExecutionMarker": "true",
"threeTcpMarker": "sphere",
"threeToolAxisMarker": "line",
"threeToolpathPreviewSource": "linuxcnc_interpreter_canonical_motion",
"threeToolExecutionTraceSource": "linuxcnc_tp_samples_or_task_motion_hal_feedback",
"threePathFitBounds": "ok",
"threePathBoundsMeters": "{\"center\":{\"x\":0.005,\"y\":0.005,\"z\":0.002},\"size\":{\"x\":0.01,\"y\":0.01,\"z\":0.006},\"maxSpan\":0.01}",
"threeCurrentSegmentHighlight": "ok",
"threeRapidFeedVisualDistinction": "ok",
"threeNoGcodeSemanticsGeneration": "ok",
"threeRapidPathPoints": "1",
"threeFeedPathPoints": "2",
"threeArcPathPoints": "0",
"threeCurrentSegmentPoints": "1",
"threeCurrentSegmentType": "STRAIGHT_TRAVERSE"
},
"gcode": {
"currentLine": 1,
"activeRowLine": 1,
"activeExecution": "idle | F 3600.0 | cycle 4/40 | sample 40 | linuxcnc-task-motion-hal-wasm"
},
"values": {
"activeProgram": "test-program.ngc",
"programSource": "operator-file",
"rapidOverride": "100 %",
"feedOverride": "100 %",
"spindleOverride": "100 %",
"halLast": "none",
"taskGates": "jog blocked / home blocked / auto / mdi blocked / pause / resume blocked",
"taskHal": "task / motion / hal / sync",
"fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked",
"gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping",
"gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only",
"nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main",
"session": "profile-switched / - / storage pending / - / -",
"operatorMessage": "RUN ready: power on, homed, auto mode"
}
}
```
### 11-run-realtime-path 我验证刀具实时执行路径
RUN 后 G-code 当前行、DRO、Task/HAL runtime feedback、canvas executedPathPoints 和当前段高亮同步变化。
![我验证刀具实时执行路径](working7-full-functional-evidence/11-run-realtime-path.png)
```json
{
"runState": "running",
"machineProfile": "xyzac-trt",
"machine": {
"powerOn": true,
"estopActive": false,
"taskState": "on",
"mode": "auto",
"allHomed": true,
"interpState": "reading",
"taskPaused": false,
"mdiCommand": "G0 X0 Y0 Z0"
},
"axisPose": {
"x": 0,
"y": 0,
"z": 2.50968,
"a": 0,
"b": 0,
"c": 0
},
"dro": {
"x": 0,
"y": 0,
"z": 2.50968,
"a": 0,
"b": 0,
"c": 0
},
"canvas": {
"fiveAxisCanvas": "true",
"engine": "three.js r183",
"threeReady": "true",
"threeRevision": "183",
"threePathPoints": "3",
"threeExecutedPathPoints": "1",
"threeSceneObjects": "20",
"threeToolhead": "{\"x\":0,\"y\":0,\"z\":0.003}",
"threeSceneUnits": "m",
"threeLinearUnits": "mm",
"threeLinearUnitScaleToMeters": "0.001",
"threeToolAxis": "{\"x\":0,\"y\":0,\"z\":1}",
"threeTcpPose": "{\"x\":0,\"y\":0,\"z\":2.51,\"a\":0,\"c\":0}",
"threeRtcpState": "off",
"threeSelectedView": "iso",
"threeFrameApi": "web-rtcp-5axis-motion-frame",
"threeRenderer": "webgl",
"threeSceneMode": "program-preview-and-tool-execution",
"threePreviewScope": "machine-reference-and-toolpath",
"threeMachineReferenceModel": "webgl-five-axis-reference",
"threeCameraControls": "orbit-pan-zoom",
"threeProgramPreviewSource": "linuxcnc-interpreter-wasm",
"threeToolExecutionMarker": "true",
"threeTcpMarker": "sphere",
"threeToolAxisMarker": "line",
"threeToolpathPreviewSource": "linuxcnc_interpreter_canonical_motion",
"threeToolExecutionTraceSource": "linuxcnc_tp_samples_or_task_motion_hal_feedback",
"threePathFitBounds": "ok",
"threePathBoundsMeters": "{\"center\":{\"x\":0.005,\"y\":0.005,\"z\":0.002},\"size\":{\"x\":0.01,\"y\":0.01,\"z\":0.006},\"maxSpan\":0.01}",
"threeCurrentSegmentHighlight": "ok",
"threeRapidFeedVisualDistinction": "ok",
"threeNoGcodeSemanticsGeneration": "ok",
"threeRapidPathPoints": "1",
"threeFeedPathPoints": "2",
"threeArcPathPoints": "0",
"threeCurrentSegmentPoints": "1",
"threeCurrentSegmentType": "STRAIGHT_TRAVERSE"
},
"gcode": {
"currentLine": 4,
"activeRowLine": 4,
"activeExecution": "running | F 200.0 | cycle 79/790 | sample 790 | linuxcnc-task-motion-hal-wasm"
},
"values": {
"activeProgram": "test-program.ngc",
"programSource": "operator-file",
"rapidOverride": "100 %",
"feedOverride": "100 %",
"spindleOverride": "100 %",
"halLast": "none",
"taskGates": "jog blocked / home blocked / auto / mdi blocked / pause / resume blocked",
"taskHal": "task / motion / hal / sync",
"fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked",
"gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping",
"gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only",
"nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main",
"session": "profile-switched / - / storage pending / - / -",
"operatorMessage": "task/HAL status tick 14"
}
}
```
### 12-pause-resume-step 我验证暂停、继续和单步
PAUSE/RESUME/STEP 的状态、interpState、taskPaused 和 Task/HAL singleStepping 均已验证。
![我验证暂停、继续和单步](working7-full-functional-evidence/12-pause-resume-step.png)
```json
{
"runState": "paused",
"machineProfile": "xyzac-trt",
"machine": {
"powerOn": true,
"estopActive": false,
"taskState": "on",
"mode": "auto",
"allHomed": true,
"interpState": "paused",
"taskPaused": true,
"mdiCommand": "G0 X0 Y0 Z0"
},
"axisPose": {
"x": 0,
"y": 0,
"z": 1.94521,
"a": 0,
"b": 0,
"c": 0
},
"dro": {
"x": 0,
"y": 0,
"z": 1.94521,
"a": 0,
"b": 0,
"c": 0
},
"canvas": {
"fiveAxisCanvas": "true",
"engine": "three.js r183",
"threeReady": "true",
"threeRevision": "183",
"threePathPoints": "3",
"threeExecutedPathPoints": "1",
"threeSceneObjects": "20",
"threeToolhead": "{\"x\":0,\"y\":0,\"z\":0.002}",
"threeSceneUnits": "m",
"threeLinearUnits": "mm",
"threeLinearUnitScaleToMeters": "0.001",
"threeToolAxis": "{\"x\":0,\"y\":0,\"z\":1}",
"threeTcpPose": "{\"x\":0,\"y\":0,\"z\":1.945,\"a\":0,\"c\":0}",
"threeRtcpState": "off",
"threeSelectedView": "iso",
"threeFrameApi": "web-rtcp-5axis-motion-frame",
"threeRenderer": "webgl",
"threeSceneMode": "program-preview-and-tool-execution",
"threePreviewScope": "machine-reference-and-toolpath",
"threeMachineReferenceModel": "webgl-five-axis-reference",
"threeCameraControls": "orbit-pan-zoom",
"threeProgramPreviewSource": "linuxcnc-interpreter-wasm",
"threeToolExecutionMarker": "true",
"threeTcpMarker": "sphere",
"threeToolAxisMarker": "line",
"threeToolpathPreviewSource": "linuxcnc_interpreter_canonical_motion",
"threeToolExecutionTraceSource": "linuxcnc_tp_samples_or_task_motion_hal_feedback",
"threePathFitBounds": "ok",
"threePathBoundsMeters": "{\"center\":{\"x\":0.005,\"y\":0.005,\"z\":0.002},\"size\":{\"x\":0.01,\"y\":0.01,\"z\":0.006},\"maxSpan\":0.01}",
"threeCurrentSegmentHighlight": "ok",
"threeRapidFeedVisualDistinction": "ok",
"threeNoGcodeSemanticsGeneration": "ok",
"threeRapidPathPoints": "1",
"threeFeedPathPoints": "2",
"threeArcPathPoints": "0",
"threeCurrentSegmentPoints": "1",
"threeCurrentSegmentType": "STRAIGHT_TRAVERSE"
},
"gcode": {
"currentLine": 4,
"activeRowLine": 4,
"activeExecution": "paused | F 200.0 | cycle 98/980 | sample 980 | linuxcnc-task-motion-hal-wasm"
},
"values": {
"activeProgram": "test-program.ngc",
"programSource": "operator-file",
"rapidOverride": "100 %",
"feedOverride": "100 %",
"spindleOverride": "100 %",
"halLast": "none",
"taskGates": "jog blocked / home blocked / auto / mdi blocked / pause / resume",
"taskHal": "task / motion / hal / sync",
"fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked",
"gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping",
"gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only",
"nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main",
"session": "profile-switched / - / storage pending / - / -",
"operatorMessage": "task/HAL stepped one cycle"
}
}
```
### 13-stop-idle 我验证 STOP 停止
STOP 后 interpreter 返回 idle进给速度清零Task/HAL status loop 停止。
![我验证 STOP 停止](working7-full-functional-evidence/13-stop-idle.png)
```json
{
"runState": "stopped",
"machineProfile": "xyzac-trt",
"machine": {
"powerOn": true,
"estopActive": false,
"taskState": "on",
"mode": "auto",
"allHomed": true,
"interpState": "idle",
"taskPaused": false,
"mdiCommand": "G0 X0 Y0 Z0"
},
"axisPose": {
"x": 0,
"y": 0,
"z": 1.94521,
"a": 0,
"b": 0,
"c": 0
},
"dro": {
"x": 0,
"y": 0,
"z": 1.94521,
"a": 0,
"b": 0,
"c": 0
},
"canvas": {
"fiveAxisCanvas": "true",
"engine": "three.js r183",
"threeReady": "true",
"threeRevision": "183",
"threePathPoints": "3",
"threeExecutedPathPoints": "1",
"threeSceneObjects": "20",
"threeToolhead": "{\"x\":0,\"y\":0,\"z\":0.002}",
"threeSceneUnits": "m",
"threeLinearUnits": "mm",
"threeLinearUnitScaleToMeters": "0.001",
"threeToolAxis": "{\"x\":0,\"y\":0,\"z\":1}",
"threeTcpPose": "{\"x\":0,\"y\":0,\"z\":1.945,\"a\":0,\"c\":0}",
"threeRtcpState": "off",
"threeSelectedView": "iso",
"threeFrameApi": "web-rtcp-5axis-motion-frame",
"threeRenderer": "webgl",
"threeSceneMode": "program-preview-and-tool-execution",
"threePreviewScope": "machine-reference-and-toolpath",
"threeMachineReferenceModel": "webgl-five-axis-reference",
"threeCameraControls": "orbit-pan-zoom",
"threeProgramPreviewSource": "linuxcnc-interpreter-wasm",
"threeToolExecutionMarker": "true",
"threeTcpMarker": "sphere",
"threeToolAxisMarker": "line",
"threeToolpathPreviewSource": "linuxcnc_interpreter_canonical_motion",
"threeToolExecutionTraceSource": "linuxcnc_tp_samples_or_task_motion_hal_feedback",
"threePathFitBounds": "ok",
"threePathBoundsMeters": "{\"center\":{\"x\":0.005,\"y\":0.005,\"z\":0.002},\"size\":{\"x\":0.01,\"y\":0.01,\"z\":0.006},\"maxSpan\":0.01}",
"threeCurrentSegmentHighlight": "ok",
"threeRapidFeedVisualDistinction": "ok",
"threeNoGcodeSemanticsGeneration": "ok",
"threeRapidPathPoints": "1",
"threeFeedPathPoints": "2",
"threeArcPathPoints": "0",
"threeCurrentSegmentPoints": "1",
"threeCurrentSegmentType": "STRAIGHT_TRAVERSE"
},
"gcode": {
"currentLine": 4,
"activeRowLine": 4,
"activeExecution": "stopped | F 200.0 | cycle 99/990 | sample 990 | linuxcnc-task-motion-hal-wasm"
},
"values": {
"activeProgram": "test-program.ngc",
"programSource": "operator-file",
"rapidOverride": "100 %",
"feedOverride": "100 %",
"spindleOverride": "100 %",
"halLast": "none",
"taskGates": "jog blocked / home blocked / auto / mdi blocked / pause / resume blocked",
"taskHal": "task / motion / hal / sync",
"fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked",
"gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping",
"gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only",
"nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main",
"session": "profile-switched / - / storage pending / - / -",
"operatorMessage": "task/HAL program stopped"
}
}
```
### 14-manual-jog-axis-values 我验证手动点动和机床轴值
X-/X+/Y-/Y+ 均实际改变对应轴值DRO 和 axisPose 同步。
![我验证手动点动和机床轴值](working7-full-functional-evidence/14-manual-jog-axis-values.png)
```json
{
"runState": "stopped",
"machineProfile": "xyzac-trt",
"machine": {
"powerOn": true,
"estopActive": false,
"taskState": "on",
"mode": "manual",
"allHomed": true,
"interpState": "idle",
"taskPaused": false,
"mdiCommand": "G0 X0 Y0 Z0"
},
"axisPose": {
"x": 0,
"y": 0,
"z": 1.94521,
"a": 0,
"b": 0,
"c": 0
},
"dro": {
"x": 0,
"y": 0,
"z": 1.94521,
"a": 0,
"b": 0,
"c": 0
},
"canvas": {
"fiveAxisCanvas": "true",
"engine": "three.js r183",
"threeReady": "true",
"threeRevision": "183",
"threePathPoints": "3",
"threeExecutedPathPoints": "1",
"threeSceneObjects": "20",
"threeToolhead": "{\"x\":0,\"y\":0,\"z\":0.002}",
"threeSceneUnits": "m",
"threeLinearUnits": "mm",
"threeLinearUnitScaleToMeters": "0.001",
"threeToolAxis": "{\"x\":0,\"y\":0,\"z\":1}",
"threeTcpPose": "{\"x\":0,\"y\":0,\"z\":1.945,\"a\":0,\"c\":0}",
"threeRtcpState": "off",
"threeSelectedView": "iso",
"threeFrameApi": "web-rtcp-5axis-motion-frame",
"threeRenderer": "webgl",
"threeSceneMode": "program-preview-and-tool-execution",
"threePreviewScope": "machine-reference-and-toolpath",
"threeMachineReferenceModel": "webgl-five-axis-reference",
"threeCameraControls": "orbit-pan-zoom",
"threeProgramPreviewSource": "linuxcnc-interpreter-wasm",
"threeToolExecutionMarker": "true",
"threeTcpMarker": "sphere",
"threeToolAxisMarker": "line",
"threeToolpathPreviewSource": "linuxcnc_interpreter_canonical_motion",
"threeToolExecutionTraceSource": "linuxcnc_tp_samples_or_task_motion_hal_feedback",
"threePathFitBounds": "ok",
"threePathBoundsMeters": "{\"center\":{\"x\":0.005,\"y\":0.005,\"z\":0.002},\"size\":{\"x\":0.01,\"y\":0.01,\"z\":0.006},\"maxSpan\":0.01}",
"threeCurrentSegmentHighlight": "ok",
"threeRapidFeedVisualDistinction": "ok",
"threeNoGcodeSemanticsGeneration": "ok",
"threeRapidPathPoints": "1",
"threeFeedPathPoints": "2",
"threeArcPathPoints": "0",
"threeCurrentSegmentPoints": "1",
"threeCurrentSegmentType": "STRAIGHT_TRAVERSE"
},
"gcode": {
"currentLine": 4,
"activeRowLine": 4,
"activeExecution": "stopped | F 200.0 | cycle 104/1040 | sample 1040 | linuxcnc-task-motion-hal-wasm"
},
"values": {
"activeProgram": "test-program.ngc",
"programSource": "operator-file",
"rapidOverride": "100 %",
"feedOverride": "100 %",
"spindleOverride": "100 %",
"halLast": "none",
"taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked",
"taskHal": "task / motion / hal / sync",
"fullBoundary": "canonical-interpreter-boundary / remap pending / full blocked",
"gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping",
"gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only",
"nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main",
"session": "profile-switched / - / storage pending / - / -",
"operatorMessage": "task/HAL jog Y +1"
}
}
```
### 15-mdi-execution 我验证 MDI 执行过程
MDI 输入、表单提交、历史按钮和底部 MDI_RUN 都执行到 store/runtime并写入历史。
![我验证 MDI 执行过程](working7-full-functional-evidence/15-mdi-execution.png)
```json
{
"runState": "stopped",
"machineProfile": "xyzac-trt",
"machine": {
"powerOn": true,
"estopActive": false,
"taskState": "on",
"mode": "mdi",
"allHomed": true,
"interpState": "idle",
"taskPaused": false,
"mdiCommand": "G90 X12.5 Y-4 Z1.25 F900"
},
"axisPose": {
"x": 12.5,
"y": -4,
"z": 1.25,
"a": 0,
"b": 0,
"c": 0
},
"dro": {
"x": 12.5,
"y": -4,
"z": 1.25,
"a": 0,
"b": 0,
"c": 0
},
"canvas": {
"fiveAxisCanvas": "true",
"engine": "three.js r183",
"threeReady": "true",
"threeRevision": "183",
"threePathPoints": "1",
"threeExecutedPathPoints": "1",
"threeSceneObjects": "20",
"threeToolhead": "{\"x\":0.013,\"y\":-0.004,\"z\":0.001}",
"threeSceneUnits": "m",
"threeLinearUnits": "mm",
"threeLinearUnitScaleToMeters": "0.001",
"threeToolAxis": "{\"x\":0,\"y\":0,\"z\":1}",
"threeTcpPose": "{\"x\":12.5,\"y\":-4,\"z\":1.25,\"a\":0,\"c\":0}",
"threeRtcpState": "off",
"threeSelectedView": "iso",
"threeFrameApi": "web-rtcp-5axis-motion-frame",
"threeRenderer": "webgl",
"threeSceneMode": "program-preview-and-tool-execution",
"threePreviewScope": "machine-reference-and-toolpath",
"threeMachineReferenceModel": "webgl-five-axis-reference",
"threeCameraControls": "orbit-pan-zoom",
"threeProgramPreviewSource": "operator-mdi",
"threeToolExecutionMarker": "true",
"threeTcpMarker": "sphere",
"threeToolAxisMarker": "line",
"threeToolpathPreviewSource": "fixture_line_playback_not_promoted",
"threeToolExecutionTraceSource": "linuxcnc_tp_samples_or_task_motion_hal_feedback",
"threePathFitBounds": "ok",
"threePathBoundsMeters": "{\"center\":{\"x\":0.013,\"y\":-0.004,\"z\":0.001},\"size\":{\"x\":0,\"y\":0,\"z\":0},\"maxSpan\":0}",
"threeCurrentSegmentHighlight": "ok",
"threeRapidFeedVisualDistinction": "ok",
"threeNoGcodeSemanticsGeneration": "ok",
"threeRapidPathPoints": "0",
"threeFeedPathPoints": "1",
"threeArcPathPoints": "0",
"threeCurrentSegmentPoints": "1",
"threeCurrentSegmentType": "STRAIGHT_FEED"
},
"gcode": {
"currentLine": 4,
"activeRowLine": 0,
"activeExecution": ""
},
"values": {
"activeProgram": "MDI",
"programSource": "operator-mdi",
"rapidOverride": "100 %",
"feedOverride": "100 %",
"spindleOverride": "100 %",
"halLast": "none",
"taskGates": "jog blocked / home blocked / auto blocked / mdi / pause / resume blocked",
"taskHal": "task / motion / hal / sync",
"fullBoundary": "blocked / remap pending / full blocked",
"gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping",
"gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only",
"nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main",
"session": "profile-switched / - / storage pending / - / -",
"operatorMessage": "task/HAL MDI G90 X12.5 Y-4 Z1.25 F900"
}
}
```
### 16-overrides-hal 我验证倍率和 HAL 输入
Rapid/Feed/Spindle 倍率和 Limits/Block/M1 均通过按钮实际改变状态,并在诊断中显示 last HAL effect。
![我验证倍率和 HAL 输入](working7-full-functional-evidence/16-overrides-hal.png)
```json
{
"runState": "stopped",
"machineProfile": "xyzac-trt",
"machine": {
"powerOn": true,
"estopActive": false,
"taskState": "on",
"mode": "manual",
"allHomed": true,
"interpState": "idle",
"taskPaused": false,
"mdiCommand": "G90 X12.5 Y-4 Z1.25 F900"
},
"axisPose": {
"x": 0,
"y": 0,
"z": 1.94521,
"a": 0,
"b": 0,
"c": 0
},
"dro": {
"x": 0,
"y": 0,
"z": 1.94521,
"a": 0,
"b": 0,
"c": 0
},
"canvas": {
"fiveAxisCanvas": "true",
"engine": "three.js r183",
"threeReady": "true",
"threeRevision": "183",
"threePathPoints": "1",
"threeExecutedPathPoints": "1",
"threeSceneObjects": "20",
"threeToolhead": "{\"x\":0,\"y\":0,\"z\":0.002}",
"threeSceneUnits": "m",
"threeLinearUnits": "mm",
"threeLinearUnitScaleToMeters": "0.001",
"threeToolAxis": "{\"x\":0,\"y\":0,\"z\":1}",
"threeTcpPose": "{\"x\":0,\"y\":0,\"z\":1.945,\"a\":0,\"c\":0}",
"threeRtcpState": "off",
"threeSelectedView": "iso",
"threeFrameApi": "web-rtcp-5axis-motion-frame",
"threeRenderer": "webgl",
"threeSceneMode": "program-preview-and-tool-execution",
"threePreviewScope": "machine-reference-and-toolpath",
"threeMachineReferenceModel": "webgl-five-axis-reference",
"threeCameraControls": "orbit-pan-zoom",
"threeProgramPreviewSource": "operator-mdi",
"threeToolExecutionMarker": "true",
"threeTcpMarker": "sphere",
"threeToolAxisMarker": "line",
"threeToolpathPreviewSource": "fixture_line_playback_not_promoted",
"threeToolExecutionTraceSource": "linuxcnc_tp_samples_or_task_motion_hal_feedback",
"threePathFitBounds": "ok",
"threePathBoundsMeters": "{\"center\":{\"x\":0.013,\"y\":-0.004,\"z\":0.001},\"size\":{\"x\":0,\"y\":0,\"z\":0},\"maxSpan\":0}",
"threeCurrentSegmentHighlight": "ok",
"threeRapidFeedVisualDistinction": "ok",
"threeNoGcodeSemanticsGeneration": "ok",
"threeRapidPathPoints": "0",
"threeFeedPathPoints": "1",
"threeArcPathPoints": "0",
"threeCurrentSegmentPoints": "1",
"threeCurrentSegmentType": "STRAIGHT_FEED"
},
"gcode": {
"currentLine": 4,
"activeRowLine": 0,
"activeExecution": ""
},
"values": {
"activeProgram": "MDI",
"programSource": "operator-mdi",
"rapidOverride": "100 %",
"feedOverride": "100 %",
"spindleOverride": "100 %",
"halLast": "web-control optional stop set from Web control",
"taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked",
"taskHal": "task / motion / hal / sync",
"fullBoundary": "blocked / remap pending / full blocked",
"gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping",
"gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only",
"nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main",
"session": "profile-switched / - / storage pending / - / -",
"operatorMessage": "optional stop on"
}
}
```
### 17-spindle-coolant 我验证主轴和冷却
FWD/REV/STOP、Flood、Mist 均受 power gate 控制并实际更新状态。
![我验证主轴和冷却](working7-full-functional-evidence/17-spindle-coolant.png)
```json
{
"runState": "stopped",
"machineProfile": "xyzac-trt",
"machine": {
"powerOn": true,
"estopActive": false,
"taskState": "on",
"mode": "manual",
"allHomed": true,
"interpState": "idle",
"taskPaused": false,
"mdiCommand": "G90 X12.5 Y-4 Z1.25 F900"
},
"axisPose": {
"x": 0,
"y": 0,
"z": 1.94521,
"a": 0,
"b": 0,
"c": 0
},
"dro": {
"x": 0,
"y": 0,
"z": 1.94521,
"a": 0,
"b": 0,
"c": 0
},
"canvas": {
"fiveAxisCanvas": "true",
"engine": "three.js r183",
"threeReady": "true",
"threeRevision": "183",
"threePathPoints": "1",
"threeExecutedPathPoints": "1",
"threeSceneObjects": "20",
"threeToolhead": "{\"x\":0,\"y\":0,\"z\":0.002}",
"threeSceneUnits": "m",
"threeLinearUnits": "mm",
"threeLinearUnitScaleToMeters": "0.001",
"threeToolAxis": "{\"x\":0,\"y\":0,\"z\":1}",
"threeTcpPose": "{\"x\":0,\"y\":0,\"z\":1.945,\"a\":0,\"c\":0}",
"threeRtcpState": "off",
"threeSelectedView": "iso",
"threeFrameApi": "web-rtcp-5axis-motion-frame",
"threeRenderer": "webgl",
"threeSceneMode": "program-preview-and-tool-execution",
"threePreviewScope": "machine-reference-and-toolpath",
"threeMachineReferenceModel": "webgl-five-axis-reference",
"threeCameraControls": "orbit-pan-zoom",
"threeProgramPreviewSource": "operator-mdi",
"threeToolExecutionMarker": "true",
"threeTcpMarker": "sphere",
"threeToolAxisMarker": "line",
"threeToolpathPreviewSource": "fixture_line_playback_not_promoted",
"threeToolExecutionTraceSource": "linuxcnc_tp_samples_or_task_motion_hal_feedback",
"threePathFitBounds": "ok",
"threePathBoundsMeters": "{\"center\":{\"x\":0.013,\"y\":-0.004,\"z\":0.001},\"size\":{\"x\":0,\"y\":0,\"z\":0},\"maxSpan\":0}",
"threeCurrentSegmentHighlight": "ok",
"threeRapidFeedVisualDistinction": "ok",
"threeNoGcodeSemanticsGeneration": "ok",
"threeRapidPathPoints": "0",
"threeFeedPathPoints": "1",
"threeArcPathPoints": "0",
"threeCurrentSegmentPoints": "1",
"threeCurrentSegmentType": "STRAIGHT_FEED"
},
"gcode": {
"currentLine": 4,
"activeRowLine": 0,
"activeExecution": ""
},
"values": {
"activeProgram": "MDI",
"programSource": "operator-mdi",
"rapidOverride": "100 %",
"feedOverride": "100 %",
"spindleOverride": "100 %",
"halLast": "web-control optional stop set from Web control",
"taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked",
"taskHal": "task / motion / hal / sync",
"fullBoundary": "blocked / remap pending / full blocked",
"gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping",
"gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only",
"nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main",
"session": "profile-switched / - / storage pending / - / -",
"operatorMessage": "mist coolant toggled"
}
}
```
### 18-session-fullscreen 我验证会话和 Full 按钮
Save/Restore 通过 OPFS 或 fallback 存储恢复 profile/程序/UI 状态Full 切换 preview.fullscreen。
![我验证会话和 Full 按钮](working7-full-functional-evidence/18-session-fullscreen.png)
```json
{
"runState": "stopped",
"machineProfile": "xyzac-trt",
"machine": {
"powerOn": true,
"estopActive": false,
"taskState": "on",
"mode": "manual",
"allHomed": true,
"interpState": "idle",
"taskPaused": false,
"mdiCommand": "G90 X12.5 Y-4 Z1.25 F900"
},
"axisPose": {
"x": 0,
"y": 0,
"z": 1.94521,
"a": 0,
"b": 0,
"c": 0
},
"dro": {
"x": 0,
"y": 0,
"z": 1.94521,
"a": 0,
"b": 0,
"c": 0
},
"canvas": {
"fiveAxisCanvas": "true",
"engine": "three.js r183",
"threeReady": "true",
"threeRevision": "183",
"threePathPoints": "1",
"threeExecutedPathPoints": "1",
"threeSceneObjects": "20",
"threeToolhead": "{\"x\":0,\"y\":0,\"z\":0.002}",
"threeSceneUnits": "m",
"threeLinearUnits": "mm",
"threeLinearUnitScaleToMeters": "0.001",
"threeToolAxis": "{\"x\":0,\"y\":0,\"z\":1}",
"threeTcpPose": "{\"x\":0,\"y\":0,\"z\":1.945,\"a\":0,\"c\":0}",
"threeRtcpState": "off",
"threeSelectedView": "iso",
"threeFrameApi": "web-rtcp-5axis-motion-frame",
"threeRenderer": "webgl",
"threeSceneMode": "program-preview-and-tool-execution",
"threePreviewScope": "machine-reference-and-toolpath",
"threeMachineReferenceModel": "webgl-five-axis-reference",
"threeCameraControls": "orbit-pan-zoom",
"threeProgramPreviewSource": "operator-mdi",
"threeToolExecutionMarker": "true",
"threeTcpMarker": "sphere",
"threeToolAxisMarker": "line",
"threeToolpathPreviewSource": "fixture_line_playback_not_promoted",
"threeToolExecutionTraceSource": "linuxcnc_tp_samples_or_task_motion_hal_feedback",
"threePathFitBounds": "ok",
"threePathBoundsMeters": "{\"center\":{\"x\":0.013,\"y\":-0.004,\"z\":0.001},\"size\":{\"x\":0,\"y\":0,\"z\":0},\"maxSpan\":0}",
"threeCurrentSegmentHighlight": "ok",
"threeRapidFeedVisualDistinction": "ok",
"threeNoGcodeSemanticsGeneration": "ok",
"threeRapidPathPoints": "0",
"threeFeedPathPoints": "1",
"threeArcPathPoints": "0",
"threeCurrentSegmentPoints": "1",
"threeCurrentSegmentType": "STRAIGHT_FEED"
},
"gcode": {
"currentLine": 4,
"activeRowLine": 0,
"activeExecution": ""
},
"values": {
"activeProgram": "MDI",
"programSource": "operator-mdi",
"rapidOverride": "100 %",
"feedOverride": "100 %",
"spindleOverride": "100 %",
"halLast": "web-control optional stop set from Web control",
"taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked",
"taskHal": "task / motion / hal / sync",
"fullBoundary": "blocked / remap pending / full blocked",
"gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping",
"gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only",
"nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active main",
"session": "restored / opfs / opfs available / opfs_available / web-rtcp-5axis-sim-plan/sessions/gmoccapy-web-session/web-rtcp-5axis-session.json",
"operatorMessage": "fullscreen preview on"
}
}
```
### 19-diagnostics-audit 我验证诊断和 gmoccapy 边界
Task policy、INI、Task/HAL、Full boundary、gmoccapy comm/HAL/native page 诊断均可读HAL pin 模型可实际更新页面状态。
![我验证诊断和 gmoccapy 边界](working7-full-functional-evidence/19-diagnostics-audit.png)
```json
{
"runState": "stopped",
"machineProfile": "xyzac-trt",
"machine": {
"powerOn": true,
"estopActive": false,
"taskState": "on",
"mode": "manual",
"allHomed": true,
"interpState": "idle",
"taskPaused": false,
"mdiCommand": "G90 X12.5 Y-4 Z1.25 F900"
},
"axisPose": {
"x": 0,
"y": 0,
"z": 1.94521,
"a": 0,
"b": 0,
"c": 0
},
"dro": {
"x": 0,
"y": 0,
"z": 1.94521,
"a": 0,
"b": 0,
"c": 0
},
"canvas": {
"fiveAxisCanvas": "true",
"engine": "three.js r183",
"threeReady": "true",
"threeRevision": "183",
"threePathPoints": "1",
"threeExecutedPathPoints": "1",
"threeSceneObjects": "20",
"threeToolhead": "{\"x\":0,\"y\":0,\"z\":0.002}",
"threeSceneUnits": "m",
"threeLinearUnits": "mm",
"threeLinearUnitScaleToMeters": "0.001",
"threeToolAxis": "{\"x\":0,\"y\":0,\"z\":1}",
"threeTcpPose": "{\"x\":0,\"y\":0,\"z\":1.945,\"a\":0,\"c\":0}",
"threeRtcpState": "off",
"threeSelectedView": "iso",
"threeFrameApi": "web-rtcp-5axis-motion-frame",
"threeRenderer": "webgl",
"threeSceneMode": "program-preview-and-tool-execution",
"threePreviewScope": "machine-reference-and-toolpath",
"threeMachineReferenceModel": "webgl-five-axis-reference",
"threeCameraControls": "orbit-pan-zoom",
"threeProgramPreviewSource": "operator-mdi",
"threeToolExecutionMarker": "true",
"threeTcpMarker": "sphere",
"threeToolAxisMarker": "line",
"threeToolpathPreviewSource": "fixture_line_playback_not_promoted",
"threeToolExecutionTraceSource": "linuxcnc_tp_samples_or_task_motion_hal_feedback",
"threePathFitBounds": "ok",
"threePathBoundsMeters": "{\"center\":{\"x\":0.013,\"y\":-0.004,\"z\":0.001},\"size\":{\"x\":0,\"y\":0,\"z\":0},\"maxSpan\":0}",
"threeCurrentSegmentHighlight": "ok",
"threeRapidFeedVisualDistinction": "ok",
"threeNoGcodeSemanticsGeneration": "ok",
"threeRapidPathPoints": "0",
"threeFeedPathPoints": "1",
"threeArcPathPoints": "0",
"threeCurrentSegmentPoints": "1",
"threeCurrentSegmentType": "STRAIGHT_FEED"
},
"gcode": {
"currentLine": 4,
"activeRowLine": 0,
"activeExecution": ""
},
"values": {
"activeProgram": "MDI",
"programSource": "operator-mdi",
"rapidOverride": "100 %",
"feedOverride": "100 %",
"spindleOverride": "100 %",
"halLast": "web-control IconFileSelection1 / _BB_LOAD_FILE partial",
"taskGates": "jog / home / auto blocked / mdi blocked / pause blocked / resume blocked",
"taskHal": "task / motion / hal / sync",
"fullBoundary": "blocked / remap pending / full blocked",
"gmoccapyComm": "native_gmoccapy_nml_hal_reference_web_store_runtime_mapping",
"gmoccapyHal": "gmoccapy_hal_pin_postgui_reference_web_diagnostic_only",
"nativePageMatrix": "12 native pages / 1 implemented / 4 partial / 5 diagnostic-only / 2 native-only / hard-buttons diagnostic-only / active file-load",
"session": "restored / opfs / opfs available / opfs_available / web-rtcp-5axis-sim-plan/sessions/gmoccapy-web-session/web-rtcp-5axis-session.json",
"operatorMessage": "LinuxCNC machine files staged 18"
}
}
```