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:
wangfq
2026-08-25 15:02:15 +08:00
parent 6483795079
commit e9a19b40d3
3 changed files with 86 additions and 8 deletions
+18 -8
View File
@@ -35,7 +35,13 @@ import sys
CAP_OPTIONS = (33, 43, 66, 76) # 线圈内部电容四档 (nF)
ORIGIN_DEFAULT = 131072 # MEASUREMENT_BASE = 2^17
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_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
def fmt_sens_table():
lines = ["灵敏度档位 → ΔL/L 触发阈值 (vd960Loop SensTable, 一阶 ΔL/L≈−2×vr):"]
lines.append(f"{'SENS':<8}{'进入表':<8}{'离开表':<8}{'Δf/f进入':<12}{'ΔL/L进入':<12}{'ΔL/L离开'}")
for sens in (0, 1, 2, 3):
sin, sout = SENS_TABLE[sens]
def fmt_sens_table(sens_count=4):
"""打印灵敏度档位对照表 (4级或9级)"""
table = SENS_TABLE if sens_count == 4 else SENS_TABLE_9
names = SENS_NAMES if sens_count == 4 else SENS_NAMES_9
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_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}%")
return "\n".join(lines)
@@ -186,12 +195,13 @@ def main():
help="反推模式: 给定 |ΔL/L|%% → 所需 variation")
p.add_argument("--parse-var", metavar="HEX6",
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="交互模式")
args = p.parse_args()
if args.sens_table:
print(fmt_sens_table())
print(fmt_sens_table(args.sens_table))
return
if args.parse_var: