# DLD960Loop 串口通信协议
# 1 通信说明
## 1.1 通信方式
串口通信,波特率:192000
# 2 协议格式
Package
| 1Byte | 3Bytes | 0~64Bytes | 2Bytes |
| --- | --- | --- | --- |
| Magic byte | Header | Value | Check Bytes |
## 2.1 Magic Byte(1Byte)
标识协议类型,也表示数据包开始信息。
| Magic Byte | 说明 |
| --- | --- |
| 0x7F | 屏、地感检测、探头的配置和查询协议,或者部分雷达的协议 |
| 0x8F | |
| 0x9F | OTA 用途 |
## 2.2 Header(3Bytes)
当Magic Byte为 0x7F时,Header字节定义如下:
| 1Byte | 1Byte | 1Byte |
| --- | --- | --- |
| Addr 地址 | LEN 数据长度 | CMD 命令字节 |
* Addr 默认0
* LEN数据长度,表示数据包的有效数据(Value)长度,包括命令(CMD Byte)和数据(Data Bytes);
* CMD 命令字节;
## 2.3 校验字节(Check Bytes:2Bytes)
当Magic Byte为0x7F时,校验字节实现如下:
| 1Byte | 1Byte |
| --- | --- |
| XOR 异或校验 | SUM 和校验 |
> XOR 异或校验,校验从Addr字节开始,到命令数据的最后一个字节结束;
> SUM 和校验,校验从Addr字节开始,到命令数据的最后一个字节结束。
# 3 Cmd详解
## 3.01 获取设备版本号(0x4A)
| | Header | Data |
| --- | --- | --- |
| **Value(Hex)** | 00 01 4A | |
| **Length** | 3 Byte | 0 Byte |
> eg: `7F 00 01 4A 4B 4B`
返回:
| | Header | Status + Hard\_Main + Hard\_Sub + Hard\_SSub + Soft\_Main + Soft\_Sub + Soft\_SSub |
| --- | --- | --- |
| **Value(Hex)** | 00 08 4A | xx |
| **Length** | 3 Byte | 7 Byte |
## 3.02 设备复位(0x6D)
| | Header | Data |
| --- | --- | --- |
| **Value(Hex)** | 00 01 6D | |
| **Length** | 3 Byte | 0 Byte |
设备无回复。
> eg: `7F 00 01 6D 6C 6E`
## 3.03 出厂初始化(0x92)
| | Header | Data |
| --- | --- | --- |
| **Value(Hex)** | 00 01 92 | |
| **Length** | 3 Byte | 0 Byte |
> eg: `7F 00 01 92 93 93`
返回:
| | Header | Data |
| --- | --- | --- |
| **Value(Hex)** | 00 02 92 | 00/01(00 success) |
| **Length** | 3 Byte | 1 Byte |
> eg: `7F 00 02 92 00 90 94`
## 3.04 读写线圈灵敏度列表(0x8A)
| | Header | R/W,Amount, (Amount \* (SensityIn + SensityOut)) |
| --- | --- | --- |
| **Value(Hex)** | ADDR xx 8A | xx |
| **Length** | 3 Byte | (1+ 1 + Amount \*(2 + 2 ))Byte |
> R/W: 1字节,0 Read, 1 Write
> Amount:1字节,灵敏度值的数量, 当R/W为 Write时有效,最小3
> SensityIn:两字节,触发灵敏度值,当R/W为 Write时有效
> SensityOut:两字节,释放灵敏度值,当R/W为 Write时有效
返回
| | Header | Ret,Amount, (Amount \* (SensityIn + SensityOut)) |
| --- | --- | --- |
| **Value(Hex)** | ADDR xx 8A | xx |
| **Length** | 3 Byte | (1+ 1 + Amount \*(2 + 2 ))Byte |
> Ret: 0x10 | R/W,如果是读指令,返回0x10,如果是写指令,返回0x11。
```python
7F 80 13 8A 10 04 A2 00 51 00 51 00 36 00 36 00 20 00 1C 00 12 00 81 2F
7F Magic Byte
80 Addr, 00/80 default
13 Len, 0x13=19字节(Cmd + Data)
8A Cmd
10 读指令返回
04 四级灵敏度(包括进入灵敏度 和 离开灵敏度,分别都是两个字节)
A2 00 51 00: 第0级灵敏度,0x00A2为进入 162,0x0051为离开 81
51 00 36 00:第1级灵敏度,0x0051为进入 81, 0x0036为离开 54
36 00 20 00:第2级灵敏度,0x0036为进入 54, 0x0020 为离开 32
1C 00 12 00:第3级灵敏度,0x001C为进入 28,0x0012 为离开 18
81 2F 校验码
```
## 3.05 设置车检器多路参数(0x63)
| | Header | AutoMode + Amount + Param\[Sensitivity, Loop_Delay, Output_Mode, Exist_Mode, Direction_Mode\] |
| --- | --- | --- |
| **Value(Hex)** | 00 xx 63 | xx |
| **Length** | 3 Byte | (2 + 5 \* Amount) Byte |
* AutoMode: 是否处于自动模式(自动调频),0表示不启用,默认0。
* Sensitivity: 低四位表示灵敏度,0~9级,值越大,灵敏度越高,默认7;高四位表示高低频,其中,\[4,5\]表示线圈的高低频。
* Loop\_Delay: 地感延时时间,0~200, 0.1s为一级,延时时间范围:\[0, 20秒\];
* Output\_Mode: 低三位有效,地感输出方式,0 - 存在输出,1-进入脉冲,2-离开脉冲,3-方向判别;高5位表示SafeMode:是否开启安全模式, 0 关闭,非 0 开启安全模式,分钟为单位。
* Exist\_Mode:低四位表示地感存在方式,0-永久存在,非0-有限存在的分钟数;
* Direction\_Mode:
* 低三位表示方向判别模式,0 表示触发模式, 1-6 表示方向判别的输出模式,对应以前的 0-5, update 2023-02-24;
* 高四位表示Function\_Mode,功能模式,是否启用特殊的模式
| | Header | Status |
| --- | --- | --- |
| **Value(Hex)** | 00 02 63 | 00/01 |
| **Length** | 3 Byte | 1 Byte |
## 3.06 读取车检器多路参数(0x64)
| | Header | Param |
| --- | --- | --- |
| **Value(Hex)** | 00 01 64 | |
| **Length** | 3 Byte | |
返回:
| | Header | AutoMode+Amount + Data\[Sensitivity, Loop_Delay, Output_Mode, Exist_Mode, Direction_Mode, freq1, freq2, freq3\] |
| --- | --- | --- |
| **Value(Hex)** | 00 xx 64 | XX |
| **Length** | 3 Byte | (2 + 8 \* Amount) Byte |
## 3.07 设备主动上报传感信息(0xC0)
设备主动上报传感信息指令,具体传感数据需要根据不同的类型进行解析。
| 7Fh | ADDR | Len | C0 | SensType(1Byte) | SubPkgFlag(1Byte) | SensData | XOR | SUM |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
SensType: 传感数据类型
SubPkgFlag: 分包标记 SubPkgFlag,高四位表示分包数量 SubAmount,低四位表示为当前分包中第几个分包 SubSequence,其中 SubSequence = \[1,SubAmount\]:
* 00 表示无分包,是一条数据完整的记录;
* 当SubAmount不为0时,SubSequence从1开始到SubAmount结束,整合为一条完整的数据包。
* 当SensType为0x05时,SubPkgFlag作为传感数据使用。
* 当SensType为0x06、0x07、0x09时,SubPkgFlag的Seq和SubAmount分开各用一个字节表示。
SensData:传感数据
| SensType | 类型说明 | SensData | 传感数据说明 |
| --- | --- | --- | --- |
| 0x0C | 多线圈传感信息 | | 四路线圈 |
| | | | |
上报线圈传感数据单元(多路线圈,每一路线圈单元的配置)
| 字段 | 字节数 | 内容 | 详情 |
| --- | --- | --- | --- |
| 配置 1 | 1 | freq\_level(2bit), Direction(1bit),freq\_type(1bit), sens(4bit) | 线圈 1 配置freq\_level:高低频,两个比特位,00 表示高频(33nF),01表示中高(43nF), 10表示中低(66nF), 11表示低频(76nF)。Direction: 0 表示触发,1 表示方向判别,freq\_type: 0 表示初始频率,1 表示当前实时频率。sens:低四位表示当前的灵敏度等级 |
| 线圈评估条件 | 1 | condition(4bit), loop\_state(1bit),
car\_state(1bit),
report\_msic(2bit) | loop\_condition 正常(0)有效,环境状态条件(环境状态评估值,值越大,干扰越大),高四位有效。低四位中 ,其中第3位表示线圈状态,0 表示正常,1 表示线圈断开;第 2 位表示有无车,0 表示无车,1 表示有车;低两位表示**杂项类型**,0b00表示时间量,0b01表示线圈断开次数;0b10表示车流量数;0b11表示继电器输出次数 |
| 频率 1 | 3 | frequent | 低字节在前 |
| 变化量 1 | 2 | variation | 低字节在前 |
| 杂项 | 4 | in\_out\_passtime/cut\_amount/flow\_amount | **杂项类型**,可能是时间量,也可能是线圈断开次数、车流量数,说明:
1、时间量有两种类型,通过时间或车间距,5ms为单位。通过时间是从有车开始到车辆离开的时间(上报时car\_state 为0);车间距是 从上一次车辆离开到有车时候的时间(上报时car\_state 为1)。非0有效。
2、线圈断开次数。
3、车流量数。
4、继电器输出次数。 |
eg:
`7F 00 2F C0 0C 00 12 00 2A 0F 01 07 00 00 00 00 00 D2 00 75 B7 00 01 00 00 00 00 00 12 00 EC 0C 01 02 00 00 00 00 00 92 00 83 C3 00 02 00 00 00 00 00 E2 34`
指令解释
```python
7F Magic Byte
00 Addr,0 default
2F Len, 0x2F=47个字节(Cmd + Data)
C0 Cmd
0C SensType,传感数据类型,0x0C为 多线圈传感信息,960Loop为 四路线圈车检器,会有4个传感数据单元
00 SubPkgFlag,分包标记,00 表示无分包,是一条数据完整的记录。
12 00 2A 0F 01 07 00 00 00 00 00:线圈1传感数据单元。0b00 高频,0b0 触发模式,0b1实时频率,0b0010 表示2级灵敏度;0b0000环境正常,0b0线圈正常,0b0当前无车,0b00 表示当前杂项参数为时间量;0x010F2A,频率为69418Hz;0x0007,变化量为7;0x00000000,时间量为为0
D2 00 75 B7 00 01 00 00 00 00 00:线圈2传感数据单元。0b11 低频,0b0 触发模式,0b1实时频率,0b0010 表示2级灵敏度;0b0000环境正常,0b0线圈正常,0b0当前无车,0b00 表示当前杂项参数为时间量;0x00B775,频率为46965Hz;0x0001,变化量为1;0x00000000,时间量为为0
12 00 EC 0C 01 02 00 00 00 00 00:线圈3传感数据单元。0b00 高频,0b0 触发模式,0b1实时频率,0b0010 表示2级灵敏度;0b0000环境正常,0b0线圈正常,0b0当前无车,0b00 表示当前杂项参数为时间量;0x010CEC,频率为68844Hz;0x0002,变化量为2;0x00000000,时间量为为0
92 00 83 C3 00 02 00 00 00 00 00:线圈4传感数据单元。0b10 中低,0b0 触发模式,0b1实时频率,0b0010 表示2级灵敏度;0b0000环境正常,0b0线圈正常,0b0当前无车,0b00 表示当前杂项参数为时间量;0x00C383,频率为50051Hz;0x0002,变化量为2;0x00000000,时间量为为0
E2 34 校验字节
```
**注意,如果有续包,最后一包上位机无返回**。中间续包上位机返回传感类型,当前收到包的序列和子包的数量:
| 7Fh | ADDR | 07 | C0 | SensType | Seq(1Byte) | SubAmount(1Byte) | XOR | SUM |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
---
# 修订记录
| 版本 | 修订时间 | 修订说明 | 修订人 |
| --- | --- | --- | --- |
| | | | |
| V1.00 | 2026-02-11 | 创建协议初始版本 | wangfq |
| V1.01 | 2026-06-22 | 补充遗漏的接口说明 | wangfq |
| V1.02 | 2026-07-02 | 查缺补漏,补充例程说明。 | wangfq |
| V1.03 | 2026-07-02 | 0x8A 响应格式 + LEN 计算修正 | wangfq |
| V1.04 | 2026-07-02 | 主动上报增加继电器输出次数 类型 | wangfq |