docs(vd960Loop): 9级制灵敏度表设计 (0.01%~5.00% ΔL/L, 等比公比2.198)
- variation-analysis.md §9.3.1: 9级 sens_in/sens_out 表 (0=最低, 8=最高)
- sens_in {1638,745,339,154,70,32,15,7,3} 端点精确 0.01%/5.00%
- sens_out 滞回渐变 50%→65%→90%/100% (高档防不释放)
- 4级→9级迁移映射 0→3,1→4,2→5,3→7
- 工程警示: SENS=8 贴噪声底, SENS=0 只认重型车
- tools/variation_calc.py: --sens-table 9 支持 9级显示 (4级默认兼容)
- devlog 2026-08-25 条目追加 9级制设计小节
代码落地 (set_factory_param/sens_level_from_config) 待 9级立项
This commit is contained in:
@@ -39,6 +39,36 @@
|
|||||||
|
|
||||||
gcc 单测 PASS:0→0, 1→1, 2→2, 3→3 无折叠;`7&0x0F → 3` 兼容旧默认。实机待金属块复测(建议小金属块测临界感应高度)。
|
gcc 单测 PASS:0→0, 1→1, 2→2, 3→3 无折叠;`7&0x0F → 3` 兼容旧默认。实机待金属块复测(建议小金属块测临界感应高度)。
|
||||||
|
|
||||||
|
### 9 级制灵敏度表设计(2026-08-25)
|
||||||
|
|
||||||
|
用户给行业典型范围:**0.01% ~ 5.00% ΔL/L**(跨度 546 倍)。9 级等比公比 2.198,方向 0=最低、8=最高(与 4 级一致)。
|
||||||
|
|
||||||
|
| SENS | sens_in | ΔL/L 进入 | sens_out | ΔL/L 离开 | out/in |
|
||||||
|
|------|---------|-----------|----------|-----------|--------|
|
||||||
|
| 0 | 1638 | 5.00% | 819 | 2.50% | 50% |
|
||||||
|
| 1 | 745 | 2.27% | 373 | 1.14% | 50% |
|
||||||
|
| 2 | 339 | 1.03% | 170 | 0.52% | 50% |
|
||||||
|
| 3 | 154 | 0.47% | 100 | 0.31% | 65% |
|
||||||
|
| 4 | 70 | 0.21% | 46 | 0.14% | 65% |
|
||||||
|
| 5 | 32 | 0.098% | 21 | 0.064% | 65% |
|
||||||
|
| 6 | 15 | 0.046% | 14 | 0.043% | 90% |
|
||||||
|
| 7 | 7 | 0.021% | 6 | 0.018% | 90% |
|
||||||
|
| 8 | 3 | 0.01% | 3 | 0.01% | 100% |
|
||||||
|
|
||||||
|
设计要点:
|
||||||
|
- 滞回渐变 50%→65%→90%/100%:高档 out 低于噪声底会不释放(对齐 DLD154Pro 最高档 86% 经验)
|
||||||
|
- 4 级→9 级迁移(就近):0→3、1→4、2→5、3→7(端点不再保留,需现场复测)
|
||||||
|
- 工程警示:SENS=8 dlt≈6 counts 贴噪声底(仅低噪声环境);SENS=0 dlt≈3275(只认重型车)
|
||||||
|
- 溢出检查:Origin×1638 = 214M < 2³² ✓
|
||||||
|
|
||||||
|
落地:
|
||||||
|
| 文件 | 内容 |
|
||||||
|
|------|------|
|
||||||
|
| `docs/variation-analysis.md` | §9.3.1 9 级制表(设计稿) |
|
||||||
|
| `tools/variation_calc.py` | `--sens-table 9` 支持 9 级显示(4 级默认兼容) |
|
||||||
|
|
||||||
|
验证:工具 9 级端点 0.0092%/4.9988% ≈ 0.01%/5.00% ✓。代码落地(set_factory_param/sens_level_from_config)待 9 级立项。
|
||||||
|
|
||||||
### 补充根因(同日):INIT_VDs 硬编码覆盖配置 + flash 坏数据
|
### 补充根因(同日):INIT_VDs 硬编码覆盖配置 + flash 坏数据
|
||||||
|
|
||||||
现场串口日志(`Read_Cng_Store`)显示:配置 4 通道 SENS=3/2/1/0,但检测时 `Car_In` 全部打印 `sens_in:36`(SENS=2 表值)——4 通道检测全用 SENS=2。定位两个根因:
|
现场串口日志(`Read_Cng_Store`)显示:配置 4 通道 SENS=3/2/1/0,但检测时 `Car_In` 全部打印 `sens_in:36`(SENS=2 表值)——4 通道检测全用 SENS=2。定位两个根因:
|
||||||
|
|||||||
@@ -274,6 +274,44 @@ variation = Origin − CAPVD = Origin·[1 − √(1 + ΔL/L₀)]
|
|||||||
|
|
||||||
> 交叉验证:DLD154Pro 技术文档 sens_in {108,54,28,14} 标注 ΔL/L = 0.330%/0.165%/0.085%/0.043%,恰为 SensTable/65536 的 2 倍——产品线已统一使用 `ΔL/L ≈ 2×SensTable/65536` 口径。
|
> 交叉验证:DLD154Pro 技术文档 sens_in {108,54,28,14} 标注 ΔL/L = 0.330%/0.165%/0.085%/0.043%,恰为 SensTable/65536 的 2 倍——产品线已统一使用 `ΔL/L ≈ 2×SensTable/65536` 口径。
|
||||||
|
|
||||||
|
### 9.3.1 9 级制灵敏度表(设计稿 2026-08-25)
|
||||||
|
|
||||||
|
行业典型范围:**0.01% ~ 5.00% ΔL/L**(跨度 546 倍,9 级等比公比 2.198)。方向:SENS **0=最低灵敏度、8=最高灵敏度**(值越大越灵敏,与 4 级一致)。
|
||||||
|
|
||||||
|
**sens_in(车来触发)**:
|
||||||
|
|
||||||
|
| SENS | sens_in | Δf/f | **ΔL/L** | 典型用途 |
|
||||||
|
|------|---------|------|----------|----------|
|
||||||
|
| 8(最高) | 3 | 0.005% | **0.01%** | 摩托车/低噪声极限档 |
|
||||||
|
| 7 | 7 | 0.011% | 0.021% | 摩托车 |
|
||||||
|
| 6 | 15 | 0.023% | 0.046% | 小型车/电动车 |
|
||||||
|
| 5 | 32 | 0.049% | 0.098% | 轿车 |
|
||||||
|
| 4 | 70 | 0.107% | 0.214% | 轿车/SUV |
|
||||||
|
| 3 | 154 | 0.235% | 0.470% | 常规 |
|
||||||
|
| 2 | 339 | 0.517% | 1.034% | 大车优先 |
|
||||||
|
| 1 | 745 | 1.137% | 2.273% | 大车/货车 |
|
||||||
|
| 0(最低) | 1638 | 2.500% | **5.00%** | 只认重型车/强干扰环境 |
|
||||||
|
|
||||||
|
**sens_out(车走释放,滞回渐变 50%→65%→90%/100%)**:
|
||||||
|
|
||||||
|
| SENS | sens_out | out/in | ΔL/L 离开 |
|
||||||
|
|------|----------|--------|-----------|
|
||||||
|
| 0 | 819 | 50% | 2.50% |
|
||||||
|
| 1 | 373 | 50% | 1.14% |
|
||||||
|
| 2 | 170 | 50% | 0.52% |
|
||||||
|
| 3 | 100 | 65% | 0.31% |
|
||||||
|
| 4 | 46 | 65% | 0.14% |
|
||||||
|
| 5 | 21 | 65% | 0.064% |
|
||||||
|
| 6 | 14 | 90% | 0.043% |
|
||||||
|
| 7 | 6 | 90% | 0.018% |
|
||||||
|
| 8 | 3 | 100% | 0.01% |
|
||||||
|
|
||||||
|
- **滞回渐变原因**:高档 sens_in 很小,out 若按 50% 会低于噪声底 → 车走不释放。6/7/8 档收窄到 90%/100%(对齐 DLD154Pro 最高档 out/in=86% 经验)
|
||||||
|
- **4 级→9 级迁移**(就近):4级 SENS 0→9级3、1→4、2→5、3→7(4 级端点不再保留,迁移后阈值小幅变化,需现场复测)
|
||||||
|
- **工程警示**:SENS=8(0.01%)dlt≈6 counts 贴着噪声底,仅限低噪声环境;SENS=0(5%)dlt≈3275,只认重型车
|
||||||
|
- **乘法溢出检查**:Origin(131072)×1638 = 214M < 2³² ✓
|
||||||
|
- 代码落地:`set_factory_param` total=9 填上表;`sens_level_from_config` 改 `sensitvity & 0x0F`(0~8 直接索引);协议 sensitvity 0~8
|
||||||
|
|
||||||
### 9.4 电容档位无关性(33/43/66/76nF)
|
### 9.4 电容档位无关性(33/43/66/76nF)
|
||||||
|
|
||||||
四档电容只改绝对工作频率 f₀ = 1/(2π√(L₀C)):
|
四档电容只改绝对工作频率 f₀ = 1/(2π√(L₀C)):
|
||||||
|
|||||||
@@ -35,7 +35,13 @@ import sys
|
|||||||
CAP_OPTIONS = (33, 43, 66, 76) # 线圈内部电容四档 (nF)
|
CAP_OPTIONS = (33, 43, 66, 76) # 线圈内部电容四档 (nF)
|
||||||
ORIGIN_DEFAULT = 131072 # MEASUREMENT_BASE = 2^17
|
ORIGIN_DEFAULT = 131072 # MEASUREMENT_BASE = 2^17
|
||||||
SENS_TABLE = {0: (216, 108), 1: (108, 72), 2: (36, 18), 3: (10, 9)}
|
SENS_TABLE = {0: (216, 108), 1: (108, 72), 2: (36, 18), 3: (10, 9)}
|
||||||
|
SENS_TABLE_9 = { # 9级制设计稿 (0=最低, 8=最高, 0.01%~5.00% ΔL/L)
|
||||||
|
0: (1638, 819), 1: (745, 373), 2: (339, 170), 3: (154, 100), 4: (70, 46),
|
||||||
|
5: (32, 21), 6: (15, 14), 7: (7, 6), 8: (3, 3),
|
||||||
|
}
|
||||||
SENS_NAMES = {0: "0(低)", 1: "1(中)", 2: "2(高)", 3: "3(最高)"}
|
SENS_NAMES = {0: "0(低)", 1: "1(中)", 2: "2(高)", 3: "3(最高)"}
|
||||||
|
SENS_NAMES_9 = {0: "0(最低)", 1: "1", 2: "2", 3: "3", 4: "4",
|
||||||
|
5: "5", 6: "6", 7: "7", 8: "8(最高)"}
|
||||||
|
|
||||||
|
|
||||||
# ---------------------------------------------------------------- 核心计算
|
# ---------------------------------------------------------------- 核心计算
|
||||||
@@ -91,14 +97,17 @@ def parse_var_3byte(hex_str):
|
|||||||
return v
|
return v
|
||||||
|
|
||||||
|
|
||||||
def fmt_sens_table():
|
def fmt_sens_table(sens_count=4):
|
||||||
lines = ["灵敏度档位 → ΔL/L 触发阈值 (vd960Loop SensTable, 一阶 ΔL/L≈−2×vr):"]
|
"""打印灵敏度档位对照表 (4级或9级)"""
|
||||||
lines.append(f"{'SENS':<8}{'进入表':<8}{'离开表':<8}{'Δf/f进入':<12}{'ΔL/L进入':<12}{'ΔL/L离开'}")
|
table = SENS_TABLE if sens_count == 4 else SENS_TABLE_9
|
||||||
for sens in (0, 1, 2, 3):
|
names = SENS_NAMES if sens_count == 4 else SENS_NAMES_9
|
||||||
sin, sout = SENS_TABLE[sens]
|
lines = [f"灵敏度档位 → ΔL/L 触发阈值 ({sens_count}级制, 一阶 ΔL/L≈−2×vr):"]
|
||||||
|
lines.append(f"{'SENS':<10}{'进入表':<8}{'离开表':<8}{'Δf/f进入':<12}{'ΔL/L进入':<12}{'ΔL/L离开'}")
|
||||||
|
for sens in sorted(table):
|
||||||
|
sin, sout = table[sens]
|
||||||
vr_in = sin / 65536.0
|
vr_in = sin / 65536.0
|
||||||
vr_out = sout / 65536.0
|
vr_out = sout / 65536.0
|
||||||
lines.append(f"{SENS_NAMES[sens]:<8}{sin:<8}{sout:<8}"
|
lines.append(f"{names[sens]:<10}{sin:<8}{sout:<8}"
|
||||||
f"{vr_in * 100:>7.4f}%{'':<4}{-2 * vr_in * 100:>8.4f}%{'':<4}{-2 * vr_out * 100:>8.4f}%")
|
f"{vr_in * 100:>7.4f}%{'':<4}{-2 * vr_in * 100:>8.4f}%{'':<4}{-2 * vr_out * 100:>8.4f}%")
|
||||||
return "\n".join(lines)
|
return "\n".join(lines)
|
||||||
|
|
||||||
@@ -186,12 +195,13 @@ def main():
|
|||||||
help="反推模式: 给定 |ΔL/L|%% → 所需 variation")
|
help="反推模式: 给定 |ΔL/L|%% → 所需 variation")
|
||||||
p.add_argument("--parse-var", metavar="HEX6",
|
p.add_argument("--parse-var", metavar="HEX6",
|
||||||
help="解析 V1.05 协议 3B LE 有符号补码 (如 F6FFFF = −10)")
|
help="解析 V1.05 协议 3B LE 有符号补码 (如 F6FFFF = −10)")
|
||||||
p.add_argument("--sens-table", action="store_true", help="打印灵敏度档位对照表")
|
p.add_argument("--sens-table", nargs="?", const="4", type=int, choices=[4, 9],
|
||||||
|
help="打印灵敏度档位对照表 (4=4级制默认, 9=9级制设计稿)")
|
||||||
p.add_argument("--interactive", action="store_true", help="交互模式")
|
p.add_argument("--interactive", action="store_true", help="交互模式")
|
||||||
args = p.parse_args()
|
args = p.parse_args()
|
||||||
|
|
||||||
if args.sens_table:
|
if args.sens_table:
|
||||||
print(fmt_sens_table())
|
print(fmt_sens_table(args.sens_table))
|
||||||
return
|
return
|
||||||
|
|
||||||
if args.parse_var:
|
if args.parse_var:
|
||||||
|
|||||||
Reference in New Issue
Block a user