diff --git a/README.md b/README.md
index 2cea831..709306d 100644
--- a/README.md
+++ b/README.md
@@ -55,7 +55,10 @@ vd-analysis/
├── img/ # 图示(PNG 预览 + SVG 矢量)
└── tools/ # 分析辅助脚本
├── window_calc.py # 测量窗量化计算器(窗=⌊BASE/Xn₀⌋·Xn₁;六型号内置参数)
- ├── plot_timing_chain.py # 端到端时序图生成(纯 stdlib 手写 SVG,曲线按公式真算)
+ ├── plot_timing_chain.py # 端到端时序图(三段横轴:一个窗/检测到输出/基线;纯 stdlib SVG)
+ ├── plot_response_compare.py # PD132T↔PD136HA 响应对比(时域阶梯 + 延迟扫描,标出窗主导/τ 主导)
+ ├── plot_family_overview.py # 六型号总览(窗长/τ/检测延迟 + 归一化延迟表)
+ ├── plot_sens_alignment.py # PD132T↔PD136HA 档位对齐图(现场照着贴)
└── plot_response_compare.py # PD132T↔PD136HA 响应对比图(含"窗主导/τ 主导"分界)
```
diff --git a/docs/cross-model-comparison.md b/docs/cross-model-comparison.md
index 17225d1..debdd59 100644
--- a/docs/cross-model-comparison.md
+++ b/docs/cross-model-comparison.md
@@ -58,6 +58,14 @@
> ⚠ **同族内档位同样不可照搬**:PD132T ↔ PD136HA 一一映射偏差 **−46%~+69%**(两端档差异最大:PD132T 最钝档 0.458% 无对应档;其最高灵敏档 0.032% 亦比 PD136HA 最高档钝 1/3)。跨代必须按 Δf/f 换算后现场复测,见 [pd132t-vs-pd136ha-comparison.md](pd132t-vs-pd136ha-comparison.md) §5.4。
+## 六型号总览图(窗长 / τ / 检测延迟,2026-09-11 新增)
+
+
+
+(矢量版 `docs/img/family-overview.svg`;生成脚本 `tools/plot_family_overview.py`,型号参数内置、改数即重出。图中延迟为「判据越线」口径,不含输出级 50ms 节拍与进入确认——确认时间见面板脚注)
+
+**说明**:面板 A 的条形与面板 B 的曲线全部按本文口径计算(窗长 = `⌊BASE/Xn⌋·Xn/f_cap` 标称值;τ = 节拍×256/α;延迟由 `CAPVD_n = Δf/f·[1−(1−α/256)^n]` 反解 `n`)。**归一化(按各自档0 判据的 1.1×/2×/10× 倍数)后,六型号的差异只剩「窗长 × τ」两件事**:@10×(强信号)全部 = 1 窗 ⇒ 10.9 / 21.9 / 27.3 / 8.2 / 8.7 / 10.0 ms;@1.1×(近阈值)= 7~9 窗 ⇒ PD136HA 196.7ms 与 PD132L 191.2ms 最慢、M1H 57.3ms 与 DLD154Pro 61.2ms 最快。
+
## 测频路线(周期累积法为统一范式)
纳入对比表的型号(M1H / PD132L / PD132T / PD136HA / DLD154V4B / DLD154Pro)**全部采用周期累积法**:
diff --git a/docs/img/family-overview.png b/docs/img/family-overview.png
new file mode 100644
index 0000000..07131da
Binary files /dev/null and b/docs/img/family-overview.png differ
diff --git a/docs/img/family-overview.svg b/docs/img/family-overview.svg
new file mode 100644
index 0000000..0cba772
--- /dev/null
+++ b/docs/img/family-overview.svg
@@ -0,0 +1,210 @@
+
\ No newline at end of file
diff --git a/docs/img/sens-alignment-pd132t-pd136ha.png b/docs/img/sens-alignment-pd132t-pd136ha.png
new file mode 100644
index 0000000..1b491e0
Binary files /dev/null and b/docs/img/sens-alignment-pd132t-pd136ha.png differ
diff --git a/docs/img/sens-alignment-pd132t-pd136ha.svg b/docs/img/sens-alignment-pd132t-pd136ha.svg
new file mode 100644
index 0000000..221ffc1
--- /dev/null
+++ b/docs/img/sens-alignment-pd132t-pd136ha.svg
@@ -0,0 +1,128 @@
+
\ No newline at end of file
diff --git a/docs/measurement-window-quantization.md b/docs/measurement-window-quantization.md
index a93f032..212a7a8 100644
--- a/docs/measurement-window-quantization.md
+++ b/docs/measurement-window-quantization.md
@@ -253,6 +253,8 @@ loop1_CAPVD = loop1_CapSum; loop1_Origin = loop1_CAPVD; loop1_INI_LOOP = 0;
## 10. 响应速度的跨型号对照(图)
+> 六型号完整总览图(窗长 / τ / 检测延迟 + 归一化延迟表):`docs/cross-model-comparison.md` 的「六型号总览图」节(`docs/img/family-overview.png`);PD132T↔PD136HA 细对比见 `docs/pd132t-vs-pd136ha-comparison.md` §5.5。
+
同一判据口径下 PD132T(窗 10.880 ms / α79)与 PD136HA(窗 21.760 ms / α64)的响应对比,含"窗主导 vs τ 主导"分界:

diff --git a/docs/pd132t-vs-pd136ha-comparison.md b/docs/pd132t-vs-pd136ha-comparison.md
index ad285fe..c5c0dda 100644
--- a/docs/pd132t-vs-pd136ha-comparison.md
+++ b/docs/pd132t-vs-pd136ha-comparison.md
@@ -217,6 +217,10 @@ loop1_dlt_ORG = (Origin * SensTable1[SensLevel]) >> 16; // 离开表
### 5.4 ⭐ 跨代档位换算表(照搬档位号 = 错)
+
+
+(矢量版 `docs/img/sens-alignment-pd132t-pd136ha.svg`;生成脚本 `tools/plot_sens_alignment.py`。图中深色段 = 离开阈值、浅色段 = 进入阈值,二者之差即回差带;右侧「同档偏差」= 同档位号一对一映射的 `(H−T)/T`)
+
**PD132T → PD136HA(按 Δf/f 找最近档)**
| PD132T 档 | 进入 Δf/f | 最近的 PD136HA 档 | 进入偏差 | 离开偏差 | 可用性 |
@@ -340,6 +344,7 @@ IIR → 基线(无车时更新/有车冻结) → 进入/离开判据 → VD_FLAG
- [ ] **⑤ PD132L 捕获沿**:§2.3 表中 PD132L 的"单沿"是**推断**(由窗口比 0.8× = 时钟比推得),未读其源码的捕获配置 ⇒ 需补证。
- [ ] **⑥ 端点档复测**:PD132T 档 0(0.4578%)与 PD136HA 档 0(0.2472%)在两代之间**无对应档**;现场若停在这两个档位,换型必须专项复测。
- [x] ~~**⑦ 旧文件勘误**~~ ✅ **已落地**(同日提交):`docs/hardware-loop-frontend-pd132t-vs-v4b.md` §8 与 `docs/pd136ha-to-dld154v4b-delivery-alignment.md` §2.3 中「两型号线圈频段差 2×」已改为「**同一频段 ≈23.4~118kHz**」(见 §2.3)。
+- [ ] **⑧ 弱信号复测(§5.5,2026-09-11 新增)**:用弱信号车(目标 Δf/f ≈ 0.10%)验证预测 —— PD132T 档1 应 **≈76 ms** 检出,**PD136HA 档1 应「检不到」**(其档1 判据 0.1236% 比 PD132T 的 0.0916% 钝 35%)。若现场确证,换型文档须写明:**PD136HA 需上调一档(档2 = 0.0824%)才能覆盖同类弱信号车**;同时用强/弱两种车各测 3 次,记录"判据越线 → 继电器动作"的实测时间,与 §5.5 的 `(n+1)·窗长 + ≤50 ms` 预测对照。
---
diff --git a/tools/plot_family_overview.py b/tools/plot_family_overview.py
new file mode 100644
index 0000000..f628a0d
--- /dev/null
+++ b/tools/plot_family_overview.py
@@ -0,0 +1,223 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+"""六型号总览图(窗长 / τ / 检测延迟)—— 纯 stdlib 手写 SVG
+
+面板 A:测量窗长 与 IIR 时间常数 τ(横向条形,对数刻度)
+面板 B:检测延迟 vs Δf/f(各型号按【本型号档0 判据】计算,对数-对数)
+
+转 PNG:chromium --headless=new --disable-gpu --no-sandbox \
+ --screenshot=docs/img/family-overview.png --window-size=1520,1000 \
+ file://$PWD/docs/img/family-overview.svg
+"""
+import math
+
+W, H = 1520, 1100
+FONT = "'Noto Serif CJK SC','Noto Sans CJK SC',sans-serif"
+MONO = "'DejaVu Sans Mono',monospace"
+out = []
+
+def esc(s):
+ return (s.replace('&', '&').replace('<', '<').replace('>', '>'))
+
+def txt(x, y, s, size=14, fill='#222', anchor='start', weight='normal', family=None):
+ out.append('%s'
+ % (x, y, size, fill, anchor, weight, family or FONT, esc(s)))
+
+def line(x1, y1, x2, y2, stroke='#999', w=1.0, dash=None):
+ d = ' stroke-dasharray="%s"' % dash if dash else ''
+ out.append(''
+ % (x1, y1, x2, y2, stroke, w, d))
+
+def rect(x, y, w, h, fill='none', stroke='none', rx=3, sw=1.0, op=1.0, dash=None):
+ d = ' stroke-dasharray="%s"' % dash if dash else ''
+ out.append(''
+ % (x, y, w, h, rx, fill, op, stroke, sw, d))
+
+def poly(pts, stroke='#1565c0', w=1.8, fill='none', dash=None):
+ d = ' stroke-dasharray="%s"' % dash if dash else ''
+ s = ' '.join('%.1f,%.1f' % p for p in pts)
+ out.append(''
+ % (s, fill, stroke, w, d))
+
+def dot(x, y, r=4.0, fill='#c1121f'):
+ out.append('' % (x, y, r, fill))
+
+def note(x, y, w, h, title, lines_, color='#0b6'):
+ rect(x, y, w, h, '#fbfdff', color, rx=6, sw=1.2, op=0.95)
+ txt(x + 12, y + 24, title, 14.5, color, weight='bold')
+ for i, s in enumerate(lines_):
+ txt(x + 12, y + 48 + i * 21, s, 13, '#333')
+
+# ---- 型号数据(全部取证过;数值见 docs/cross-model-comparison.md)----
+# name, 测量窗(ms), 滤波更新节拍(ms), α, 档0 判据(Δf/f %), 进入确认说明, 颜色
+M = [
+ ('DLD154Pro', 8.738, 8.74, 79, 0.1650, '3 tick 确认(5ms tick)', '#6a1b9a'),
+ ('DLD154V4B', 1.092, 10.00, 79, 0.5140, '3~5 tick 确认(10ms tick)', '#2e7d32'),
+ ('PD136HA', 21.845, 21.85, 64, 0.2472, '无(单次越线)', '#e65100'),
+ ('PD132T', 10.923, 10.92, 79, 0.4578, '无(单次越线)', '#1565c0'),
+ ('PD132L', 27.307, 27.31, 79, 0.4578, '无(单次越线)', '#00838f'),
+ ('M1H', 8.192, 8.19, 79, 0.3296, '10 tick 确认(≈0.6s)', '#5d4037'),
+]
+
+def tau_line(tick, alfa):
+ return tick * 256.0 / alfa
+
+def delay_ms(m, d_pct):
+ """判据越线延迟:d_pct 以 % 传入;返回 (窗数, ms) 或 None(检不到)"""
+ tick, alfa, thr = m[2], m[3], m[4]
+ if d_pct < thr:
+ return None
+ y = 0.0
+ for n in range(1, 4001):
+ y = d_pct * (1.0 - (1.0 - alfa / 256.0) ** n)
+ if y >= thr:
+ return (n, n * tick)
+ return (4000, 4000 * tick)
+
+# ================== 画布 ==================
+out.append('')
+open(OPEN, 'w', encoding='utf-8').write('\n'.join(out))
+
+print('已写出 %s(%d 元素)' % (OPEN, len(out)))
+for m in M:
+ nm = m[0]
+ f = lambda r: ('%.1f ms(%d 窗)' % (r[1], r[0])) if r else '—'
+ print(' %-11s 窗 %6.2f | 节拍 %6.2f | τ %6.1f | 档0 %6.4f%% | @1.1x: %-16s @2x: %-16s @10x: %s'
+ % (nm, m[1], m[2], tau_line(m[2], m[3]), m[4],
+ f(delay_ms(m, m[4] * 1.1)), f(delay_ms(m, m[4] * 2.0)), f(delay_ms(m, m[4] * 10.0))))
+
+
+
diff --git a/tools/plot_sens_alignment.py b/tools/plot_sens_alignment.py
new file mode 100644
index 0000000..a880eaa
--- /dev/null
+++ b/tools/plot_sens_alignment.py
@@ -0,0 +1,140 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+"""PD132T ↔ PD136HA 灵敏度档位对齐图(现场调档照着贴)—— 纯 stdlib 手写 SVG
+
+横轴 = Δf/f(进入/离开阈值的相对频偏,%);每档画 进入(实心)+离开(浅色) 两段
+偏差 = 同档位号一对一映射的 (H−T)/T;最佳匹配 = 最近的进入阈值
+
+转 PNG:chromium --headless=new --disable-gpu --no-sandbox \
+ --screenshot=docs/img/sens-alignment-pd132t-pd136ha.png --window-size=1500,880 \
+ file://$PWD/docs/img/sens-alignment-pd132t-pd136ha.svg
+"""
+W, H = 1500, 1060
+FONT = "'Noto Serif CJK SC','Noto Sans CJK SC',sans-serif"
+K = 65536.0
+out = []
+
+def esc(s):
+ return s.replace('&', '&').replace('<', '<').replace('>', '>')
+
+def txt(x, y, s, size=14, fill='#222', anchor='start', weight='normal'):
+ out.append('%s'
+ % (x, y, size, fill, anchor, weight, FONT, esc(s)))
+
+def line(x1, y1, x2, y2, stroke='#999', w=1.0, dash=None):
+ d = ' stroke-dasharray="%s"' % dash if dash else ''
+ out.append('' % (x1, y1, x2, y2, stroke, w, d))
+
+def rect(x, y, w, h, fill='none', stroke='none', rx=2, sw=1.0, op=1.0):
+ out.append(''
+ % (x, y, w, h, rx, fill, op, stroke, sw))
+
+def note(x, y, w, h, title, lines_, color='#0b6'):
+ rect(x, y, w, h, '#fbfdff', color, rx=6, sw=1.2, op=0.95)
+ txt(x + 12, y + 24, title, 14.5, color, weight='bold')
+ for i, s in enumerate(lines_):
+ txt(x + 12, y + 48 + i * 21, s, 13, '#333')
+
+T_IN = [300, 60, 32, 21] # PD132T 进入表(档0..3)
+T_OUT = [60, 32, 21, 14] # PD132T 离开表
+H_IN = [162, 81, 54, 28] # PD136HA 进入表
+H_OUT = [81, 54, 32, 18] # PD136HA 离开表
+ct = lambda v: v / K * 100.0
+
+out.append('')
+open(OPEN, 'w', encoding='utf-8').write('\n'.join(out))
+print('已写出 %s' % OPEN)
+for i in range(4):
+ viT, viH = ct(T_IN[i]), ct(H_IN[i])
+ j = min(range(4), key=lambda k: abs(H_IN[k] - T_IN[i]))
+ print(' 档%d: PD132T %.4f%% ↔ PD136HA %.4f%%(同档 %+.1f%%)| 最近档 %d(%+.1f%%)'
+ % (i, viT, viH, (viH - viT) / viT * 100, j, (ct(H_IN[j]) - viT) / viT * 100))
+
+