feat(V4B): V4.36.8 — 进入/释放确认按 Q 档分档 (A+B)
Q 分档心智沿用至判定: 低Q(高频小L)抖动大 → 确认样本加长防误判 进入确认: 高3/中4/低5 样本 (原固定3) 释放确认: 高3/中4/低5 样本 (原固定3) update_q_confirm_need() 每样本按空场 f 更新; dlt 已比例化无需分档 语法0 error, 4测试全绿; spec V2.24 / devlog V2.42
This commit is contained in:
@@ -4,6 +4,48 @@
|
||||
|
||||
---
|
||||
|
||||
## 2026-09-03 — 进入/释放确认按 Q 档分档(固件 V4.36.8)
|
||||
|
||||
> **固件版本:V4.36.8**(cmcng.h:FIRMWARE_VER="4.36.8",REV=8)。devlog 修订 V2.42。
|
||||
|
||||
### 用户拍板(Q 分档心智沿用到有/无车判定)
|
||||
|
||||
V4.36.5~7 重连抑制分档效果好 → 用户提出沿用到日常判定减少误判。
|
||||
分析结论:dlt 已比例化(Origin×SensTable>>16)无需分档;真正与 Q(噪声抖动)相关的是
|
||||
**进入确认样本数** 与 **释放确认样本数**。
|
||||
|
||||
### 改动(A+B 两处)
|
||||
|
||||
| Q 档 | 频率 | 进入确认(样本) | 释放确认(样本) |
|
||||
|------|------|--------------|--------------|
|
||||
| 高Q | f≤80k | 3 | 3(维持原响应) |
|
||||
| 中Q | 80~100k | 4 | 4 |
|
||||
| 低Q | f>100k | **5** | **5**(防假进入/输出抖落) |
|
||||
|
||||
- 新增 `update_q_confirm_need()`:每样本按空场频率 `calc_freq_khz(Origin, LPCNT)` 更新
|
||||
`g_entry_need/g_release_need`(Origin=0 归高Q 3,不干扰上电判稳)
|
||||
- 进入确认:`loop1_entry_cnt >= ENTRY_CONFIRM` → `>= g_entry_need`
|
||||
- 释放确认:`loop1_cnt_release >= 3` → `>= g_release_need`
|
||||
- 宏:ENTRY_CONFIRM_HI/MID/LO、REL_CONFIRM_HI/MID/LO(TaskLoop.h)
|
||||
|
||||
### 权衡
|
||||
|
||||
- 低Q(高频小L):进入/释放各 +20ms(5 vs 3 样本)——判车延迟 50ms@10ms,几乎无感
|
||||
- 高Q(低频大L):行为零变化(仍 3 样本快响应)
|
||||
- 真车误判面:进入抖动需持续 ≥5 样本(50ms) 压低超 dlt 才误判——低Q 空场抖动若远小于 dlt 则无感
|
||||
|
||||
### 验证
|
||||
|
||||
- 语法 0 error;4 组单测全 PASS(判定确认在主路径,无单测耦合;待板级验证)
|
||||
- 前置声明修正 1 处(static 定义在使用后)
|
||||
|
||||
### 待板级验证
|
||||
|
||||
1. 低Q 小线圈(46µH) 反复慢速压车/移走:进出响应正常(无漏检/无抖动),时间略长 20ms 无感
|
||||
2. 高Q 线圈(136µH) 行为与 V4.36.7 完全一致
|
||||
3. 行人/铁板边缘扫过:误判应比 3 样本版更少
|
||||
4. DBG 观察 Car_In/Car_OFF 打印节奏
|
||||
|
||||
## 2026-09-03 — 断开保持/抑制窗参数调整(固件 V4.36.7)
|
||||
|
||||
> **固件版本:V4.36.7**(cmcng.h:FIRMWARE_VER="4.36.7",REV=7)。devlog 修订 V2.41。
|
||||
@@ -1661,6 +1703,7 @@ if (dev >= dlt_ORG × 4) {
|
||||
|
||||
| 版本 | 时间 | 说明 |
|
||||
|------|------|------|
|
||||
| V2.42 | 2026-09-03 | V4.36.8 进入/释放确认按Q档(高3/中4/低5样本), dlt已比例化无需分档 |
|
||||
| V2.41 | 2026-09-03 | V4.36.7 参数: RELAY_HOLD 1s; Q抑制 高200/中300/低400ms |
|
||||
| V2.40 | 2026-09-03 | V4.36.6 高Q 抑制窗 0→100ms(短兜底), 分档终值 100/200/400ms |
|
||||
| V2.39 | 2026-09-03 | V4.36.5 重连起振抑制按Q分档(f>100k低Q 400ms/80~100k中Q 200ms/≤80k高Q 0ms), 进入确认挂起 |
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# DLD154V4B 技术规格书
|
||||
|
||||
> 单路线圈车辆检测器 | 固件版本: V4.36.7 | 文档版本: V2.23
|
||||
> 单路线圈车辆检测器 | 固件版本: V4.36.8 | 文档版本: V2.24
|
||||
> 本文档面向工程开发、系统集成及故障深度分析
|
||||
|
||||
---
|
||||
@@ -789,3 +789,4 @@ DLD154V4B V1.4 起实现该专利的整数化版本,用于大车通行时的
|
||||
| V2.21 | 2026-09-03 | **V4.36.5 重连起振抑制按 Q 分档**:低Q(高频小L 46~50µH)起振慢前几窗偏差大→假有车跳输出;按空场频率 f 分档抑制——f>100k 低Q 400ms / 80~100k 中Q 200ms / ≤80k 高Q 0ms(136/210µH 实测无需);抑制期仅挂起进入确认累计 |
|
||||
| V2.22 | 2026-09-03 | **V4.36.6 高Q 档抑制窗 0→100ms**:高Q(≤80kHz 大L) 增加 100ms 短兜底窗(覆盖起振/插头瞬态),分档完整为 高Q 100ms/中Q 200ms/低Q 400ms |
|
||||
| V2.23 | 2026-09-03 | **V4.36.7 参数调整**:RELAY_HOLD_MS 500→**1000**(有车断开继电器保持);抑制窗 高Q 100→**200** / 中Q 200→**300** / 低Q 400 不变 → 分档 200/300/400ms |
|
||||
| V2.24 | 2026-09-03 | **V4.36.8 Q 档判定参数**:进入确认 ENTRY_CONFIRM 按 Q 档(高3/中4/低5 样本)+ 释放确认同表分档——低Q 抖动大防假进入/输出抖落;dlt 已比例化无需分档;update_q_confirm_need 每样本按空场 f 更新 |
|
||||
|
||||
@@ -43,7 +43,14 @@
|
||||
// 历史: V4.05 曾用 ReleaseTable_B 加深释放表(实验失败, 方向反)
|
||||
// V4.06 改为 SENS=3 进入21→25+释放14→12, 等比推全档
|
||||
#define MAX_SLOPE_RATE 5 // 斜率限幅: 单次最大变化 5% (物理限制, 拒绝 EMI 尖峰)
|
||||
#define ENTRY_CONFIRM 3 // 进入确认: 连续 N 次低于阈值才判定有车
|
||||
/* V4.36.8: 进入/释放确认样本数 — 按线圈 Q 档 (Q∝1/f 代理, 低Q抖动大需更多样本防误判) */
|
||||
#define ENTRY_CONFIRM 3 // 进入确认基准(高Q): 连续 N 次低于阈值才判定有车
|
||||
#define ENTRY_CONFIRM_HI 3 // 高Q(f<=80k) 进入确认样本
|
||||
#define ENTRY_CONFIRM_MID 4 // 中Q(80~100k)
|
||||
#define ENTRY_CONFIRM_LO 5 // 低Q(f>100k): 抖动大, 多样本防假进入
|
||||
#define REL_CONFIRM_HI 3 // 高Q 释放确认样本
|
||||
#define REL_CONFIRM_MID 4 // 中Q
|
||||
#define REL_CONFIRM_LO 5 // 低Q: 释放边界抖动, 多样本防输出抖落
|
||||
#define FREEZE_TIMEOUT 1000 // 基线冻结超时: ~10s @ 10ms/tick, 持续偏高且稳定后强制更新基线
|
||||
#define FREEZE_STABILITY_RATE 2 // 冻结稳定性窗口: 参考值的 ±2% (CAPVD 需在此范围内才累计超时)
|
||||
#define ENV_WARN_WAIT 200 // 环境预判 (V4.31): dev>+4dlt 高位连续 ~2s → 黄灯预判锁存(回摆保持)
|
||||
|
||||
@@ -14,11 +14,11 @@
|
||||
#define __CMCNG_H__
|
||||
|
||||
#define PRODUCT_MODEL "DLD154"
|
||||
#define FIRMWARE_VER "4.36.7" // 主.子.修订 (2026-09-03 起: 小改动只增 REV; MAIN/SUB 由产品定)
|
||||
#define FIRMWARE_VER "4.36.8" // 主.子.修订 (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 7
|
||||
#define FIRMWARE_VER_REV 8
|
||||
#define HARDWARE_VER_MAIN 3
|
||||
#define HARDWARE_VER_SUB 0
|
||||
|
||||
|
||||
@@ -160,6 +160,8 @@ uint16_t g_reconn_cnt = 0; // V4.36.2: 载波连续恢复计数 (确
|
||||
uint16_t g_relay_hold_cnt = 0; // V4.36.3: 有车断开继电器保持计时(ms, ISR 5ms 累加)
|
||||
uint8_t g_relay_hold_done = 0; // V4.36.3: 本次有车断开已兜底释放(防重复OFF)
|
||||
uint16_t g_reconn_blank_ms = 0; // V4.36.5: 重连起振抑制倒计时(ms, 按Q分档, vd1_task 每样本-10)
|
||||
uint8_t g_entry_need = 3; // V4.36.8: 进入确认样本数 (按Q档, 高3/中4/低5)
|
||||
uint8_t g_release_need = 3; // V4.36.8: 释放确认样本数 (按Q档, 高3/中4/低5)
|
||||
uint8_t g_fault_phase = 0;
|
||||
uint16_t g_fault_tick = 0;
|
||||
uint8_t g_coil_fault = 0; // V4.26: 线圈电感量异常 0=正常 1=L偏大(f<20kHz) 2=L偏小(f>120kHz)
|
||||
@@ -912,6 +914,8 @@ static void coil_monitor(void)
|
||||
* 2. 无车时:基线跟踪 + 进入检测
|
||||
* 3. 有车时:离开检测(带滞回)
|
||||
*===========================================================================*/
|
||||
static void update_q_confirm_need(void); // V4.36.8 前置声明 (定义在 loop_task 上方)
|
||||
|
||||
void vd1_task(void)
|
||||
{
|
||||
#define STABLE_SAMPLES 128 // 稳定期最少样本数 (128×10ms≈1.3s)
|
||||
@@ -975,6 +979,9 @@ void vd1_task(void)
|
||||
else g_reconn_blank_ms = 0;
|
||||
}
|
||||
|
||||
/* V4.36.8: 进入/释放确认样本数按 Q 档更新 (每样本; Origin=0 时归高Q 3) */
|
||||
update_q_confirm_need();
|
||||
|
||||
/*--- 2. 稳定期:绕过 IIR 和斜率限幅,小窗口快速收敛;
|
||||
* 基准值稳定(连续窗口 Origin 漂移达标)后才结束自检 ---*/
|
||||
if (!g_loop_stable) {
|
||||
@@ -1167,7 +1174,7 @@ void vd1_task(void)
|
||||
calc_freq_khz(loop1_CAPVD, loop1_LPCNT), loop1_LPCNT, loop1_Xn);
|
||||
}
|
||||
loop1_entry_cnt++;
|
||||
if (loop1_entry_cnt >= ENTRY_CONFIRM) {
|
||||
if (loop1_entry_cnt >= g_entry_need) { // V4.36.8: 按Q档 (高3/中4/低5)
|
||||
PRINT("Car_In, Value:%d, CAPVD:%d, Origin:%d, dlt:%d\\n",
|
||||
loop1_Value, loop1_CAPVD, loop1_Origin, loop1_dlt_ORG);
|
||||
|
||||
@@ -1294,7 +1301,7 @@ void vd1_task(void)
|
||||
calc_freq_khz(loop1_CAPVD, loop1_LPCNT), loop1_LPCNT, loop1_Xn);
|
||||
}
|
||||
loop1_cnt_release++;
|
||||
if (loop1_cnt_release >= 3) {
|
||||
if (loop1_cnt_release >= g_release_need) { // V4.36.8: 按Q档 (高3/中4/低5)
|
||||
PRINT("Car_OFF, Value:%d CAPVD:%d Origin:%d dlt:%d\n",
|
||||
loop1_Value, loop1_CAPVD, loop1_Origin, loop1_dlt_ORG);
|
||||
loop1_VD_FLAG = 0;
|
||||
@@ -1316,6 +1323,24 @@ void vd1_task(void)
|
||||
/*===========================================================================
|
||||
* loop_task_function — FreeRTOS 主任务(对齐 M1H main 循环)
|
||||
*===========================================================================*/
|
||||
/* V4.36.8: 按 Q 档(空场频率代理)更新进入/释放确认样本数 — 每样本调用一次
|
||||
* 低Q(高频小L): 测量抖动大 → 多样本防假进入/输出抖落
|
||||
* 高Q(低频大L): 信号稳 → 维持快响应 (3 样本) */
|
||||
static void update_q_confirm_need(void)
|
||||
{
|
||||
uint32_t _f = calc_freq_khz(loop1_Origin, loop1_LPCNT);
|
||||
if (_f > RECONNECT_Q_MID_F_KHZ) { /* 低Q f>100k */
|
||||
g_entry_need = ENTRY_CONFIRM_LO;
|
||||
g_release_need = REL_CONFIRM_LO;
|
||||
} else if (_f > RECONNECT_Q_HI_F_KHZ) { /* 中Q 80~100k */
|
||||
g_entry_need = ENTRY_CONFIRM_MID;
|
||||
g_release_need = REL_CONFIRM_MID;
|
||||
} else { /* 高Q f<=80k (含 Origin=0 f=0) */
|
||||
g_entry_need = ENTRY_CONFIRM_HI;
|
||||
g_release_need = REL_CONFIRM_HI;
|
||||
}
|
||||
}
|
||||
|
||||
#define RECONNECT_CONFIRM_TICKS 10 /* V4.36.2: 重连确认窗 10×10ms=100ms
|
||||
* 载波连续恢复满窗才确认重连重置;
|
||||
* 抖动断开↔恢复每掉线取消重新计 */
|
||||
|
||||
Reference in New Issue
Block a user