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:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user