diff --git a/docs/rs485-modbus-protocol.md b/docs/rs485-modbus-protocol.md index 00f8059..8853d63 100644 --- a/docs/rs485-modbus-protocol.md +++ b/docs/rs485-modbus-protocol.md @@ -1,6 +1,6 @@ # DLD154Pro RS485 Modbus RTU 协议 -> 版本: V1.6 | 日期: 2026-07-30 | 状态: 定稿(待编码实现) +> 版本: V1.7 | 日期: 2026-07-31 | 状态: 已实现 > > 适用产品: DLD154Pro (CH591R, 单路线圈车检器) > @@ -143,8 +143,9 @@ | 0x000B | Opto Func | 0–1 | 0 | **R** | 光耦功能: 0=雷达输入, 1=复位 | | 0x0010 | Auto Rpt Enable | 0–1 | 0 | R/W | 全数据主动上报: 0=关闭, 1=使能(见 §4.9) | | 0x0011 | Active Thr | 0–65535 | 10 | R/W | 活动状态阈值: |Variation| ≥ 该值时进入活动上报速率 (150ms) | +| 0x0012 | System Cmd | — | — | **W** | 系统指令: 写 `0x2C2C` 触发 MCU 全复位 (等效 700BS 0x2C, 见 §4.7) | | 0x00FE | Init Flag Clear | 0–1 | — | **W** | 写 1 清零 Init Flag (DI 0x0008) | -| 0x00FF | Device Reset | — | — | **W** | 写入 `0x5A5A` 触发复位初始化线圈(等效 700BS 0x2C) | +| 0x00FF | Device Reset (已废弃) | — | — | **W** | ⚠ V1.7 废弃, 请使用 HR 0x0012=0x2C2C | > **只读寄存器 (0x0005–0x0008, 0x000B)**:写操作返回异常 0x02(Illegal Data Address)。 > **写入寄存器 (0x00FE, 0x00FF)**:只写不读。读返回 0x0000。写入非魔数值返回异常 0x03。 @@ -221,14 +222,15 @@ <<< 01 86 03 02 63 (异常: 功能码 0x86, 异常码 0x03=Illegal Data Value) ``` -### 4.7 触发设备复位 — 写 HR 0x00FF +### 4.7 触发设备复位 — 写 HR 0x0012 ``` ->>> 01 06 00 FF 5A 5A xx xx (写 0x00FF=0x5A5A, 触发复位) -<<< 01 06 00 FF 5A 5A xx xx (回显, 随后设备复位) +>>> 01 06 00 12 2C 2C xx xx (写 0x0012=0x2C2C, 触发 MCU 全复位) +<<< 01 06 00 12 2C 2C xx xx (回显, 随后设备复位) ``` -> 复位后设备重新初始化线圈基线,Init Flag (DI 0x0008) 置 1。 +> 复位后 MCU 完全重启,重新初始化线圈基线,Init Flag (DI 0x0008) 置 1。 +> 对齐 700BS 0x2C 命令行为:直接调用 `SYS_ResetExecute()`。 ### 4.8 清除 Init Flag — 写 HR 0x00FE @@ -453,7 +455,7 @@ DLD154Pro RS485 同时支持 700BS 协议(`g_fm_700bs_disable=0`)和 Modbus | 0xFA 查询状态 | bit7=有车 | DI 0x0000 Car Present | ✅ | | | bit5=线圈故障 | DI 0x0001 Loop Fault | ✅ | | 0x1B 查询频率 | 3 字节 Freq | IR 0x0000–01 Freq (32bit) | ✅ | -| 0x2C 复位 | — | **HR 0x00FF** 写 0x5A5A | ✅ V1.2 新增 | +| 0x2C 复位 | — | **HR 0x0012** 写 0x2C2C | ✅ V1.7: MCU 全复位 (SYS_ResetExecute) | 0x3D 查拨码 | DIP1-5 | **IR 0x000C DIP Virtual** | ✅ V1.2 新增 (DLD154Pro 无物理拨码,虚拟映射) | | 0xAA 心跳 Init_B | A1=首次 | **DI 0x0008 Init Flag** | ✅ V1.2 新增 | | 0xAA 心跳 Fre_Err | bit0=下限异常 | **DI 0x0006 Freq Low Fault** | ✅ V1.2 新增 | @@ -470,6 +472,7 @@ DLD154Pro RS485 同时支持 700BS 协议(`g_fm_700bs_disable=0`)和 Modbus | 版本 | 日期 | 作者 | 变更 | |------|------|------|------| +| V1.7 | 2026-07-31 | wangfq | 复位指令重构: HR 0x00FF 废弃, 新增 HR 0x0012 (System Cmd); 写 0x2C2C 触发 `SYS_ResetExecute()` MCU 全复位 (对齐 700BS 0x2C 行为); 0x2C2C 对应 700BS CMD_RESET_INIT 的 0x2C; +§4.7 示例更新 | | V1.6 | 2026-07-30 | wangfq | 新增主动上报 & 全数据块: +IR 0x0100–0x0112 全数据块(19 reg, 含灵敏度/频率/融合模式/car_state/线圈/光耦/频率/CAPVD/Variation/断开计数/继电器计数/通过时间); +HR 0x0010 上报使能, +HR 0x0011 活动阈值; +§4.9–4.12 命令示例; +§6.7 主动上报机制(3 级速率: 空闲800ms/活动150ms/事件立即); 车间距/通过时间(10ms单位); 700BS 对照表更新 | | V1.5 | 2026-07-30 | wangfq | 枚举再次重排: 且后移 (0=或,1=混行,2=ETC,3=且,4=仅地感,5=仅光耦,6=复位); 模式号引用同步更新 | | V1.4 | 2026-07-29 | wangfq | 枚举重排: 融合模式值重新分配 (0=或,1=且,2=混行,3=ETC,4=仅地感,5=仅光耦,6=复位); 默认融合模式 0→4(仅地感); 修正所有示例和说明文本 |