feat(V4B): V4.36.19 — 低Q 释放抗抖 (平滑判释放+带回加宽)
问题: 43nF/高灵敏/低Q(≤50µH) 金属板边界试探 → 触发稳定但释放点外移 发散至锁死(绿灯长亮); 开 DEBUG 打印复现不了(阻塞降采样平均抖动) = 关键旁证 根因: 释放带回 dlt_rel=23 ≈ 低Q σ(±15~25), 快值判释放(5样本)被抖断 修复(Q 分档, 高/中Q 零影响): - rel_release_hit(): 低Q 用 g_rel_smooth(τ50ms REL_ALFA=46) 判释放 - 低Q 释放带回 ×1.5 (REL_BAND_LO_MULT=150: 23→~35) - g_rel_smooth: IIR 后跟随/CAPVD=0 与重连归零/Car_In snap 语法0 error, 4测试全绿; spec V2.35 / devlog V2.54
This commit is contained in:
@@ -4,6 +4,26 @@
|
||||
|
||||
---
|
||||
|
||||
## 2026-09-03 — 低Q 释放抗抖(固件 V4.36.19)
|
||||
|
||||
> **固件版本:V4.36.19**。devlog 修订 V2.54。spec V2.35 / manual 已同步。
|
||||
|
||||
**问题**:43nF 低频、高灵敏、低Q(50µH 以下) 线圈——金属板感应边界反复试探
|
||||
(快释放停住→缓慢离开),触发高度稳定但释放高度越拉越远,最终绿灯长亮释放不了;
|
||||
高Q 无此问题。关键旁证:**开 DEBUG 打印复现不了、禁打印可复现**——PRINT 阻塞
|
||||
把 vd1_task 样本间隔从 10ms 拉到 50ms+,等效低通,抖动被平均。
|
||||
|
||||
**根因**:释放带回仅 dlt_rel=23 counts(0.018%@128k)≈ 低Q 抖动 σ(±15~25),
|
||||
快值直接判释放(`CAPVD>Origin-23` 连续 5 样本)在边界试探时被抖动反复打断
|
||||
→ 释放点外移/卡死。
|
||||
|
||||
**修复(Q 分档,高/中Q 零影响)**:
|
||||
1. `rel_release_hit()`:低Q(g_q_lo, f>100kHz) 用 g_rel_smooth(τ≈50ms,
|
||||
REL_ALFA=46,复刻打印平均效应)判释放
|
||||
2. 低Q 释放带回 ×1.5(REL_BAND_LO_MULT=150,23→~35)提前释放留 σ 余量
|
||||
3. g_rel_smooth:IIR 后每样本跟随;CAPVD=0/重连/INIT 归零;Car_In snap=CAPVD
|
||||
语法 0 error、4 测试全绿。
|
||||
|
||||
## 2026-09-03 — 频率窗下界 20→18kHz(固件 V4.36.18)
|
||||
|
||||
> **固件版本:V4.36.18**(cmcng.h:FIRMWARE_VER="4.36.18",REV=18)。devlog 修订 V2.53。
|
||||
@@ -1902,6 +1922,7 @@ if (dev >= dlt_ORG × 4) {
|
||||
|
||||
| 版本 | 时间 | 说明 |
|
||||
|------|------|------|
|
||||
| V2.54 | 2026-09-03 | V4.36.19 低Q 释放抗抖: τ50ms 平滑判释放+带回×1.5 (REL_ALFA/REL_BAND_LO_MULT), 高/中Q 零影响 |
|
||||
| V2.53 | 2026-09-03 | V4.36.18 频率窗下界 20→18kHz (18~125kHz) |
|
||||
| V2.52 | 2026-09-03 | 安全复位观感勘误(无代码): 绿灯镜像继电器后复位指示变化; manual 4.5/spec 对齐实际行为 |
|
||||
| V2.51 | 2026-09-03 | V4.36.17 修复上电无线圈黄灯不闪: 黄灯模式1 改 !LOOP_OK(5ms 实时) |
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# DLD154V4B 技术规格书
|
||||
|
||||
> 单路线圈车辆检测器 | 固件版本: V4.36.18 | 文档版本: V2.34
|
||||
> 单路线圈车辆检测器 | 固件版本: V4.36.19 | 文档版本: V2.35
|
||||
> 本文档面向工程开发、系统集成及故障深度分析
|
||||
|
||||
---
|
||||
@@ -805,3 +805,4 @@ DLD154V4B V1.4 起实现该专利的整数化版本,用于大车通行时的
|
||||
| V2.32 | 2026-09-03 | **V4.36.16 上电自检与重连灯语义分离**:黄灯模式1 去 !power_up(上电有线圈黄灯不闪,自检归绿灯慢闪);无线圈由 disconnect_active 覆盖仍双闪;判稳门控触发加 g_loop_stable(上电/安全复位不判稳);运行中重连仍黄灯接管 |
|
||||
| V2.33 | 2026-09-03 | **V4.36.17 修复上电无线圈黄灯不闪**:断开分支置位条件含 power_up(上电 phase 故意不置 disconnect_active),V4.36.16 去 !power_up 后裸奔 → 黄灯模式1 改 `!LOOP_OK || g_reconn_stab`(5ms 实时载波缺失判定,同时让运行中断开黄灯反应从 150ms 加快到 5ms) |
|
||||
| V2.34 | 2026-09-03 | **V4.36.18 频率窗下界 20→18kHz**:放行更大电感线圈(18~125kHz @43nF ≈ L 47µH~1.15mH);test 边界 17 偏大/18 正常;参数表同步修正历史滞后(MAX 125 / C_NF 43) |
|
||||
| V2.35 | 2026-09-03 | **V4.36.19 低Q 释放抗抖**:低Q(21~50µH)高灵敏边界试探释放点外移/锁死(释放带回 23≈σ,快值判释放被抖断);τ50ms 平滑(REL_ALFA=46, 打印降采样平均效应工程版)+带回×1.5(REL_BAND_LO_MULT) 仅低Q 生效,高/中Q 零影响 |
|
||||
|
||||
@@ -36,6 +36,8 @@
|
||||
*===========================================================================*/
|
||||
#define ALFA_CAP1 79 // IIR α = 79/256 ≈ 0.31 (@10ms → τ≈32ms)
|
||||
#define RELEASE_ALFA 21 // 释放慢滤波 α = 21/256 ≈ 0.082 (@10ms → 精确τ≈117ms, V4.04: 对齐 PD132T α79@43.7ms 精确τ≈118ms; 原18→精确τ137ms偏慢)
|
||||
#define REL_ALFA 46 // V4.36.19: 低Q 释放平滑 α=46/256≈0.18 (@10ms → τ≈50ms): 复刻打印降采样平均效应, 只用于低Q 释放判定抗抖
|
||||
#define REL_BAND_LO_MULT 150 // V4.36.19: 低Q 释放带回加宽 % (dlt_rel×1.5: 23→35@SENS3): 释放提前+σ余量, 防边界试探锁死
|
||||
#define USE_SLOW_RELEASE 0 // 方案A总开关: 1=释放走慢滤波(对齐PD132T) 0=原快滤波释放
|
||||
#define USE_PLANB_TABLE 1 // 方案B (V4.06): 快滤波释放 + 灵敏度表现场调校
|
||||
// 1=进入加深/释放调浅双表(见 TaskLoop.c, SENS=3: 25/12 现场实测接近PD132T)
|
||||
|
||||
@@ -14,11 +14,11 @@
|
||||
#define __CMCNG_H__
|
||||
|
||||
#define PRODUCT_MODEL "DLD154"
|
||||
#define FIRMWARE_VER "4.36.18" // 主.子.修订 (2026-09-03 起: 小改动只增 REV; MAIN/SUB 由产品定)
|
||||
#define FIRMWARE_VER "4.36.19" // 主.子.修订 (2026-09-03 起: 小改动只增 REV; MAIN/SUB 由产品定)
|
||||
#define HARDWARE_VER "3.00"
|
||||
#define FIRMWARE_VER_MAIN 4
|
||||
#define FIRMWARE_VER_SUB 36
|
||||
#define FIRMWARE_VER_REV 18
|
||||
#define FIRMWARE_VER_REV 19
|
||||
#define HARDWARE_VER_MAIN 3
|
||||
#define HARDWARE_VER_SUB 0
|
||||
|
||||
|
||||
@@ -42,6 +42,8 @@ uint32_t loop1_CapSum;
|
||||
uint32_t loop1_Value;
|
||||
uint32_t loop1_CAPVD;
|
||||
uint32_t loop1_CAPVD_slow = 0; // 释放判定慢滤波值 (方案A)
|
||||
uint32_t g_rel_smooth = 0; // V4.36.19: 低Q 释放平滑值 (τ≈50ms, 复刻打印降采样平均效应)
|
||||
uint8_t g_q_lo = 0; // V4.36.19: 低Q 档标志 (空场 f>100kHz, update_q_confirm_need 同步)
|
||||
uint32_t loop1_Origin;
|
||||
uint32_t loop1_ORG_SUM;
|
||||
uint16_t loop1_ORG_CNT;
|
||||
@@ -253,6 +255,42 @@ uint32_t get_flt_value_slow(uint32_t new_value, uint32_t last_value)
|
||||
return value_Flt;
|
||||
}
|
||||
|
||||
/* V4.36.19: 低Q 释放平滑 (α=REL_ALFA/256≈0.18, τ≈50ms @10ms)
|
||||
* 复刻 DEBUG 打印阻塞降采样的平均效应 — 低Q(高频)释放边界抖动大, 快值直接判
|
||||
* 会被抖动打断计数(回滞仅 23 counts ≈ σ), 平滑后判定稳定 */
|
||||
uint32_t get_flt_value_rel(uint32_t new_value, uint32_t last_value)
|
||||
{
|
||||
uint32_t value_Flt;
|
||||
uint32_t delta = (new_value > last_value)
|
||||
? (new_value - last_value)
|
||||
: (last_value - new_value);
|
||||
uint32_t scaled_delta = (delta * (uint32_t)REL_ALFA) >> 8;
|
||||
|
||||
if (new_value > last_value) {
|
||||
value_Flt = last_value + scaled_delta;
|
||||
} else {
|
||||
value_Flt = last_value - scaled_delta;
|
||||
}
|
||||
|
||||
return value_Flt;
|
||||
}
|
||||
|
||||
/* V4.36.19: 释放命中判定 — 低Q(21~50µH)高灵敏释放带回仅 ~23 counts ≈ 抖动 σ,
|
||||
* 快值直接判在边界试探时计数被抖断 → 释放点外移/卡死;
|
||||
* 低Q 用 τ50ms 平滑值(复刻打印阻塞降采样平均效应) + 带回 ×1.5(留 σ 余量).
|
||||
* 高Q/中Q 走原快值逻辑, 零影响 */
|
||||
static uint8_t rel_release_hit(void)
|
||||
{
|
||||
uint32_t _cmp = loop1_CAPVD;
|
||||
uint32_t _line = loop1_Origin - loop1_dlt_ORG;
|
||||
|
||||
if (g_q_lo) {
|
||||
_cmp = g_rel_smooth;
|
||||
_line = loop1_Origin - ((loop1_dlt_ORG * REL_BAND_LO_MULT) / 100);
|
||||
}
|
||||
return (_line < _cmp) ? 1 : 0;
|
||||
}
|
||||
|
||||
/*===========================================================================
|
||||
* 滑动平均基线更新
|
||||
* 累加 new_value,当计数达到 window 时计算平均值并重置
|
||||
@@ -480,6 +518,8 @@ void INIT_VD(void)
|
||||
g_stab_step_tick = 0;
|
||||
g_stab_ok_cnt = 0;
|
||||
g_stab_base = 0;
|
||||
g_rel_smooth = 0; /* V4.36.19: 低Q 释放平滑清零 */
|
||||
g_q_lo = 0; /* V4.36.19: 低Q 档标志清零 */
|
||||
loop1_CAP_OK = 0;
|
||||
loop1_CAPVD = 0;
|
||||
loop1_CAPVD_slow = 0; // 方案A: 释放慢滤波复位
|
||||
@@ -955,6 +995,7 @@ void vd1_task(void)
|
||||
*================================================================*/
|
||||
if (loop1_CAPVD == 0) {
|
||||
loop1_CAPVD = loop1_Value;
|
||||
g_rel_smooth = 0; /* V4.36.19: 直锁时释放平滑同步归零 */
|
||||
|
||||
/* V4.36.5: 首样本直锁(重连重置后) → 按线圈 Q(空场频率)分档设定抑制窗
|
||||
* Origin 为断开前空场基线(同线圈同环境) → f 即 Q 档;
|
||||
@@ -991,6 +1032,14 @@ void vd1_task(void)
|
||||
}
|
||||
#endif
|
||||
|
||||
/* V4.36.19: 低Q 释放平滑 (τ≈50ms; 无条件跟随, 只用于低Q 释放判定) */
|
||||
if (loop1_CAPVD != 0) {
|
||||
if (g_rel_smooth == 0)
|
||||
g_rel_smooth = loop1_CAPVD;
|
||||
else
|
||||
g_rel_smooth = get_flt_value_rel(loop1_CAPVD, g_rel_smooth);
|
||||
}
|
||||
|
||||
/* V4.36.5: 重连起振抑制倒计时 (每样本 ~10ms) */
|
||||
if (g_reconn_blank_ms) {
|
||||
if (g_reconn_blank_ms > 10) g_reconn_blank_ms -= 10;
|
||||
@@ -1265,6 +1314,7 @@ void vd1_task(void)
|
||||
* 消除"定在HR0/2保持即释放"窗口(2026-09-01 仿真+现场复核) */
|
||||
loop1_CAPVD_slow = loop1_CAPVD;
|
||||
#endif
|
||||
g_rel_smooth = loop1_CAPVD; /* V4.36.19: 低Q 释放平滑 snap 到进入点 */
|
||||
|
||||
if (!SET_SAFE) {
|
||||
loop1_LC_HOLD = 1;
|
||||
@@ -1362,7 +1412,7 @@ void vd1_task(void)
|
||||
#if USE_SLOW_RELEASE
|
||||
if ((loop1_Origin - loop1_dlt_ORG) < loop1_CAPVD_slow) { // 方案A: 用慢滤波值对齐 PD132T 释放手感
|
||||
#else
|
||||
if ((loop1_Origin - loop1_dlt_ORG) < loop1_CAPVD) { // 方案B/原逻辑: 快滤波直接判释放
|
||||
if (rel_release_hit()) { // V4.36.19: 低Q 平滑值+带回加宽; 高/中Q 退回原快值逻辑
|
||||
#endif
|
||||
if (loop1_cnt_release == 0) {
|
||||
/* 过渡事件: 第一次命中离开线 (定位"为什么开始释放") */
|
||||
@@ -1408,12 +1458,15 @@ static void update_q_confirm_need(void)
|
||||
if (_f > RECONNECT_Q_MID_F_KHZ) { /* 低Q f>100k */
|
||||
g_entry_need = ENTRY_CONFIRM_LO;
|
||||
g_release_need = REL_CONFIRM_LO;
|
||||
g_q_lo = 1; /* V4.36.19: 低Q 释放抗抖档 */
|
||||
} else if (_f > RECONNECT_Q_HI_F_KHZ) { /* 中Q 80~100k */
|
||||
g_entry_need = ENTRY_CONFIRM_MID;
|
||||
g_release_need = REL_CONFIRM_MID;
|
||||
g_q_lo = 0;
|
||||
} else { /* 高Q f<=80k (含 Origin=0 f=0) */
|
||||
g_entry_need = ENTRY_CONFIRM_HI;
|
||||
g_release_need = REL_CONFIRM_HI;
|
||||
g_q_lo = 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1453,6 +1506,7 @@ void loop_task_function(void *pvParameters)
|
||||
g_disconnect_active = 0; // 确认重连: 清除断开标记
|
||||
loop1_CAPVD = 0; // 强制 IIR 从首个有效值重新收敛
|
||||
loop1_CAPVD_slow = 0; // 方案A: 释放慢滤波同步收敛
|
||||
g_rel_smooth = 0; // V4.36.19: 释放平滑同步收敛
|
||||
g_env_wait_cnt = 0; // V4.24: 断开重连后环境学习状态复位
|
||||
g_relay_hold_cnt = 0; // V4.36.3: 保持计时复位
|
||||
g_relay_hold_done = 0;
|
||||
|
||||
Reference in New Issue
Block a user