fix(vd960Loop): 灵敏度收敛 4 级制 + 运行中配置立即生效 (协议 V1.08)
根因: 设置不同灵敏度感应高度无区别 1. unpack_pkg_set_mcjq_param 未同步 loop_SensLevel → 改灵敏度需重启才生效 2. 9级制映射 sensitvity & 0x03 折叠 (默认7→3, 3→3, 8→0) 3. (测试陷阱) 金属块过大信号饱和, 建议小金属块测临界高度 修复: - 提取 sens_level_from_config() 映射函数, 4级制 0~3 一一对应 (9级制后改) - unpack_pkg_set_mcjq_param 补 loop_SensLevel 同步 (运行中立即生效) - para_store_init 上电路径改用同一函数 - 协议 V1.08: Sensitivity 0~9级 → 4级制 0~3 (默认2) - tests/test_sens_mapping.c gcc 隔离单测 PASS (0~3无折叠/兼容旧默认7→3)
This commit is contained in:
@@ -4,6 +4,43 @@
|
||||
|
||||
---
|
||||
|
||||
## 2026-08-25 — 灵敏度 4 级制修复(协议 V1.08)
|
||||
|
||||
### 背景
|
||||
|
||||
现场用金属块测感应高度,设置不同灵敏度档位**感应高度无区别**。排查发现三个根因:
|
||||
|
||||
| # | 根因 | 位置 |
|
||||
|---|------|------|
|
||||
| 1 | **运行中配置命令不同步检测单元**:`unpack_pkg_set_mcjq_param()` 只更新 `g_loop_cng_info.loop_cng[].sensitvity` + 写 flash,**没有同步 `g_loop_states.loop_unit[].loop_SensLevel`** → 改灵敏度不重启不生效(对比上电路径 `para_store_init()` 有同步) | main.c:576 |
|
||||
| 2 | **9级制映射 `& 0x03` 折叠**:协议 0~9 级(默认 7),`sensitvity & 0x03` 只取低 2 位 → 7→3、**3→3(从默认 7 改到 3 无效)**、8→0(反向折叠) | storage.c:184 |
|
||||
| 3 | 测试陷阱:金属块过大/过近信号饱和,4 档阈值都在饱和区 → 感应高度差异不可见(建议小金属块/测临界距离) | 测试方法 |
|
||||
|
||||
### 修复(方案 B:4 级制)
|
||||
|
||||
- 提取映射函数 `sens_level_from_config()`(storage.c/h):**4级制 0~3 一一对应**,9 级制后续实现时只改这一处
|
||||
- `unpack_pkg_set_mcjq_param()` 补 `loop_SensLevel` 同步 → 运行中配置立即生效
|
||||
- `para_store_init()` 上电路径改用同一函数(消除双处映射漂移)
|
||||
- 协议 V1.08:Sensitivity 语义 0~9 级 → **4 级制 0~3**(默认 2)
|
||||
- 新增 `tests/test_sens_mapping.c` gcc 隔离单测(mock flash.h/FreeRTOS.h/task.h + FLP GPIO 宏):验证 0~3 无折叠、兼容旧默认 7→3、SensTable 单调
|
||||
|
||||
### 改动
|
||||
|
||||
| 文件 | 内容 |
|
||||
|------|------|
|
||||
| `src/storage.c` | 新增 `sens_level_from_config()`;`para_store_init` 改用 |
|
||||
| `src/main.c` | `unpack_pkg_set_mcjq_param` 补 loop_SensLevel 同步(运行中生效) |
|
||||
| `inc/storage.h` | sensitvity 注释 4 级制;函数声明 |
|
||||
| `tests/test_sens_mapping.c` | 新增映射单测(gcc PASS) |
|
||||
| `tests/mock/` | flash.h/FreeRTOS.h/task.h 隔离测试 mock |
|
||||
| `docs/DLD960Loop_串口通信协议.md` | V1.08:灵敏度 4 级制 |
|
||||
|
||||
### 验证
|
||||
|
||||
gcc 单测 PASS:0→0, 1→1, 2→2, 3→3 无折叠;`7&0x0F → 3` 兼容旧默认。实机待金属块复测(建议小金属块测临界感应高度)。
|
||||
|
||||
---
|
||||
|
||||
## 2026-08-25 — variation ↔ ΔL/ΔL-L 物理对应分析与工具
|
||||
|
||||
### 背景
|
||||
|
||||
Reference in New Issue
Block a user