项目

一般

简介

任务支持 #2542 » LO-TTA-03-交付清单.md

孙乃宇, 2026-09-19 17:07

 

LO-TTA-03 接入整合 —— 改动与交付清单

2026-09-19 · MKS DLC32 + MKS SERVO42C(纯电机)通过 fluidncdll 接入上位机平台。
本文回答:这轮改了什么、成果物在哪、以及三个具体配置问题的答案。


一、一句话结论

四层里只动了中间两层,没有新增设备模块:

层 动了没有 说明
设备侧(DLC32 固件 + config.yaml) ✅ 给了一份针对 LO-TTA-03 的 config.yaml(待上传) 现成的 FluidNC 固件,不用改固件
驱动层(fluidncdll.dll) ❌ 未改动,直接复用 平台侧设备模块
厂商层(FluidNC.dll) ✅ 重编了新版本 D:\workspace\FluidNC_API
平台配置(LO-TTA-03.json) ✅ 新增(不新增 DLL 模块) 型号即一套指令/字段配置
下位机驱动器(42C) ✅ Mode 改 CR_OPEN 排障结论,非代码改动

二、回答你的三个问题

✅ 1. FluidNC.dll 需要新版本 —— 是的

文件 大小 md5 时间
FluidNC_API\bin\x64\Release\FluidNC.dll 202752 9f9575a483b7a6c941301fd9b1c315f9 09-19 11:48
Industrial_ui\device\FluidNC.dll 202752 9f9575a4…(已同步) 09-19 11:49
Industrial_ui\device\fluidncdll.dll 118272 5b10aee3776cb67fef520830257ff6cc 09-18 11:39 ← 本轮未动

改了什么(FluidNC_API,共 4 文件 / +154 −95):

文件 改动
src/FluidNC_Impl.h ★ QueryFunc(速度线程自己发 ? 查规划器空位)→ 换成 StateFunc(只读平台维护的状态缓存);删掉独立的 monitor() 线程
src/VelocityController.cpp 重写 loop()(179 行):新增 isBusyState() / isFatalState(),定速点动改为发一条长 $J + 实时字节 0x85(jog cancel)停止
src/FluidNC_Impl.cpp 状态缓存的接线(48 行)
FluidNCDll.vcxproj +5 行

为什么要改(根因,写进了头文件注释):速度线程自己发 ? 就必须 purgeRead() 清 RX 缓冲,
会和平台的周期性状态轮询抢串口 → 平台查询超时 → 平台判定设备断开、在运动中途把设备关掉。
⇒ 所以改成"只读平台缓存,速度线程绝不碰串口读"。

✅ 2. config.yaml 需要针对设备单独配置 —— 是的

  • 权威只在文件里:串口 $ 写入($axes/X/...=、$Name=)只改 RAM,
    $ESP444=RESTART 后全部回退到 config.yaml。唯一持久路径 = 改文件 + 重启。
  • 本机成品:D:\workspace\JiaheFluidNC\configs\LO-TTA-03\config.yaml(37 行 / 714 B)
    另有同内容副本 config_LO-TTA-03.yaml。
  • 相对设备当前文件只差 2 行:
行 设备现值 新值
name LO-TTA-01 S1.0 LO-TTA-03
axes.x.steps_per_mm 6400 3200
  • 相对厂商下发模板 /uploaded(name: 单轴位移台,85 行 / 1387 B)差得较多,
    新配置是"精简 + 按本机改"的版本:去掉整套 homing / 限位 / soft_limits: true,
    steps_per_mm 1600→3200、max_rate 900→60、accel 200→3、
    max_travel 10→1000、pulse_us 6→4、dir_delay_us 10→0,
    并补上 start.must_home: false 等段。

  • ⚠️ 这份 config.yaml 还没上传到设备。上传路径:
    连热点 FluidNC → http://192.168.10.123/ → 顶部 FluidNC 标签 → 工具栏 Manage local files
    → 上传到 / → Restart FluidNC。
    ★ 上传文件名必须就叫 config.yaml(固件用本地文件名当设备端路径,否则只是新增文件、覆盖不到)。

✅ 3. LO-TTA-03.json 与"原来的位移台配置"的区别 —— 总共只有 10 处

以 LO-TTA-01.json(上一代那份)为基准,实测差异 10 处:

# 位置 旧值 新值 分量
1 queryJson.SPQuery lobll75 fluidnc ★★★ 最关键:换了驱动
2–8 checkJson[*].model ×7 LO-ALN100-2 LO-TTA-03 型号名(模板继承值改成本机)
9 attribute[1].value(对应开环步数) 4000 3200 机械参数
10 attribute[6].value(细分[步进电机]) "20" "16" 机械参数

★ 第 1 条是本质区别:SPQuery 是"用哪个设备驱动"的键,
和 DLL 目录名一一对应(lobll75↔Lobll75dll、cam↔camdll、weightcell↔WeightCellDll、
fluidnc↔fluidncdll)。
⇒ LO-TTA-01 走的是 Lobll75dll;LO-TTA-03 改走 fluidncdll(+ FluidNC.dll)
——这就是"这次没有新增 DLL 模块,复用 fluidncdll"的物证。

★ 第 9/10 条与设备侧 steps_per_mm 一致性:
steps_per_mm = 200 × MStep ÷ 导程(1mm) = 200 × 16 = 3200 ✅ 三处(json / config.yaml / 42C 的 MStep=16)自洽。


三、交付物清单

设备侧

文件 说明
JiaheFluidNC\configs\LO-TTA-03\config.yaml ★ 待上传到设备的配置(37 行/714B)
JiaheFluidNC\configs\config_LO-TTA-03.yaml 同内容副本(方便识别)
JiaheFluidNC\configs\config_LO-TTA-03.notes.md 改法 / WiFi 替换步骤 / 持久性更正 / 回滚
JiaheFluidNC\configs\SERVO42C-点动不转排查.md ★ 本次排障的完整记录(含 42C 参数快照与因果链)

平台侧(D:\workspace\Industrial_ui)

文件 说明
device\FluidNC.dll ★ 新版厂商层 DLL(md5 9f9575a4…)
src\json\LO-TTA-03.json ★ 新型号配置(含 .bak_before_mech 备份)
gen_tta03.py 由 LO-TTA-01.json 生成 LO-TTA-03.json(带机械参数正则修正 + 还原比对)
register_tta03.py 把型号登记进登录用户目录的 info.json(幂等、自动备份)
用户目录 …\account\<userId>\LO-TTA-03.json 已登记(md5 f4261b13… 与源文件一致)

厂商层源码(D:\workspace\FluidNC_API)

文件 说明
src\FluidNC_Impl.h / .cpp、src\VelocityController.cpp、FluidNCDll.vcxproj 本轮改动(+154 −95)
build_fluidnc.ps1 新增构建脚本

工具脚本(D:\workspace\jiahe-agg\fluidncdll\)

脚本 用途
probe_ports.py 枚举串口 + 逐个探测(判设备是否在线)
diag_motor.py 抓 $I/$CMD/$GD/运动配置段
diag_jog_me.py 点动验 MPos + 试 $MD/$ME
test_enable.py 4 步现场判定(判使能 → clk 增量 → 判 Stp/Dir 接反 → 看角度/err)
axis_params.py 轴参数在线读写 + 卡尺标定
dump_config.py / probe_device_fs.py / probe_setting_paths.py / extract_webui_entry.py 设备侧配置取证与 WebUI 入口挖掘
device_config_*.yaml 设备配置存档(dump / 文件 / 厂商模板)

技能库与清理

项 说明
~\.workbuddy\skills\jiahe-add-device-module\ 本轮多次更新:SKILL.md、references\mks_servo42c_protocol.md(新增 §8.1~§8.7)、references\mks_dlc32_fluidnc_grbl.md(§10 加第 5 条、§11 重写)
jiahe-agg\.workbuddy\_removed_skills_20260919\ 陈旧的项目级技能副本(9 文件/104K)已移出(非删除,可原样恢复),skills\ 目录已消失

四、⚠️ 待办与隐患(按优先级)

# 事项 说明
1 上传 config.yaml 到设备并重启 否则 steps_per_mm=3200 / name=LO-TTA-03 只在 RAM,一重启就回退到 6400 / LO-TTA-01 S1.0
2 设备端 42C 参数做断电重启验证 确认 Mode=CR_OPEN 掉电保存(避免下次上电又变回 vFOC 复现故障)
3 Industrial_ui\dist_electron\win-unpacked\device\ 与 needCopyDependence\device\ 里还是旧版 FluidNC.dll 那两份是 790016 B / 08-04 / md5 6942f1d8… 的旧版!若打包发布走这两个目录,新版 DLL 不会被带上 ⇒ 需要同步替换
4 FluidNC_API 改动不要提交(你已明确) 注意别把 build_log.txt 带进提交(它在 git status 里是未跟踪文件)
5 deviceMap.json 里没有 fluidncdll 这一项 该表像是"启用哪些设备 DLL"的开关(WeightCellDll: true 等)。平台日志显示 fluidncdll.dll 能正常加载,但这张表是否需要在新增设备模块时同步,值得确认
6 前端需重启应用才能在型号下拉里看到 LO-TTA-03 下拉数据源是登录用户目录 info.json 的 configData[];服务端同步资源时可能覆盖,届时重跑 register_tta03.py
7 长期正解:让服务端把 LO-TTA-03 下发进 configData 本地登记只是权宜
8 LO-TTA-01.json / LO-TTA-02.json 仍是旧占位值 未表态是否一起修
9 LO-TTA-03.json 声明 2 轴但 GetAxisNum() 硬编码返回 1 第 2 轴目前是死行,未定
10 开环(CR_OPEN)的固有取舍 无丢步保护;Ma 是恒定电流,发热只由 Ma 决定 ⇒ 建议跟一次温度,烫就把 Ma 降到 800mA
(2-2/7)