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 |