Files
cnc_wams/备忘/备忘G代码执行过程.txt
2026-07-03 08:49:13 -04:00

452 lines
13 KiB
Plaintext
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.
完整地记录web数控系统仿真程序的G代码完整的执行过程每50毫秒截屏一帧
只要真实的G代码执行过程不要预览路径。
applyProgramPlaybackUiPatch
capture-full-gcode-process-frames.mjs
/home/mes123456/cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan/tools/capture-full-gcode-process-frames.mjs
3 帧验证还在跑,可能在首次等待 WebGL/截图。由于这是活跃进程,我会继续轮询它而不是另起同类任务。
加载等待条件仍卡在 programUiExecution原因是浏览器里解释器 wasm 报了已知的 resizable ArrayBuffer 问题,导致 UI live 执行对象没有自动初始化;但真实 `programAxisPreviewPath.samples=130
Reconnecting /5
3 帧验证还在跑,可能在首次等待 WebGL/截图。由于这是活跃进程,我会继续轮询它而不是另起同类任务。
加载等待条件仍卡在 programUiExecution原因是浏览器里解释器 wasm 报了已知的 resizable ArrayBuffer 问题,导致 UI live 执行对象没有自动初始化;但真实 `programAxisPreviewPath.samples=130
Reconnecting /5
页面的真实样本已加载,但等待条件要求 programUiExecution 已生成;当前路径在解释器兼容错误后保留了 programAxisPreviewPath还没有生成 UI live 对象。我要放宽加载等待,然后在截图循环内用 STEP 生成每帧 live 状态;首帧元数据从样本 0 直接取。
Read a file and searched codeRead axis-shell.js
Searched for programUiExecution|data-live|gcodeExecution in axis-shell.js
为了把第 0 个样本也做成真实 live 帧,我会利用应用 getState() 返回同一状态对象的事实,在采集脚本里把当前样本索引临时设为 目标索引-1再触发一次 STEP让应用自己的 applyProgramPlaybackUiPatch 正常生成该样本的 UI、DRO、刀具和过程面板。这样每张图仍由应用原生渲染路径输出。
页面的真实样本已加载,但等待条件要求 programUiExecution 已生成;当前路径在解释器兼容错误后保留了 programAxisPreviewPath还没有生成 UI live 对象。我要放宽加载等待,然后在截图循环内用 STEP 生成每帧 live 状态;首帧元数据从样本 0 直接取。
Read a file and searched codeRead axis-shell.js
Searched for programUiExecution|data-live|gcodeExecution in axis-shell.js
为了把第 0 个样本也做成真实 live 帧,我会利用应用 getState() 返回同一状态对象的事实,在采集脚本里把当前样本索引临时设为 目标索引-1再触发一次 STEP让应用自己的 applyProgramPlaybackUiPatch 正常生成该样本的 UI、DRO、刀具和过程面板。这样每张图仍由应用原生渲染路径输出。
上一轮日志显示成功点是:临时 HTTP 服务 + Playwright并在页面里用真实 programAxisPreviewPath.samples 样本流推进状态。我要复用这个稳定入口,差异是这次不只抓关键帧,而是按 50ms 样本逐帧输出完整目录。
针对项目“/home/mes123456/cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan”
完整地记录web数控系统仿真程序的G代码完整的执行过程每50毫秒截屏一帧
这里的关键约束已经明确:项目内真实展开执行样本是 128 步samplePeriodMs=50因此完整逐帧证据应是 128 张左右,而不是上一轮按秒抽样的 68 张。现在我会看 RUN_FRAME/执行推进逻辑,决定是让应用自然运行截图,还是精确跳到每个样本后截图。
RUN_FRAME 每次会跳 5 个样本,不能满足 50ms 逐帧STEP 才是每次 1 个样本,但如果 task/HAL runtime 挂载成功,它会走 task/HAL 命令而不是本地样本流。为了让截图确定覆盖每个 50ms 样本,我准备写一个只用于采集的 Playwright 脚本,在页面内精确逐样本推进并截图。
我确认上一轮 manifest 里的真实采样总数是 sampleCount=1300每帧 50ms总时长约 65 秒executionStepCount=128 是展开后的 G 代码语义步骤数,不是截图帧数。这次我会按真实采样流输出 1300 张图片,并写 manifest 标明两者区别。
Read 3 files and searched codeRead xyzbc_trt_browser_smoke.html
Searched for taskHalRuntime|TASK_HAL_RUNTIME_FAILED|RUN_READY|programExecutionSampleIndex|disable|loaded: false in app
Read store.js
Read manifest.json
我会把采集脚本放到项目的 tools/ 下,作为可复用证据工具;它会启动本地静态服务、等待默认程序加载、关闭截图路径中的 task/HAL 依赖、执行 Run Ready然后每次 STEP 推进一个 50ms 样本并截图。
这个工具,可以复用!!!
我确认上一轮 manifest 里的真实采样总数是 sampleCount=1300每帧 50ms总时长约 65 秒executionStepCount=128 是展开后的 G 代码语义步骤数,不是截图帧数。这次我会按真实采样流输出 1300 张图片,并写 manifest 标明两者区别。
我看到目标项目已经有 working/screenshots/.../manifest.json说明之前可能做过类似浏览器取证。接下来我会定位现有测试脚本和应用入口尽量复用已有的启动与截图方式。
完整地记录linuxcnc的源程序和web数控系统仿真程序的G代码完整的执行过程
针对“/home/mes123456/cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan/working“
1、按G代码的实际真实运行刀具运行的速度要真实
2、完整的刀具切削过程的刀具路径每个轴的加工过程中的实时位置主轴转速、切削速度、进给量、换刀、冷却等都要记录到json文件中。
3、数据采样周期暂时定50毫秒。linuxcnc的源程序和web数控系统仿真程序的G代码完整的执行过程采样周期要同步json数据要完全一致
linuxcnc的源程序和web数控系统仿真程序的G代码完整的执行过程执行每行的详细结果包括
1、按G代码的实际真实运行刀具运行的速度要真实
2、完整的刀具切削过程的刀具路径每个轴的加工过程中的实时位置主轴转速、切削速度、进给量、换刀、冷却等都要记录到json文件中。
3、数据采样周期暂时定50毫秒。linuxcnc的源程序和web数控系统仿真程序的G代码完整的执行过程采样周期要同步json数据要完全一致
根据这个要求,完善“/home/mes123456/cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan/working”中的文档完善后开始执行。
原来20毫秒
要求:
1、参考“/home/mes123456/cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan/working”中的文件刀具预览路径已经对标“xyzbc-trt”的源程序。
2、接下来对标刀具执行的路径对标刀具执行的实际轴值对标每行G代码的执行过程。可能需要通过json记录执行原linuxcnc程序与web数控系统仿真的数据对比实现。
3、完善“/home/mes123456/cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan/working”中的文件实现G代码执行过程完全对标linuxcnc源程序“xyzbc-trt”刀具执行
完整地记录linuxcnc的源程序和web数控系统仿真程序的G代码完整的执行过程
1、执行的每行
2、执行每行的详细结果
3、执行每行的详细结果写入josn
4、web数控系统仿真G代码程序执行完全对标linuxcnc的源程序的G代码程序执行
本轮把当前采样周期从旧的 20ms 统一调整为你要求的 50ms并重新生成 LinuxCNC native、Web、compare 三份 evidence JSON。当前结果
显式 staging 后仍未等到解释器 motion 结果。我会再抓一次显式 staging 后的状态;如果只是 interpreter 没有完成,我会改成使用已生成的 AXIS 展开刀路预览运行,并按秒截图整个可视化过程,而不再阻塞在这个自动解释等待。
参考上一轮成功截屏的过程,针对项目“/home/mes123456/cnc_wams/web-rtcp-5axis-xyzbc-trt-sim-plan”
完整地记录web数控系统仿真程序的G代码完整的执行过程每50毫秒截屏一帧图片保存到一个目录中
4:29 AM
Working for 11m 55s
我会先查看目标项目的启动方式和上一轮截屏脚本/记录,确认是通过现有脚本复用还是补一个 Playwright 录制脚本,然后启动页面执行并按 50ms 保存帧。
Searched code and listed files, ran a commandRan pwd && rg --files -g '!*node_modules*' -g '!*.png' -g '!*.jpg' -g '!*.jpeg' -g '!*.gif' | head -200
Searched for *screenshot* in cnc_wams
Listed files in web-rtcp-5axis-xyzbc-trt-sim-plan
Listed files in web-rtcp-5axis-xyzbc-trt-sim-plan
我找到了目标项目已有的 working/screenshots 和证据采集脚本,说明这轮大概率可以沿用 Playwright/Vite 的路径。接下来我会读项目脚本和页面交互代码,找出“开始执行 G 代码”的可靠触发点。
Read 2 files and listed files, ran a commandRead package.json
Read collect-web-xyzbc-trt-evidence.mjs
Listed files in app
Ran tail -120 /home/mes123456/cnc_wams/gptlog-process/gpdlog.md
上一轮日志显示成功点是:临时 HTTP 服务 + Playwright并在页面里用真实 programAxisPreviewPath.samples 样本流推进状态。我要复用这个稳定入口,差异是这次不只抓关键帧,而是按 50ms 样本逐帧输出完整目录。
Read 2 files, searched code, and listed filesSearched for programUiExecution|gcodeStepIndex|programAxisPreviewPath|RUN_READY|LOAD_LINUXCNC_GCODE_SOURCE|STEP_GCODE|RUN in app
Read axis-shell.js
Read main.js
Listed files in screenshots
这里的关键约束已经明确:项目内真实展开执行样本是 128 步samplePeriodMs=50因此完整逐帧证据应是 128 张左右,而不是上一轮按秒抽样的 68 张。现在我会看 RUN_FRAME/执行推进逻辑,决定是让应用自然运行截图,还是精确跳到每个样本后截图。
Read a file and searched codeRead store.js
Searched for *capture*.mjs in cnc_wams
RUN_FRAME 每次会跳 5 个样本,不能满足 50ms 逐帧STEP 才是每次 1 个样本,但如果 task/HAL runtime 挂载成功,它会走 task/HAL 命令而不是本地样本流。为了让截图确定覆盖每个 50ms 样本,我准备写一个只用于采集的 Playwright 脚本,在页面内精确逐样本推进并截图。
Read 3 files and searched codeRead xyzbc_trt_browser_smoke.html
Searched for taskHalRuntime|TASK_HAL_RUNTIME_FAILED|RUN_READY|programExecutionSampleIndex|disable|loaded: false in app
Read store.js
Read manifest.json
我确认上一轮 manifest 里的真实采样总数是 sampleCount=1300每帧 50ms总时长约 65 秒executionStepCount=128 是展开后的 G 代码语义步骤数,不是截图帧数。这次我会按真实采样流输出 1300 张图片,并写 manifest 标明两者区别。
为了不让 1300 帧截图依赖墙钟时间,我会用“逐样本推进后截图”的方式:每次把页面更新到下一个 50ms 样本,再保存一张 PNG。这样截图目录是确定性的不会因为机器负载漏帧。
Read 2 files and searched codeRead five-axis-scene.js
Searched for function setState|const setState|getState\(|notify|listeners|subscribe in store.js
Read store.js
我会把采集脚本放到项目的 tools/ 下,作为可复用证据工具;它会启动本地静态服务、等待默认程序加载、关闭截图路径中的 task/HAL 依赖、执行 Run Ready然后每次 STEP 推进一个 50ms 样本并截图。
Read 4 files and searched code, ran a commandRead store.js
Read verify_xyzbc_trt_browser.sh
Ran du -sh working/screenshots || true && df -h .
Read linuxcnc-task-policy.js
Searched for function runAxisCommand|case \"run\"|data-action=\"step\" in axis-shell.js
Read axis-shell.js
我会先跑一版小规模探测,验证通过 TASK_HAL_RUNTIME_FAILED 转入样本流后,连续 STEP 是否严格按 1 个样本递增;确认后再放开 1300 帧输出,避免生成一大批无效图片。
Read a fileRead store.js
在实现上我不会改应用业务逻辑,只新增一个采集工具脚本和运行产物目录。脚本会把首帧样本 0 也截下来,随后 STEP 到样本 1..1299,所以图片编号会和 sampleIndex 对齐。
Read a fileRead axis.css
下一步我会新增 tools/capture-full-gcode-process-frames.mjs。它会自带临时 HTTP 服务和 Chromium 发现逻辑,不要求用户手动先开服务器。
Ran ls app/node_modules/playwright && node -e "import('./app/node_modules/playwright/index.mjs').then(m=>console.log(Object.keys(m).slice(0,8)))"
我准备写文件了;脚本会默认生成 working/screenshots/web-simulation-gcode-full-50ms-<timestamp>/,包含 frame-0000-t000000ms.png 这种逐帧图片和 manifest.json。