原则:代码未实现的功能,协议文档在相应指令旁如实标注"未实现",避免文档承诺≠固件实现。 - rs485-modbus-protocol.md V1.7→V1.8: §3.1 DI 0x0008 Init Flag 未实现(恒 0);§3.2 IR 0x0006/0x0007(Variation)/ 0x000A/0x000B/0x000C 未实现(改读全数据块 0x010A/0x010B);§3.3 保持寄存器 全部标注(FC 0x06 仅 0x0010/0x0011/0x0012 可写,0x00FE 无分支); §4.3/4.5/4.8 未实现横幅;§5 功能码矩阵 0x03/0x10/0x11 → ✗; §6.3 仅 0x06;§7 0x3D/Init_B 对照标注;§8 版本历史 V1.8 - rs485-700bs-protocol.md: §4.4 0x3D 未实现注记 + §5 速查表 + §6 兼容对照 - ble-protocol.md / product-manual.md / technical-spec.md: 版本 V3.04→V3.05 + 版本历史 - devlog.md: 置顶 2026-08-27 条目(减配清单 + 文档标注 + 保留能力 + 宏修复)
22 KiB
DLD154Pro 技术规格书
单路线圈蓝牙车辆检测器 | 固件版本: V3.05 | 硬件版本: 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 | — | 呼吸灯,低有效 |
| PA0–7 | — | — | — | — | — | 预留/未分配 |
3.2 无物理拨码开关
DLD154Pro 没有物理 DIP 开关。所有配置参数(灵敏度、输出模式、延时、协议选择等)通过 BLE 小程序 管理,持久化存储在 DataFlash 中。
| 配置项 | 管理方式 | Flash 地址 |
|---|---|---|
| 灵敏度等级 | BLE 小程序 | Loop_Cng_Unit.sensitvity |
| 输出模式 (0–6) | 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 关键常量
#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 滤波
#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/闪电尖峰:
#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 灵敏度表
// 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/√L,dT/T ≈ dL/(2L)。⚠ 第四档 (sens=14) 信噪比余量仅约 2:1(20°C 温漂 ≈0.1% 感量偏移),仅推荐摩托车/小型车辆检测场景,需确保线圈安装质量。
4.3.2 进入检测
#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:
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 跟踪规则
// 仅无车 → 跟踪基线
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% |
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_task(50ms 周期)。
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. 上电稳定期
#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 < Origin−dlt → VD_FLAG=1 ✓ |
| 有车 | 绿灯灭 | 车离开 | cnt_release→3 → VD_FLAG=0 ✓ |
| 无车 | 绿灯灭 | 车进入 | CAPVD < Origin−dlt → 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 |
| 地址范围 | 1–247 |
| 帧格式 | 主机 3 字节 (STX ADDR XOR), 从机 3–9 字节变长 |
| 心跳 | 空闲 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 |
| 从机地址 | 1–247 (默认 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.05 | 2026-08-27 | RS485 省 Flash 减配:Modbus FC 0x03(读保持寄存器)/0x10(批量写)/0x11(Report Slave ID)未实现;IR 0x0006/0x0007/0x000A/0x000B/0x000C 未实现(Variation 走全数据块 0x010A/0x010B);HR 0x0000–0x0004/0x0009/0x000A 读写未实现;FC 0x06 仅 0x0010/0x0011/0x0012 有效;700BS 0x3D 不响应。协议文档 rs485-modbus V1.8 / 700BS 同步标注。呼吸灯光耦加速步长 32→64;OTA 跳转前延时移除 |
| V3.04 | 2026-08-26 | 0x24 响应追加 LOOP_MEASURE_BASE 归一化基数(3B LE=524288,variation 换算 Δ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 |