feat(V4B): V4.33 — 线圈频率窗上限 120→92kHz (COIL_F_OK_MAX_KHZ)
f>92kHz → L偏小告警(一长一短, 原 120kHz); 顺带修正 manual 黄灯表旧时序 (200/100/100/800→300/100/100/700, V4.32 遗留) 与频率窗描述 test_coil_range 边界 92/93 全绿; 语法 0 error 文档: devlog V2.31 / spec V2.12 / manual V2.10
This commit is contained in:
@@ -4,6 +4,35 @@
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## 2026-09-03 — 线圈频率窗上限 120→92kHz(固件 V4.33)
|
||||||
|
|
||||||
|
> **固件版本:V4.33**(cmcng.h:FIRMWARE_VER="4.33" + MAIN=4/SUB=33)。devlog 修订 V2.31。
|
||||||
|
|
||||||
|
### 拍板(2026-09-03)
|
||||||
|
|
||||||
|
线圈电感量告警频率窗上限收窄:**COIL_F_OK_MAX_KHZ 120 → 92**(默认低频档口径)
|
||||||
|
- 合理窗:20 ~ 92kHz(对应 L≈30µH(f=92k, C_eff68)~ 930µH(f=20k))
|
||||||
|
- f > 92kHz → L 偏小告警(一长一短,g_coil_fault=2)
|
||||||
|
|
||||||
|
### 背景推测
|
||||||
|
|
||||||
|
92kHz 接近 33nF 档与低频档歧义区上沿附近(33nF 档常见线圈 f 更高),上限压低可减少高频小线圈误报窗口;具体现场动机以用户口径为准。
|
||||||
|
|
||||||
|
### 改动
|
||||||
|
|
||||||
|
- TaskLoop.h:COIL_F_OK_MAX_KHZ 120→92(注释同步)
|
||||||
|
- tests/test_coil_range.c:镜像宏 92,边界用例 120/121→92/93
|
||||||
|
- 版本 V4.32→V4.33;spec V2.12 / manual V2.10 / devlog V2.31
|
||||||
|
|
||||||
|
### 验证
|
||||||
|
|
||||||
|
- test_coil_range 5 场景 ALL PASS(边界 19/20/92/93:92 正常、93 → L偏小)
|
||||||
|
- 语法 0 error
|
||||||
|
|
||||||
|
### 待现场验证
|
||||||
|
|
||||||
|
- 原 f 在 92~120kHz 间的线圈(如 L≈30~44µH@66nF 档)现在会告警 L 偏小——确认这批线圈是否确实不合理或需另行放行
|
||||||
|
|
||||||
## 2026-09-03 — 黄灯一长一短模式时序调整(固件 V4.32)
|
## 2026-09-03 — 黄灯一长一短模式时序调整(固件 V4.32)
|
||||||
|
|
||||||
> **固件版本:V4.32**(cmcng.h:FIRMWARE_VER="4.32" + MAIN=4/SUB=32)。devlog 修订 V2.30。
|
> **固件版本:V4.32**(cmcng.h:FIRMWARE_VER="4.32" + MAIN=4/SUB=32)。devlog 修订 V2.30。
|
||||||
@@ -1315,6 +1344,7 @@ if (dev >= dlt_ORG × 4) {
|
|||||||
|
|
||||||
| 版本 | 时间 | 说明 |
|
| 版本 | 时间 | 说明 |
|
||||||
|------|------|------|
|
|------|------|------|
|
||||||
|
| V2.31 | 2026-09-03 | V4.33 线圈频率窗上限 COIL_F_OK_MAX_KHZ 120→92kHz |
|
||||||
| V2.30 | 2026-09-03 | V4.32 黄灯一长一短: 200/100/100/800ms → 300/100/100/700ms |
|
| V2.30 | 2026-09-03 | V4.32 黄灯一长一短: 200/100/100/800ms → 300/100/100/700ms |
|
||||||
| V2.29 | 2026-09-03 | V4.31 故障补偿时序再调: 预判2s(200)/补偿7s(700)/恢复2s, 总 ~15s |
|
| V2.29 | 2026-09-03 | V4.31 故障补偿时序再调: 预判2s(200)/补偿7s(700)/恢复2s, 总 ~15s |
|
||||||
| V2.28 | 2026-09-03 | V4.30 故障补偿时序: 预判3s(300)/补偿8s(800)/恢复2s(200), 总 ~16s |
|
| V2.28 | 2026-09-03 | V4.30 故障补偿时序: 预判3s(300)/补偿8s(800)/恢复2s(200), 总 ~16s |
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# DLD154V4B 产品手册
|
# DLD154V4B 产品手册
|
||||||
|
|
||||||
> 单路线圈车辆检测器 | 型号: DLD154V4B | 版本: V2.9
|
> 单路线圈车辆检测器 | 型号: DLD154V4B | 版本: V2.10
|
||||||
> 适用于停车场、收费站、交通卡口等场景的车辆到达/离开检测
|
> 适用于停车场、收费站、交通卡口等场景的车辆到达/离开检测
|
||||||
|
|
||||||
---
|
---
|
||||||
@@ -177,7 +177,7 @@ DLD154V4B 是一款基于 ARM Cortex-M4 微控制器的**单通道环形线圈
|
|||||||
| 故障类型 | 红灯 | 绿灯 | 黄灯 | 说明 |
|
| 故障类型 | 红灯 | 绿灯 | 黄灯 | 说明 |
|
||||||
|---------|------|------|------|------|
|
|---------|------|------|------|------|
|
||||||
| 线圈断开(当前) | 呼吸 | 灭 | **快闪** (200ms) | 检查线圈连接 |
|
| 线圈断开(当前) | 呼吸 | 灭 | **快闪** (200ms) | 检查线圈连接 |
|
||||||
| 线圈电感量不合理(V4.26) | 呼吸 | 灭(无车) | **一长一短** (200ms亮/100ms灭/100ms亮/800ms灭 循环) | 空场频率出 20~120kHz(默认低频档):L偏大(f<20k)/L偏小(f>120k),检查线圈匝数/尺寸 |
|
| 线圈电感量不合理(V4.26/V4.33) | 呼吸 | 灭(无车) | **一长一短** (300ms亮/100ms灭/100ms亮/700ms灭 循环) | 空场频率出 20~92kHz(默认低频档):L偏大(f<20k)/L偏小(f>92k),检查线圈匝数/尺寸 |
|
||||||
| 线圈重连,断开 1 次 | 呼吸 | 正常 | **1 短闪** + 1.2s 灭 | 发生过 1 次断开,已恢复 |
|
| 线圈重连,断开 1 次 | 呼吸 | 正常 | **1 短闪** + 1.2s 灭 | 发生过 1 次断开,已恢复 |
|
||||||
| 线圈重连,断开 2 次 | 呼吸 | 正常 | **2 短闪** + 1.2s 灭 | 发生过 2 次断开,已恢复 |
|
| 线圈重连,断开 2 次 | 呼吸 | 正常 | **2 短闪** + 1.2s 灭 | 发生过 2 次断开,已恢复 |
|
||||||
| 线圈重连,断开 3+ 次 | 呼吸 | 正常 | **3 短闪** + 1.2s 灭 | 多次断开,建议检查接头 |
|
| 线圈重连,断开 3+ 次 | 呼吸 | 正常 | **3 短闪** + 1.2s 灭 | 多次断开,建议检查接头 |
|
||||||
|
|||||||
@@ -627,14 +627,14 @@ if (!g_loop_stable) {
|
|||||||
| 线圈断开 | `loop1_RF_FLAG == 0` 持续 | 黄灯快闪 / 继电器释放 |
|
| 线圈断开 | `loop1_RF_FLAG == 0` 持续 | 黄灯快闪 / 继电器释放 |
|
||||||
| 线圈短路 | Xn 持续为 0 或极小 | 黄灯快闪 / 继电器释放 |
|
| 线圈短路 | Xn 持续为 0 或极小 | 黄灯快闪 / 继电器释放 |
|
||||||
| 电感量不合理(L偏大) | 空场 f 持续 < 20 kHz(默认低频档,V4.26) | 黄灯**一长一短**(g_coil_fault=1)/ 持续监视 1s 防抖 |
|
| 电感量不合理(L偏大) | 空场 f 持续 < 20 kHz(默认低频档,V4.26) | 黄灯**一长一短**(g_coil_fault=1)/ 持续监视 1s 防抖 |
|
||||||
| 电感量不合理(L偏小) | 空场 f 持续 > 120 kHz | 黄灯**一长一短**(g_coil_fault=2)/ 持续监视 1s 防抖 |
|
| 电感量不合理(L偏小) | 空场 f 持续 > 92 kHz | 黄灯**一长一短**(g_coil_fault=2)/ 持续监视 1s 防抖 |
|
||||||
|
|
||||||
### 10.2 黄灯编码设计
|
### 10.2 黄灯编码设计
|
||||||
|
|
||||||
断开次数编码提供了比 TLD-110 的均匀闪烁更丰富的诊断信息:
|
断开次数编码提供了比 TLD-110 的均匀闪烁更丰富的诊断信息:
|
||||||
- **快闪=当前故障** → 现场立即处理
|
- **快闪=当前故障** → 现场立即处理
|
||||||
- **N短闪=历史故障** → 判断是偶发还是持续问题
|
- **N短闪=历史故障** → 判断是偶发还是持续问题
|
||||||
- **一长一短=线圈电感量不合理**(V4.26):空场频率出 20~120kHz 窗(默认低频档);用标定线圈实测后微调阈值
|
- **一长一短=线圈电感量不合理**(V4.26/V4.33):空场频率出 20~92kHz 窗(默认低频档;V4.33 上限 120→92,压低 33nF 档高 f 线圈误报风险);用标定线圈实测后微调阈值
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -777,3 +777,4 @@ DLD154V4B V1.4 起实现该专利的整数化版本,用于大车通行时的
|
|||||||
| V2.9 | 2026-09-03 | 更新至 V4.30:故障补偿时序 预判 5s→3s(300)/补偿 10s→8s(800)/恢复确认 5s→2s(200),总恢复 ~16s |
|
| V2.9 | 2026-09-03 | 更新至 V4.30:故障补偿时序 预判 5s→3s(300)/补偿 10s→8s(800)/恢复确认 5s→2s(200),总恢复 ~16s |
|
||||||
| V2.10 | 2026-09-03 | 更新至 V4.31:预判 3s→2s(200)/补偿 8s→7s(700),总恢复 ~16s→~15s |
|
| V2.10 | 2026-09-03 | 更新至 V4.31:预判 3s→2s(200)/补偿 8s→7s(700),总恢复 ~16s→~15s |
|
||||||
| V2.11 | 2026-09-03 | 更新至 V4.32:黄灯一长一短模式时序 200/100/100/800ms → 300/100/100/700ms(dur[4]={60,20,20,140}) |
|
| V2.11 | 2026-09-03 | 更新至 V4.32:黄灯一长一短模式时序 200/100/100/800ms → 300/100/100/700ms(dur[4]={60,20,20,140}) |
|
||||||
|
| V2.12 | 2026-09-03 | 更新至 V4.33:线圈频率合理窗上限 COIL_F_OK_MAX_KHZ 120→92kHz(>92k → L偏小告警) |
|
||||||
|
|||||||
@@ -2,8 +2,8 @@
|
|||||||
* test_coil_range.c — 线圈电感量合理范围监视 gcc 隔离单测 (DLD154V4B V4.26)
|
* test_coil_range.c — 线圈电感量合理范围监视 gcc 隔离单测 (DLD154V4B V4.26)
|
||||||
*
|
*
|
||||||
* 验证对象: TaskLoop.c coil_monitor() (V4.26 拍板规格)
|
* 验证对象: TaskLoop.c coil_monitor() (V4.26 拍板规格)
|
||||||
* 默认低频档口径: 空场频率合理窗 20~120kHz, 出界即判定电感量不合理
|
* 默认低频档口径: 空场频率合理窗 20~92kHz, 出界即判定电感量不合理
|
||||||
* g_coil_fault: 0=正常 1=L偏大(f<20kHz) 2=L偏小(f>120kHz)
|
* g_coil_fault: 0=正常 1=L偏大(f<20kHz) 2=L偏小(f>92kHz)
|
||||||
* 防抖: 越界/恢复均连续 100tick(=1s) 才置位/清除 (调用点=稳定无车空闲)
|
* 防抖: 越界/恢复均连续 100tick(=1s) 才置位/清除 (调用点=稳定无车空闲)
|
||||||
*
|
*
|
||||||
* 镜像宏与固件一致 (改 COIL_* 时同步此处!)
|
* 镜像宏与固件一致 (改 COIL_* 时同步此处!)
|
||||||
@@ -14,7 +14,7 @@
|
|||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
#define COIL_F_OK_MIN_KHZ 20
|
#define COIL_F_OK_MIN_KHZ 20
|
||||||
#define COIL_F_OK_MAX_KHZ 120
|
#define COIL_F_OK_MAX_KHZ 92
|
||||||
#define COIL_DEF_C_NF 66
|
#define COIL_DEF_C_NF 66
|
||||||
|
|
||||||
static uint8_t g_coil_fault = 0;
|
static uint8_t g_coil_fault = 0;
|
||||||
@@ -86,11 +86,11 @@ static void test_boundaries(void)
|
|||||||
{
|
{
|
||||||
g_coil_fault = 0; g_coil_bad_cnt = 0;
|
g_coil_fault = 0; g_coil_bad_cnt = 0;
|
||||||
run_ticks(19, 100); assert(g_coil_fault == 1); /* 19 → 偏大 */
|
run_ticks(19, 100); assert(g_coil_fault == 1); /* 19 → 偏大 */
|
||||||
run_ticks(62, 100); assert(g_coil_fault == 0); /* 20~120 正常 */
|
run_ticks(62, 100); assert(g_coil_fault == 0); /* 20~92 正常 */
|
||||||
run_ticks(20, 100); assert(g_coil_fault == 0); /* 边界 20 正常 */
|
run_ticks(20, 100); assert(g_coil_fault == 0); /* 边界 20 正常 */
|
||||||
run_ticks(120, 100); assert(g_coil_fault == 0); /* 边界 120 正常 */
|
run_ticks(92, 100); assert(g_coil_fault == 0); /* 边界 92 正常 */
|
||||||
run_ticks(121, 100); assert(g_coil_fault == 2); /* 121 → 偏小 */
|
run_ticks(93, 100); assert(g_coil_fault == 2); /* 93 → 偏小 */
|
||||||
printf("4. 边界 19/20/120/121 OK\n");
|
printf("4. 边界 19/20/92/93 OK\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void test_jitter_no_alarm(void)
|
static void test_jitter_no_alarm(void)
|
||||||
@@ -111,6 +111,6 @@ int main(void)
|
|||||||
test_recover();
|
test_recover();
|
||||||
test_boundaries();
|
test_boundaries();
|
||||||
test_jitter_no_alarm();
|
test_jitter_no_alarm();
|
||||||
printf("\nALL PASS (窗口 20~120kHz, 防抖 1s)\n");
|
printf("\nALL PASS (窗口 20~92kHz, 防抖 1s)\n");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -49,7 +49,7 @@
|
|||||||
#define ENV_WARN_WAIT 200 // 环境预判 (V4.31): dev>+4dlt 高位连续 ~2s → 黄灯预判锁存(回摆保持)
|
#define ENV_WARN_WAIT 200 // 环境预判 (V4.31): dev>+4dlt 高位连续 ~2s → 黄灯预判锁存(回摆保持)
|
||||||
#define ENV_RECOVER_WAIT 200 // 恢复确认 (V4.31): 新基线替换后 环境空闲连续 ~2s 才解除预判, 黄灯灭
|
#define ENV_RECOVER_WAIT 200 // 恢复确认 (V4.31): 新基线替换后 环境空闲连续 ~2s 才解除预判, 黄灯灭
|
||||||
#define COIL_F_OK_MIN_KHZ 20 // 线圈频率合理窗 (V4.26): 默认低频档口径, <20kHz → L偏大
|
#define COIL_F_OK_MIN_KHZ 20 // 线圈频率合理窗 (V4.26): 默认低频档口径, <20kHz → L偏大
|
||||||
#define COIL_F_OK_MAX_KHZ 120 // 线圈频率合理窗 (V4.26): >120kHz → L偏小
|
#define COIL_F_OK_MAX_KHZ 92 // 线圈频率合理窗 (V4.32): >92kHz → L偏小 (原120)
|
||||||
#define COIL_CAL_C_NF 68 // 标定等效谐振电容 nF (V4.29): 0Ω板 低频档(66nF名义)实测 C_eff=68.1~68.9 (均值68.4)
|
#define COIL_CAL_C_NF 68 // 标定等效谐振电容 nF (V4.29): 0Ω板 低频档(66nF名义)实测 C_eff=68.1~68.9 (均值68.4)
|
||||||
// 旧43 = 5.1K电阻旧板带病特性(三极管开关未饱和导通, 第二颗33nF未全量并入), 作废
|
// 旧43 = 5.1K电阻旧板带病特性(三极管开关未饱和导通, 第二颗33nF未全量并入), 作废
|
||||||
#define COIL_CAL_C_NF_33 34 // 高频档(33nF名义)标定值: 实测 C_eff≈34.4 (33.8~35.0, 3组) — 用33nF档时改 COIL_CAL_C_NF 为34
|
#define COIL_CAL_C_NF_33 34 // 高频档(33nF名义)标定值: 实测 C_eff≈34.4 (33.8~35.0, 3组) — 用33nF档时改 COIL_CAL_C_NF 为34
|
||||||
|
|||||||
@@ -14,10 +14,10 @@
|
|||||||
#define __CMCNG_H__
|
#define __CMCNG_H__
|
||||||
|
|
||||||
#define PRODUCT_MODEL "DLD154"
|
#define PRODUCT_MODEL "DLD154"
|
||||||
#define FIRMWARE_VER "4.32"
|
#define FIRMWARE_VER "4.33"
|
||||||
#define HARDWARE_VER "3.00"
|
#define HARDWARE_VER "3.00"
|
||||||
#define FIRMWARE_VER_MAIN 4
|
#define FIRMWARE_VER_MAIN 4
|
||||||
#define FIRMWARE_VER_SUB 32
|
#define FIRMWARE_VER_SUB 33
|
||||||
#define HARDWARE_VER_MAIN 3
|
#define HARDWARE_VER_MAIN 3
|
||||||
#define HARDWARE_VER_SUB 0
|
#define HARDWARE_VER_SUB 0
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user