Files
DLD154Pro/docs/technical-spec.md
T

575 lines
21 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# DLD154Pro 技术规格书
> 单路线圈蓝牙车辆检测器 | 固件版本: V3.04 | 硬件版本: V3.01
> 本文档面向工程开发、系统集成及故障深度分析
---
## 1. 系统架构
### 1.1 硬件架构
```
┌──────────────────────────────────────┐
线圈 ───────────────┤ PA9 (TMR0) CH591R (RISC-V) │
│ 输入捕获 60MHz / 28KB ├── PB22 (GPIO) ──── 绿灯
光耦 ───────────────┤ PB10 (GPIO) │
│ ├── PB23 (PWM11) ─── 红灯 (呼吸)
RS485 ──────────────┤ PA14 TX / PA15 RX / PA13 RE (UART0) │
│ ├── PA8 (GPIO) ──── 继电器 RLY1
BLE ────────────────┤ 2.4GHz 无线 │
│ ├── PA12 (GPIO) ──── 调频电容 (33nF)
└──────────────────────────────────────┘
```
### 1.2 软件架构
```
Main_Circulation (无 RTOS, 裸机轮询)
├── vd1_task() — 每 ~8.74ms 执行 (MEASUREMENT_BASE 测量窗)
│ ├── IIR 滤波 (ALFA_CAP1=79/256, τ≈24ms)
│ ├── 斜率限幅 (MAX_SLOPE_RATE=5%)
│ ├── 基线跟踪 (WINDOW_ORIGIN=500 滑动平均, ~4.4s)
│ ├── 进入确认 (ENTRY_CONFIRM=3 次)
│ ├── 离开检测 (滞回 + 平坦性三条件 CN200910309382)
│ └── 冻结超时恢复 (FREEZE_TIMEOUT=1000, ~8.7s + ±2% 稳定性检查)
├── TMR0 ISR — 线圈频率捕获 (下降沿→下降沿周期)
├── TMR1 ISR — 5ms 系统 tick (LED 驱动 + 继电器输出 + 光耦扫描)
├── opt_input_poll() — 光耦输入处理 (7 种输出模式融合)
├── rs485_700bs_poll() — RS485 700BS 从机协议
├── poll_dbn_ble() — BLE 命令处理
└── LEDB PWM 呼吸灯 (PWM11, 硬件自主)
```
---
## 2. 电气参数
| 参数 | 最小值 | 典型值 | 最大值 | 单位 | 备注 |
|------|--------|--------|--------|------|------|
| 供电电压 (VDD) | 10 | 12 / 24 | 30 | V | 宽压输入 |
| 功耗 | — | 0.5 | 2 | W | 含继电器吸合 + BLE |
| 工作温度 | -40 | — | +85 | °C | 工业级 |
| 存储温度 | -55 | — | +125 | °C | — |
| 线圈电感范围 | 50 | 200 | 1000 | μH | 超出范围可工作但精度下降 |
| 线圈频率范围 | 20 | 80 | 200 | kHz | 含 33nF 调频电容 |
| 线圈 Q 值 | 5 | — | — | — | 过低导致振荡不稳定 |
| 继电器触点电压 | — | — | 250 | VAC | 单刀双掷 (SPDT) |
| 继电器触点电流 | — | — | 3 | A | — |
| GPIO 输出电压 | 0 | 3.3 | 3.6 | V | CMOS 电平 |
| GPIO 输出电流 | — | — | 12 | mA | 单引脚最大 |
| BLE 工作频率 | — | 2.4 | — | GHz | BLE 4.2 |
| BLE 发射功率 | — | 0 | — | dBm | 典型 |
| ESD 防护 | ±2 | — | — | kV | HBM |
---
## 3. IO 引脚分配
### 3.1 完整引脚表
| 引脚 | 标识 | 功能 | 方向 | 外设 | 初始状态 | 备注 |
|------|------|------|------|------|---------|------|
| **PA9** | **LP** | **线圈频率捕获** | IN | **TMR0** | — | **核心输入,下降沿→下降沿** |
| PA8 | RLY1 | 继电器输出 | OUT | GPIO PP | 0 (释放) | 单刀双掷,低电平有效 |
| PA12 | FLEVEL | 线圈调频 | OUT | GPIO PP | L (33nF) | 0=接33nF(低频), 1=0nF(高频) |
| PA14 | UART0_TX | RS485 发送 | OUT | UART0 | — | 700BS / Modbus |
| PA15 | UART0_RX | RS485 接收 | IN | UART0 | — | 700BS / Modbus |
| PA13 | UART0_RE | RS485 方向控制 | OUT | GPIO PP | RX (接收) | 高=发送, 低=接收 |
| PB10 | IN_1 | 光耦输入 | IN | GPIO IN_PU | — | 外部雷达 / 复位信号 |
| PB22 | LEDA | 绿灯 | OUT | GPIO PP | 0 (灭) | 有车亮 / 无车灭,低有效 |
| PB23 | LEDB | 红灯 | ALT | PWM11 | — | 呼吸灯,低有效 |
| PA07 | — | — | — | — | — | 预留/未分配 |
### 3.2 无物理拨码开关
DLD154Pro **没有物理 DIP 开关**。所有配置参数(灵敏度、输出模式、延时、协议选择等)通过 **BLE 小程序** 管理,持久化存储在 DataFlash 中。
| 配置项 | 管理方式 | Flash 地址 |
|--------|---------|-----------|
| 灵敏度等级 | BLE 小程序 | Loop_Cng_Unit.sensitvity |
| 输出模式 (06) | BLE 小程序 | Loop_Cng_Unit.direction_mode[3:0] |
| 功能码 (协议/光耦功能) | BLE 小程序 | Loop_Cng_Unit.direction_mode[7:4] |
| 存在时间 (有限/永久) | BLE 小程序 | Loop_Cng_Unit.exist_mode |
| 离开延时 | BLE 小程序 | Loop_Cng_Unit.delay_time |
| 频率档位 (高/低) | BLE 小程序 | Loop_Cng_Unit.loopFreq_Level |
| RS485 地址 | BLE 小程序 | Addr_RS485_ID_Offset (0x14) |
| RS485 波特率 | BLE 小程序 | Addr_RS485_Baud_Offset (0x11) |
| 蓝牙空闲超时 | BLE 小程序 | ADDR_BT_Close_TIMEOUT_Offset (0x10) |
---
## 4. 检测算法
### 4.1 频率测量
#### 4.1.1 硬件链路
DLD154Pro **不使用** CD4060 外部分频芯片。线圈直接驱动 PA9 (TMR0),利用 CH591R 内置 TMR0 的下降沿→下降沿周期捕获。
| 对比项 | M1H/TLD-110 | DLD154V4B | DLD154Pro |
|--------|-------------|-----------|-----------|
| 外部分频 | CD4060 Pin5 (÷32) | **无(直连)** | **无(直连)** |
| MCU 内部分频 | 无 | TIM3 DIV_2 (÷2) | **TMR0 无分频** |
| 总分频比 | ÷32 | ÷2 | **÷1** |
| MCU 主频 | — | 120MHz | **60MHz** |
| MEASUREMENT_BASE | — | 131072 (2^17) | **524288 (2^19)** |
| 测量窗口 | — | ~2.2ms | **~8.74ms** |
> **设计要点**DLD154Pro 升高 MEASUREMENT_BASE 以补偿更低的主频和无内部分频,使归一化 Value ≈ 524288,保持与 DLD154V4B 一致的百分比阈值语义。
#### 4.1.2 捕获流程
```
线圈边沿 → PA9 (TMR0 下降沿→下降沿捕获)
TMR0 ISR:
CAPDAT = TMR0 捕获寄存器 (相邻下降沿周期)
Xn = CAPDAT (TMR0 直接给出,无需手动计算边沿差)
LPCNT = MEASUREMENT_BASE / Xn (自适应窗口)
CapSum += Xn
CapCnt++
CapCnt >= LPCNT ?
YES → Value = CapSum (≈ MEASUREMENT_BASE = 524288)
CapCnt = CapSum = 0
loop1_CAP_OK = 1 (通知 vd1_task)
```
#### 4.1.3 关键常量
```c
#define MEASUREMENT_BASE 524288L // 2^19
// 无内部分频 (TMR0 直读)
```
| 线圈频率 | Xn @60MHz | LPCNT | 测量窗口 | Value 范围 |
|---------|-----------|-------|---------|-----------|
| 50 kHz | 1200 | 436 | 8.7 ms | ~523200 |
| 80 kHz | 750 | 700 | 8.7 ms | ~525000 |
| 100 kHz | 600 | 873 | 8.7 ms | ~523800 |
| 150 kHz | 400 | 1310 | 8.7 ms | ~524000 |
| 200 kHz | 300 | 1747 | 8.7 ms | ~524100 |
> 自适应 LPCNT 使不同频率下 Value 归一化到 ~524288,百分比阈值直接适用,无需频率补偿。
### 4.2 IIR 滤波
```c
#define ALFA_CAP1 79 // IIR α = 79/256 ≈ 0.31 (@8.74ms → τ≈24ms)
// get_flt_value(): 一阶 IIR
CAPVD = (|Value - CAPVD| * ALFA_CAP1) >> 8
```
| 参数 | 值 | 说明 |
|------|-----|------|
| α | 79/256 ≈ 0.31 | 指数平滑系数 |
| τ | ~24ms @8.74ms tick | 3 次更新达 63% |
| 噪声抑制 | 良好 | 单次野值影响 < 31% |
**斜率限幅**:单次 Value 变化 >5% → 截断,过滤 EMI/闪电尖峰:
```c
#define MAX_SLOPE_RATE 5 // 单次最大变化 5%
int32_t raw_delta = (int32_t)Value - (int32_t)CAPVD;
int32_t max_step = (int32_t)(CAPVD * MAX_SLOPE_RATE / 100);
if (max_step < 100) max_step = 100; // 最小限幅防止锁死
// clamp: raw_delta ∈ [max_step, +max_step]
uint32_t clamped_value = CAPVD + raw_delta;
CAPVD = get_flt_value(clamped_value, CAPVD);
```
### 4.3 检测判据
#### 4.3.1 灵敏度表
```c
// 4 级灵敏度 (MAX_LOOP_SENS_AMOUNT=4)
const uint16_t SensTable[4] = {108, 54, 28, 14}; // 进入阈值
const uint16_t SensTable1[4] = { 81, 32, 16, 12}; // 离开阈值(滞回)
```
| 等级 | sens_in | ΔL/L 进入 | sens_out | ΔL/L 离开 | 迟滞比 | 适用场景 |
|------|---------|----------|----------|----------|--------|---------|
| 低 (0) | 108 | **0.330%** | 81 | **0.247%** | 1.33 | 大车 / 强干扰环境 |
| 中 (1) | 54 | **0.165%** | 32 | **0.098%** | 1.69 | 普通轿车(默认) |
| 高 (2) | 28 | **0.085%** | 16 | **0.049%** | 1.75 | 摩托车 / 安静环境 |
| 最高 (3) | 14 | **0.043%** | 12 | **0.037%** | 1.17 | 超高灵敏度 |
> **ΔL/L 换算**`ΔL/L_entry = 2 × sens_in / 65536`。物理依据:线圈振荡 f∝1/√LdT/T ≈ dL/(2L)。
>
> ⚠ 第四档 (sens=14) 信噪比余量仅约 2:120°C 温漂 ≈0.1% 感量偏移),仅推荐摩托车/小型车辆检测场景,需确保线圈安装质量。
#### 4.3.2 进入检测
```c
#define ENTRY_CONFIRM 3 // 连续 3 次低于阈值才判定有车
dlt_ORG = (Origin * SensTable[SENS]) >> 16; // = Origin × sens / 65536
if (CAPVD < Origin - dlt_ORG) {
if (++loop1_entry_cnt >= ENTRY_CONFIRM) {
loop1_VD_FLAG = 1; loop1_FLAG_IN = 1;
loop1_entry_cnt = 0;
}
} else {
loop1_entry_cnt = 0; // 恢复则重置
}
```
**进入响应时间**3 次确认 × 8.74ms + 500ms IN_DELAY = **~530ms**。
#### 4.3.3 离开检测(滞回 + 平坦性)
##### 离开滞回
有车状态下,使用更小的离开阈值 `SensTable1`
```c
dlt_ORG = (Origin * SensTable1[SENS]) >> 16;
if (CAPVD > Origin - dlt_ORG) { // 高于离开阈值
if (++loop1_cnt_release >= 3) { // 连续 3 次确认
loop_release_common(); // VD_FLAG=0, FLAG_OUT=1
}
} else {
loop1_cnt_release = 0; // 回落立即重置
}
```
##### 平坦性离开判定(专利 CN200910309382
基于**中山大学专利**,解决大车通行时频率多峰导致的多次误触发。三条件同时满足才判定离开:
```
① |f f_b| < dlt_ORG (频率回归基频)
② |f'| < Δ2 (一阶导数近零,Δ2 = max_slope / K1
③ |f''| < Δ3 (二阶导数近零,Δ3 = max_slope_rate / K2
```
Δ2、Δ3 从车辆进入后的**第一上升坡面**动态计算(避免固定阈值的不适应性)。
| 常量 | 值 | 含义 |
|------|-----|------|
| K1, K2 | 8 | 动态阈值除数(专利推荐值) |
| FLAT_CONFIRM_CNT | 3 | 平坦确认次数 |
> 算法源码位于 `peripheral_main.c:vd1_task()`,编译宏 `USE_FLATNESS_EXIT` 控制。
### 4.4 基线跟踪
#### 4.4.1 跟踪规则
```c
// 仅无车 → 跟踪基线
if (!loop1_VD_FLAG) {
int32_t dev = CAPVD - Origin;
if (dev < dlt_ORG * 4) {
// CAPVD 未显著偏离 → 正常跟踪
loop1_freeze_cnt = 0;
update_moving_average(&ORG_SUM, &ORG_CNT, &Origin, CAPVD, WINDOW_ORIGIN);
}
// 偏离 > 4× 阈值 → 冻结 + 超时恢复(见 4.4.3)
}
// 有车时冻结基线 (仿 TLD-110)
```
#### 4.4.2 两阶段基线更新
| 阶段 | 窗口 | 周期 | 用途 |
|------|------|------|------|
| 稳定期 (`!g_loop_stable`) | 100 | **~0.9s** | 绕过 IIR/限幅,快速收敛 |
| 正常运行 | 500 (WINDOW_ORIGIN) | **~4.4s** | 强噪声抑制,稳定跟踪 |
稳定期 CAPVD 直接赋值为 raw Value(不经过 IIR),实现开机 ~1.1s 内基线就绪。
#### 4.4.3 冻结超时恢复
| 常量 | 值 | 说明 |
|------|-----|------|
| 冻结触发阈值 | dlt_ORG × 4 | CAPVD 偏离 Origin 的倍数 |
| FREEZE_TIMEOUT | 1000 | ~8.7s (1000 × 8.74ms) |
| FREEZE_STABILITY_RATE | 2 | 稳定性窗口:参考值的 ±2% |
```c
if (dev < dlt_ORG * 4) {
/* 正常范围: 跟踪 + 清零冻结 */
loop1_freeze_cnt = 0;
update_moving_average(...);
} else {
/* 异常偏高: 冻结 + 稳定性验证 */
if (loop1_freeze_cnt == 0)
loop1_freeze_ref = CAPVD; // 记录冻结起始值
else if (|CAPVD - freeze_ref| > freeze_ref * 2 / 100)
reset(freeze_cnt, freeze_ref); // 波动 >±2% → 重新计时
if (++loop1_freeze_cnt >= FREEZE_TIMEOUT) { // 8.7s 连续稳定
Origin = CAPVD; // 接受为新基线
}
}
```
---
## 5. 时序状态机
### 5.1 状态转移
```
IN_DELAY=10(500ms) OUT_DELAY(delay_time×100ms)
[空闲] ──有车──→ [进入延时] ──超时──→ [有车确认] ──车辆离开──→ [离开延时]
↑ │
│ ┌────────────┘
└──脉冲结束───── [脉冲输出] ←──超时── [离开延时] ←──────────────┘
PLUSE_DELAY=10(500ms)
```
### 5.2 时序参数
| 参数 | Tick (50ms) | 时间 | 说明 |
|------|------------|------|------|
| IN_DELAY | 10 | **500 ms** | 进入确认防抖 |
| OUT_DELAY | delay_time × 2 | **可配** | 离开延时 (delay_time=5 → 500ms) |
| PLUSE_DELAY | 10 | **500 ms** | 脉冲输出宽度 |
| HOLD_TIME | exist_mode × 20 × 5 | **可配** | 有限存在超时 (exist_mode × 5s) |
| LC_HOLD_TIME | 4 × 1200 | **~4 min** | 安全复位超时 |
| STABLE_SAMPLES | 128 tick | **~1.1 s** | 上电稳定期 |
| FREEZE_TIMEOUT | 1000 | **~8.7 s** | 基线冻结超时 |
> **Tick 来源**TMR1 每 5ms 中断一次,`TM1cnt` 计数到 10 后触发 vd1_task50ms 周期)。
### 5.3 输出模式 (脉冲/存在)
DLD154Pro 仅一个继电器,支持存在输出和脉冲输出两种模式:
| 模式 | output_mode 值 | 行为 |
|------|---------------|------|
| 存在输出 | 0 | 有车持续吸合,离开后延时释放 |
| 进入脉冲 | 1 | 确认有车→吸合 500ms→释放 |
| 离开脉冲 | 2 | 车辆离开+延时→吸合 500ms→释放 |
---
## 6. 输出融合模式
### 6.1 7 种融合模式
DLD154Pro 支持通过光耦输入 (PB10) 接入外部雷达/车检器信号,并按融合模式组合继电器输出。
| 模式值 | 名称 | 继电器吸合条件 | 适用场景 |
|--------|------|--------------|---------|
| 0 | 地感**或**光耦 | coil OR opto | 互补冗余,任一触发即吸合(默认) |
| 1 | 人车混行防砸 | 有车后 coil OR opto,离场 3s 窗口内光耦有效 | 混合交通流防砸人 |
| 2 | ETC 模式 | 有车后 coil OR opto,光耦断开 500ms 防抖才释放 | ETC 专用 |
| 3 | 地感**且**光耦 | coil AND opto | 双确认,防地感误触 |
| 4 | 仅地感 | 线圈有车 | 纯线圈场景 |
| 5 | 仅光耦 | 光耦输入有效 | 纯雷达,地感只做背景监控 |
| 6 | 光耦复位 | 仅地感(光耦用于远程复位) | 带远程复位功能 |
### 6.2 人车混行防砸 (模式 1) 状态机
```
IDLE (仅线圈检测)
│ 线圈检测到车
ARMED (线圈 || 光耦)
│ 两者均释放
WINDOW (3s 防砸窗口)
│ 光耦触发 → 继电器吸合,窗口复位
│ 线圈上线 → 回到 ARMED
│ 3s 超时无触发 → 回到 IDLE,落杆
```
### 6.3 ETC 模式 (模式 2) 状态机
```
IDLE (仅线圈检测)
│ 线圈检测到车
ARMED (线圈 || 光耦)
│ 两者均释放
DEBOUNCE (500ms 防抖)
│ 线圈/光耦重新触发 → 回到 ARMED
│ 500ms 超时 → 回到 IDLE,落杆
```
### 6.4 光耦防抖
所有非复位模式共用 3 样本多数表决消抖(等效 ~30ms),防止光耦信号抖动。
---
## 7. 指示灯状态机
### 7.1 驱动架构
```
TMR1 ISR (每 5ms)
├── 红灯 PB23 — PWM11 呼吸(硬件自主,~1.9s 周期)
├── 绿灯 PB22 — 有车亮 / 无车灭 / 稳定期慢闪 200ms
└── (无黄灯 — Pro 采用双色 LED 方案)
```
### 7.2 绿灯行为表
| 状态 | 绿灯行为 | 说明 |
|------|---------|------|
| 上电初始化/稳定期 | **慢闪** (200ms 亮/200ms 灭) | 基线学习中 |
| 线圈断开 | **灭** | 等待恢复 |
| 正常运行,无车 | **灭** | 就绪 |
| 正常运行,有车 | **亮** | 车辆检测中 |
| 光耦参与模式 (非 LOOP_ONLY/LOOP_X_RESET) | 跟随 `relay1_state` | 与实际继电器状态一致 |
### 7.3 红灯行为
呼吸灯 (PWM11),始终运行,指示系统正常工作。**非复位模式下光耦有信号时加速至 ~0.5s 周期**(DUTY_STEP=32),便于现场判断光耦输入是否正常。无光耦信号时 ~1.9s 周期(DUTY_STEP=8)。
---
## 8. 上电稳定期
```c
#define STABLE_SAMPLES 128 // ~1.1s (@8.74ms × 128)
if (!g_loop_stable) {
loop1_CAPVD = loop1_Value; // 绕过 IIR,直接赋值
update_moving_average(..., 100); // 小窗口快速收敛
loop1_stable_cnt++;
if (loop1_stable_cnt >= STABLE_SAMPLES)
g_loop_stable = 1; // 启用检测
return; // 跳过进入/离开判断
}
```
稳定期间绕过 IIR 和斜率限幅,用 100 窗口快速建立基线。绿灯持续慢闪。
---
## 9. 线圈故障处理
### 9.1 断开/重连状态保持
| 断开前 | 断开期间 | 重连后 | 检测结果 |
|--------|---------|--------|---------|
| 有车 | 绿灯灭,继电器释放 | 车还在 | CAPVD < Origindlt → VD_FLAG=1 ✓ |
| 有车 | 绿灯灭 | 车离开 | cnt_release→3 → VD_FLAG=0 ✓ |
| 无车 | 绿灯灭 | 车进入 | CAPVD < Origindlt → VD_FLAG=1 ✓ |
断开时保留 `VD_FLAG`,仅关断继电器。重连时 `CAPVD=0` 触发首个样本直锁 Value,跳过 IIR 预热。
### 9.2 有限存在超时
`hold_time > 0` 时,有车超过指定时间 → 整通道复位重建基线(等效安全复位),而非简单 FLAG_OUT。
---
## 10. 通信协议
### 10.1 接口总览
| 接口 | 物理层 | 协议 | 用途 |
|------|--------|------|------|
| BLE | 2.4GHz | DBN BLE 私有协议 | 参数配置 + 主动上报 |
| RS485 | UART0 半双工 | 700BS / Modbus RTU | 工业总线接入 |
### 10.2 BLE 协议
**帧格式**
```
Magic | Addr/Sub | Len | CMD | Data | XOR | SUM
1B | 1B | 1B | 1B | xx | 1B | 1B
```
**主要命令**
| 命令码 | 功能 |
|--------|------|
| 0x10 | 获取设备信息 |
| 0x23 | 设置车检器参数 |
| 0x24 | 读取车检器参数 |
| 0x31 | 读写 RS485 波特率/地址/蓝牙超时 |
| 0x8A | 读写灵敏度列表 |
| 0xC0 | 设备主动上报传感信息 |
| 0xC5 | 主动上报使能配置 |
| 0x6D | 设备复位 |
### 10.3 RS485 700BS 协议
| 参数 | 值 |
|------|-----|
| 波特率 | 9600 (默认) |
| 数据位 | 8N1 |
| 地址范围 | 1247 |
| 帧格式 | 主机 3 字节 (STX ADDR XOR), 从机 39 字节变长 |
| 心跳 | 空闲 5s / 故障(线圈断开) 1s / 事件(car_state 翻转)立即 |
**命令集**
| 命令 | 功能 | 回复 |
|------|------|------|
| 0xFA | 查询有车+线圈状态 | F5 DATA XOR |
| 0x1B | 查询线圈频率 | 14 Fre1-3 ADDR XOR |
| 0x2C | 复位初始化线圈 | 无回复 |
| 0x3D | 查询虚拟拨码 (DIP1-5) | 32 DATA ADDR XOR |
> DLD154Pro 无物理拨码,0x3D 返回 BLE 配置的等效值。
### 10.4 RS485 Modbus RTU 协议
| 参数 | 值 |
|------|-----|
| 波特率 | 9600 (默认), 可配 19200/38400/57600/115200 |
| 数据位 | 8N1 |
| 从机地址 | 1247 (默认 1) |
| 支持功能码 | 0x02 (DI), 0x03 (HR), 0x04 (IR), 0x06 (写单), 0x10 (写多), 0x11 (报告 ID) |
| 协议选择 | `g_function_mode` bit0 (BLE 设置) |
> 详细寄存器映射见 `docs/rs485-modbus-protocol.md`。RS485 地址/波特率在 Modbus 侧只读,通过 BLE 小程序修改。
---
## 11. Flash 存储布局
| 地址 | 宏 | 大小 | 内容 |
|------|-----|------|------|
| 0x00 | — | 4B | 魔数 (0x33 0xBB 0xC3 0x3C) |
| 0x04 | — | 7B | Loop_Cng_Unit 参数 |
| 0x10 | ADDR_BT_Close_TIMEOUT_Offset | 1B | 蓝牙空闲超时 (分钟) |
| 0x11 | Addr_RS485_Baud_Offset | 3B | RS485 波特率 (LE32) |
| 0x14 | Addr_RS485_ID_Offset | 1B | RS485 从机地址 |
| 0x20 | Addr_Sens_Array_In | 16B | 灵敏度进入阈值 (4×uint16\_t LE) |
| 0x30 | Addr_Sens_Array_Out | 16B | 灵敏度离开阈值 (4×uint16\_t LE) |
出厂默认:灵敏度=中(1),存在模式,延时=500ms,高频,RS485 ID=1,波特率=9600,蓝牙超时=0(不关闭)。
---
## 12. 版本历史
| 版本 | 日期 | 说明 |
|------|------|------|
| V3.04 | 2026-08-26 | 0x24 响应追加 LOOP_MEASURE_BASE 归一化基数(3B LE=524288variation 换算 ΔL/L 用);断开次数语义明确为上电持续累计 |
| V3.03 | 2026-07-31 | 硬件看门狗 WWDG (~558ms 超时, 5ms tick + 500ms 喂狗)OTA 安全关闭看门狗 |
| V3.02 | 2026-07-31 | Modbus RTU 协议 + 主动上报;0x2C/HR 0x0012 复位改为 `SYS_ResetExecute()``g_loop_cut_amount` 累加修复;RS485 初始化时序调整 |
| V3.01 | 2026-07-28 | 光耦输出模式完整实现 (6 种融合逻辑 + 状态机);LEDA 同步继电器状态 |
| V3.00 | 2026-07-21 | 项目初始化:从 DLD110SV4 复制基线 + 硬件适配 (CH591R) |
---
## 13. 相关文档
| 文档 | 路径 |
|------|------|
| 产品说明书 | `docs/product-manual.md` |
| 硬件资源说明 | `docs/DLD154Pro硬件资源.md` |
| RS485 700BS 协议 | `docs/rs485-700bs-protocol.md` |
| RS485 Modbus 协议 | `docs/rs485-modbus-protocol.md` |
| 开发日志 | `docs/devlog.md` |