Files
linuxcncWebWASM/docs/linuxcnc-web-wasm-simulation-gap-plan-v2.md

4.7 KiB
Raw Permalink Blame History

LinuxCNC Web/WASM 仿真功能补全计划

版本:3.1 范围:只实现 LinuxCNC 仿真功能,不处理其他项目。 接续入口:nextTask1.md

目标

在 Dedicated Worker 中实现可重复的 LinuxCNC 仿真行为,并用 WASM/native/Worker 测试验证:

  • INI、HAL、工具表、参数、程序、Python、VCP、ClassicLadder 资源加载。
  • rs274 G/M/O 解释、modal、参数、子程序、循环、宏、canned cycle 和错误定位。
  • canonical queue、TP、直线/圆弧/同步运动、速度/加速度/jerk、blend、exact-stop。
  • Task mode、MDI、run/pause/resume/step/abort/restart、jog、home、override、limits。
  • trivkins、gantry/CoreXY、5/6-axis、TRT、机器人、Delta/Tripod/Hexapod/Pentapod、switch/user kins。
  • HAL pin/signal/parameter/thread/function、静态 .comp、ClassicLadder、PLC、采样和背压。
  • spindle、encoder、probe、limit、home、tool、coolant、door、interlock、estop 数字孪生。
  • Python linuxcnc/hal/INI/tool/parameter、remap、filter、VCP callback 和异常隔离。
  • snapshot/event/trace、checkpoint、journal、Worker restart、OPFS、offline、migration、rollback。
  • editor、MDI、状态/HAL/IO/Python/PLC/alarm 面板和 pose/toolpath/stock Canvas。

不变量

  1. Worker 是 authoritative state 唯一写者;UI 只消费 snapshot/event。
  2. sim_step(cycles) 是唯一改变仿真结果的入口;不使用墙钟或随机数。
  3. seq、operation_id、checkpoint、event、snapshot 和 state hash 全部确定性。
  4. 非法路径、缺失资源、非有限值、容量、未知能力和 schema 错误 fail closed。
  5. 真实硬件、设备文件、宿主进程、网络和动态库不进入仿真实现。

实施阶段

S1 解释器与运动主链

S1-01 rs274 完整 word/modal/system parameter;S1-02 canonical/TP 圆弧、同步运动、accel/jerk 和暂停;S1-03 motion/kinematics feedback、home/limit、override。

S2 HAL、PLC、设备

S2-01 .clp ClassicLadder parser/runtime;S2-02 HAL component runtime batch;S2-03 encoder/coolant/door/interlock/IO ack;S2-04 配置入口资源修复。

S3 Python、恢复、浏览器

S3-01 Python API compatibility;S3-02 remap/filter/VCP;S3-03 Worker crash/OPFS/offline/recovery;S3-04 browser simulation compatibility/performance。

S4 仿真回归

S4-01 full simulation regression;S4-02 1x/fast/step/recover endpoint replay parity。

任务队列

ID 任务 依赖 主要输出
S1-01A implement rs274 parameter space and modal expansion 无 interpreter native/WASM/Worker tests
S1-01B implement rs274 G/M words, canned cycles, coordinates and compensation S1-01A interpreter native/WASM/Worker tests
S1-02A implement TP arcs, sync FIFO and accel/jerk bounded profile S1-01B TP/motion tests
S1-02B implement pause/resume and canonical multi-segment expansion S1-02A TP/motion tests
S1-03 implement motion/kinematics feedback, home/limit and override S1-02B motion fault matrix
S2-01 implement .clp ClassicLadder parser/runtime S1-03 PLC runtime/tests
S2-02 implement HAL component runtime batch S1-03 component runtime/tests
S2-03 implement encoder/coolant/door/interlock/IO ack parity S1-03 device/IO tests
S2-04 implement blocked sim entrypoint resource batch S2-02 startup/runtime tests
S3-01 implement Python API compatibility S1-01 Python bridge/session tests
S3-02 implement remap/filter/VCP callback path S3-01 callback tests
S3-03 implement Worker/OPFS/offline recovery S2-03/S3-01 recovery tests
S3-04 implement browser simulation compatibility/performance S3-03 app/Canvas/Worker tests
S4-01 complete simulation regression S2-04/S3-04 full simulation report
S4-02 complete endpoint replay parity S4-01 determinism/recovery report

当前任务

当前直接执行 S1-01。它读取 linuxcnc/src/emc/rs274ngc、linuxcnc/unit_tests/interp、wasm-core/src/sim_interpreter.c 和 web/worker/program-runner.mjs,输出代码、native/WASM/Worker 测试和确定性状态报告。

验收

每个任务必须有正常、边界、错误、容量、暂停/恢复和非有限样本;必须运行对应 native/WASM/Worker 测试、scripts/build-wasm.sh、CTest 和全部 Worker/App 测试。任务报告必须包含输入、输出、测试和 self-hash。

停止条件

  • 需要修改已冻结 ABI、protocol 或 schema。
  • 结果依赖墙钟、随机数、真实设备、宿主路径、动态库或 mock Worker。
  • checkpoint/event/hash 不可验证,或恢复会重复副作用。
  • 仿真差异未定位到具体 tick、字段、单位或错误位置。