diff --git a/docs/devlog.md b/docs/devlog.md index c7d9870..b5972ac 100644 --- a/docs/devlog.md +++ b/docs/devlog.md @@ -6,8 +6,9 @@ ## 2026-09-01 — 方案B 现场调校定稿:进入加深 + 释放调浅(固件 V4.06) -> **固件版本:V4.06**(cmcng.h:FIRMWARE_VER="4.06" + MAIN=4/SUB=6)。devlog 修订 V2.15。 +> **固件版本:V4.07**(cmcng.h:FIRMWARE_VER="4.07" + MAIN=4/SUB=7)。devlog 修订 V2.16。 > **状态:方案B 定稿候选**——SENS=3 现场实测接近 PD132T,等比推全档。 +> **V4.07 微调**:SENS=0 进入 357→**337**(等比值偏低档触发过深,现场回调折中)。最终表:进入 `{337,71,38,25}`、释放 `{51,27,18,12}`。 ### 现场调校过程(用户金属板测试) diff --git a/docs/technical-spec.md b/docs/technical-spec.md index d217afa..9ba181f 100644 --- a/docs/technical-spec.md +++ b/docs/technical-spec.md @@ -280,7 +280,7 @@ if ((Origin - dlt_ORG) < CAPVD) { // CAPVD 回升至距基线不 > **⚠ V4.05(2026-09-01)方案B 实验(USE_SLOW_RELEASE=0 + USE_PLANB_TABLE=1)**:对比路线——释放走**快滤波**(无慢滤波状态),手感对齐改由**调深释放阈值表** `ReleaseTable_B={80,42,27,18}`(原始 `{60,32,21,14}` 加深 ~30%)承担。⚠ **关键认知:释放方向是 CAPVD 向 Origin 恢复,dlt 增大(调深)→ 释放线降低 → 释放更早**(与"调深=更严格"直觉相反,仿真+单测双确认)。仿真预测:深信号(≥0.2%)加深表比 PD132T 早 3~6 counts,原始表更接近;浅信号(~0.1%)加深表更接近(差 ~1.3 counts)。HR0/2 假释放结构性免疫(无悬停状态)。现场 A/B 对比后定稿,`USE_SLOW_RELEASE`/`USE_PLANB_TABLE` 两宏二选一保留。 -> **⚠ V4.06(2026-09-01)方案B 现场调校定稿(USE_SLOW_RELEASE=0 + USE_PLANB_TABLE=1)**:现场实测——加深表失败(释放更早);**用户改 SENS=3 进入 21→25、释放 14→12 → 接近 PD132T 最高灵敏手感**。关键:**进入加深(触发更严)+ 释放调浅(释放更晚)**组合,滞回 66%→47%。全档等比(×25/21 进入、×12/14 释放):进入 `{357,71,38,25}`、释放 `{51,27,18,12}`。⚠ 与 PD132T 表值不再一致(行为等效);SENS=0 进入 300→357 变化大,现场低档漏检可单独回调。废弃 `ReleaseTable_B`(方向错误,并入 SensTable_1 调校)。 +> **⚠ V4.06/V4.07(2026-09-01)方案B 现场调校定稿(USE_SLOW_RELEASE=0 + USE_PLANB_TABLE=1)**:现场实测——加深表失败(释放更早);**用户改 SENS=3 进入 21→25、释放 14→12 → 接近 PD132T 最高灵敏手感**。关键:**进入加深(触发更严)+ 释放调浅(释放更晚)**组合,滞回 66%→47%。全档等比(×25/21 进入、×12/14 释放)后 **V4.07 SENS=0 回调 357→337**:进入 `{337,71,38,25}`、释放 `{51,27,18,12}`。⚠ 与 PD132T 表值不再一致(行为等效)。废弃 `ReleaseTable_B`(方向错误,并入 SensTable_1 调校)。 ##### 模式 2:平坦性判定 (USE_FLATNESS_EXIT=1) — ⚠ 默认禁用(#if 0,代码保留) diff --git a/tests/test_planb_release.c b/tests/test_planb_release.c index f68a50b..fdce73c 100644 --- a/tests/test_planb_release.c +++ b/tests/test_planb_release.c @@ -17,8 +17,8 @@ #define TICK_MS 10 #define ORIGIN 100000UL -/* 方案B V4.06 调校表 (与 TaskLoop.c 一致) */ -static const uint16_t SensTable[4] = {357, 71, 38, 25}; /* 进入: 原{300,60,32,21} ×1.190 */ +/* 方案B V4.07 调校表 (与 TaskLoop.c 一致) */ +static const uint16_t SensTable[4] = {337, 71, 38, 25}; /* 进入: 原{300,60,32,21}, V4.07 SENS=0 回调 357→337 */ static const uint16_t SensTable_1[4] = { 51, 27, 18, 12}; /* 释放: 原{60,32,21,14} ×0.857 */ static const uint16_t SensTable_1_old[4] = { 60, 32, 21, 14}; /* 原始表(对比用) */ @@ -53,15 +53,15 @@ static void test_hysteresis_positive(void) printf("[OK] 滞回为正: 四档释放表均 < 进入表\n"); } -static void test_v406_tuned_values(void) +static void test_v407_tuned_values(void) { /* SENS=3: 进入 25 / 释放 12 (用户现场实测) */ assert(SensTable[3] == 25); assert(SensTable_1[3] == 12); - /* 其他档等比: ×25/21 与 ×12/14 */ - assert(SensTable[2] == 38 && SensTable[1] == 71 && SensTable[0] == 357); + /* 其他档: SENS=0 回调 337, 其余等比 ×25/21 与 ×12/14 */ + assert(SensTable[2] == 38 && SensTable[1] == 71 && SensTable[0] == 337); assert(SensTable_1[2] == 18 && SensTable_1[1] == 27 && SensTable_1[0] == 51); - printf("[OK] V4.06 调校表值正确: 进入{357,71,38,25} 释放{51,27,18,12}\n"); + printf("[OK] V4.07 调校表值正确: 进入{337,71,38,25} 释放{51,27,18,12}\n"); } static void test_tuned_later_than_old(void) @@ -92,7 +92,7 @@ int main(void) { printf("=== 方案B (快滤波+灵敏度表现场调校 V4.06) 单测 ===\n"); test_hysteresis_positive(); - test_v406_tuned_values(); + test_v407_tuned_values(); test_tuned_later_than_old(); test_release_reasonable(); printf("\n全部通过 ✓\n"); diff --git a/utilities/at32f421_freertos_demo/inc/cmcng.h b/utilities/at32f421_freertos_demo/inc/cmcng.h index 4368836..ebeb7fc 100644 --- a/utilities/at32f421_freertos_demo/inc/cmcng.h +++ b/utilities/at32f421_freertos_demo/inc/cmcng.h @@ -14,10 +14,10 @@ #define __CMCNG_H__ #define PRODUCT_MODEL "DLD154" -#define FIRMWARE_VER "4.06" +#define FIRMWARE_VER "4.07" #define HARDWARE_VER "3.00" #define FIRMWARE_VER_MAIN 4 -#define FIRMWARE_VER_SUB 6 +#define FIRMWARE_VER_SUB 7 #define HARDWARE_VER_MAIN 3 #define HARDWARE_VER_SUB 0 diff --git a/utilities/at32f421_freertos_demo/src/TaskLoop.c b/utilities/at32f421_freertos_demo/src/TaskLoop.c index a7f06c2..b8f30fb 100644 --- a/utilities/at32f421_freertos_demo/src/TaskLoop.c +++ b/utilities/at32f421_freertos_demo/src/TaskLoop.c @@ -14,12 +14,13 @@ * SENS: 0=低灵敏, 3=高灵敏 *===========================================================================*/ #if USE_PLANB_TABLE -/* 方案B (V4.06): 现场实测调校 — SENS=3 进入 21→25、释放 14→12 接近 PD132T 最高灵敏手感 +/* 方案B (V4.07): 现场实测调校 — SENS=3 进入 21→25、释放 14→12 接近 PD132T 最高灵敏手感 * 其他三档按等比 (进入 ×25/21=1.190, 释放 ×12/14=0.857) 推算: * {300,60,32,21}→{357,71,38,25} {60,32,21,14}→{51,27,18,12} + * V4.07: SENS=0 进入 357→337 现场回调 (等比值偏低档触发过深, 折中) * 物理: 进入加深(触发更严) + 释放调浅(释放更晚), 滞回 66%→47% - * ⚠ 与 PD132T 表值不再一致(行为等效); SENS=0 进入 300→357 变化大, 现场低档漏检可单独回调 */ -const uint16_t SensTable[4] = {357, 71, 38, 25}; // 方案B: 进入调深 (V4.06 现场调校) + * ⚠ 与 PD132T 表值不再一致(行为等效) */ +const uint16_t SensTable[4] = {337, 71, 38, 25}; // 方案B: 进入调深 (V4.07: SENS=0 回调 357→337) const uint16_t SensTable_1[4] = { 51, 27, 18, 12}; // 方案B: 释放调浅 (V4.06 现场调校) #else const uint16_t SensTable[4] = {300, 60, 32, 21}; // V2.11: 全档与 PD132T SensTable 完全一致 (0.458%/0.092%/0.049%/0.032% df/f)