# DLD960 串口通信协议 # 1 通信说明 ## 1.1 通信方式 串口通信,波特率:115200 # 2 协议格式 Package | 1Byte | 3Bytes | 0~64Bytes | 2Bytes | | --- | --- | --- | --- | | Magic byte | Header | Value | Check Bytes | ## 2.1 Magic Byte(1Byte) 标识协议类型,也表示数据包开始信息。 | Magic Byte | 说明 | | --- | --- | | 0x7F | 屏、地感检测、探头的配置和查询协议,或者部分雷达的协议 | | 0x8F | 支持DBN查询和配置的专有协议 | ## 2.2 Header(3Bytes) 当Magic Byte为 0x7F时,Header字节定义如下: | 1Byte | 1Byte | 1Byte | | --- | --- | --- | | Addr 地址 | LEN 数据长度 | CMD 命令字节 | * LEN数据长度,表示数据包的有效数据(Value)长度,包括命令(CMD Byte)和数据(Data Bytes); * CMD 命令字节; * 该协议的详细说明参考《DCP101点阵驱动说明》以及相关的地感检测485协议 当Magic Byte为0x8F时,Header字节定义如下: | 1Byte | 1Byte | 1Byte | | --- | --- | --- | | SubPkgFlag 分包标记 | LEN 数据长度 | CMD 命令字节 | > 分包标记 SubPkgFlag,高四位表示分包数量SubAmount,低四位表示为当前分包中第几个分包SubSequence,其中SubSequence = [1,SubAmount]: * 00表示无分包,是一条数据完整的记录; * 当SubAmount不为0时,SubSequence从1开始到SubAmount结束,整合为一条完整的数据包。 ## 2.3 校验字节(Check Bytes:2Bytes) 当Magic Byte为0x7F时,校验字节实现参考《DCP101点阵驱动说明》《DPG100 485通信协议》 和相关的地感检测485协议说明,部分雷探头的协议也需要支持0x7F。 当Magic Byte为0x8F时,校验字节实现如下: | 1Byte | 1Byte | | --- | --- | | XOR 异或校验 | SUM 和校验 | > XOR 异或校验,校验从分包标记字节开始,到命令数据的最后一个字节结束; > SUM 和校验,校验从分包标记字节开始,到命令数据的最后一个字节结束。 # 3 Cmd详解 ## 3.1 更改设备序列码(0x09) | | Header | Dev_Serial | | --- | --- | --- | | **Value(Hex)** | 00 08 09 | xx | | **Length** | 3 Byte | 6 Byte | 返回: | | Header | status | | --- | --- | --- | | **Value(Hex)** | 00 01 11 | 00/01 | | **Length** | 3 Byte | 1 Byte | > **status**: 00 success, 01 fail ## 3.2 查询设备信息命令(0x10) | | Header | Data Value | | --- | --- | --- | | **Value(Hex)** | 00 01 10 | | | **Length** | 3 Byte | 0 Byte | 返回: | | Header | Dev_Serial | Hard Ver | Soft Ver | Model | Num | Sub_Code | Bus1 | Bus2 | Bus3 | Bus4 | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | **Value(Hex)** | 00 1C 10 | xx | 01 01 | 01 01 | xx | xx | xx | xx | xx | xx | xx | | **Length** | 3 Byte | 6 Byte | 2 Byte | 2 Byte | 7~10 Byte | 6 Byte | 2 Byte | 1 Byte | 1 Byte | 1 Byte | 1 Byte | | **Describe** | | 序列码 | 硬件版本号 | 软件版本号 | 产品型号 | 产品编码 | 子功能代码 | 总线1探头数 | 总线2 | 总线3 | 总线4 | > Model: 当首字节的值在[1,12]内时表示Mode的有效字节长度。 > Sub_Code: 表示子功能代码 `SUB_CODE`,各个比特位对应不同的子功能,0表示禁用,1表示启用 | [0] | [1] | [2] | [3] | [4] | [5] | [6] | [7] | | --- | --- | --- | --- | --- | --- | --- | --- | | net | iot | RFU | RFU | RFU | RFU | RFU | RFU | | 网络 | MQTT | | | | | | | | [8] | [9] | [10] | [11] | [12] | [13] | [14] | [15] | | --- | --- | --- | --- | --- | --- | --- | --- | | RFU | RFU | RFU | RFU | RFU | RFU | RFU | RFU | | | | | | | | | | ## 3.3 设置SSC网络配置(0x11) | | Header | Dev IP | Subnet Mask | Route IP | LSSC IP | DNS | Port | | --- | --- | --- | --- | --- | --- | --- | --- | | **Value(Hex)** | 00 19 11 | xx | xx | xx | xx | xx | xx | | **Length** | 3 Byte | 4 Byte | 4 Byte | 4 Byte | 4 Byte | 4 Byte | 10 Byte | 返回: | | Header | status | | --- | --- | --- | | **Value(Hex)** | 00 01 11 | 00/01 | | **Length** | 3 Byte | 1 Byte | > **status**: 00 success, 01 fail ## 3.4 查询SSC网络配置(0x12) | | Header | Data | | --- | --- | --- | | **Value(Hex)** | 00 01 12 | | | **Length** | 3 Byte | 0 Byte | 返回: | | Header | Dev IP | Subnet Mask | Route IP | LSSC IP | DNS | Port | | --- | --- | --- | --- | --- | --- | --- | --- | | **Value(Hex)** | 00 19 12 | xx | xx | xx | xx | xx | 00 | | **Length** | 3 Byte | 4 Byte | 4 Byte | 4 Byte | 4 Byte | 4 Byte | 10 Byte | ## 3.5 设置IoT网络配置(0x13) | | Header | IoT Host(Domain name/IP) + Port + ClientID + Username + Password | | --- | --- | --- | | **Value(Hex)** | xx xx 13 | xx 00 xx 00 xx 00 xx 00 xx | | **Length** | 3 Byte | xx Byte | > 注: * 数据部分的不同字段通过 0x00 分隔 * ClientID 为空时用一个空格符替代 返回: | | Header | Status | | --- | --- | --- | | **Value(Hex)** | 00 01 13 | 00/01 | | **Length** | 3 Byte | 1 Byte | > **Status**: 00 success, 01 failed ## 3.6 查询IoT网络配置(0x14) | | Header | Data | | --- | --- | --- | | **Value(Hex)** | 00 01 14 | | | **Length** | 3 Byte | 0 Byte | 返回: | | Header | IoT Host(Domain name/IP) | | --- | --- | --- | | **Value(Hex)** | 00 xx 14 | xx | | **Length** | 3 Byte | xx Byte | ## 3.7 设置设备Topic(0x15) | | Header | ClientID_Enable + Topic_Pub + Topic_Sub | | --- | --- | --- | | **Value(Hex)** | xx xx 15 | xx 00 xx 00 | | **Length** | 3 Byte | xx Byte | * 数据部分不同字段通过0x00 来分隔 * Client_Enable: 0x00 disable, 0x01 enable 返回: | | Header | Status | | --- | --- | --- | | **Value(Hex)** | 00 01 15 | 00/01 | | **Length** | 3 Byte | 1 Byte | > **Status**: 00 success, 01 failed ## 3.8 查询设备Topic(0x16) 发送: | | Header | | | --- | --- | --- | | **Value(Hex)** | 00 01 16 | | | **Length** | 3 Byte | | > **Status**: 00 success, 01 failed 返回: | | Header | ClientID_Enable + Topic_Pub + Topic_Sub | | --- | --- | --- | | **Value(Hex)** | xx xx 16 | xx 00 xx 00 | | **Length** | 3 Byte | xx Byte | ## 3.9 验证设备密码(0x1C) | | Header | Password | | --- | --- | --- | | **Value(Hex)** | 00 07 1C | 31 32 33 34 35 36 | | **Length** | 3 Byte | 6 Byte | 返回: | | Header | Status | | --- | --- | --- | | **Value(Hex)** | 00 01 1C | 00/01 | | **Length** | 3 Byte | 1 Byte | > Status: 00 Success, 01 Failed ## 3.10 设置设备密码(0x1D) | | Header | Old Password | New Password | | --- | --- | --- | --- | | **Value(Hex)** | 00 0D 1D | | | | **Length** | 3 Byte | 6 Byte | 6 Byte | 返回: | | Header | Status | | --- | --- | --- | | **Value(Hex)** | 00 02 1D | 00/01 | | **Length** | 3 Byte | 1 Byte | ## 3.11 设备出厂初始化(0x1E) | | Header | Data | | --- | --- | --- | | **Value(Hex)** | 00 01 1E | | | **Length** | 3 Byte | 0Byte | 返回: | | Header | Status | | --- | --- | --- | | **Value(Hex)** | 00 02 1E | 00/01 | | **Length** | 3 Byte | 1 Byte | ## 3.12 设备复位(0x1F) | | Header | Data | | --- | --- | --- | | **Value(Hex)** | 00 01 1F | | | **Length** | 3 Byte | 0 Byte | 设备无回复。 ## 3.13 设置车检器多路参数(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.14 读取车检器多路参数(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.15 设置主动上报(0xC5) 设置主动上报是否使能、类型、时长等。 | 7Fh | ADDR | Len | C5 | SensType(1Byte) | Enable(1Byte) | Interval(1Byte) | Timeout(1Byte) | XOR | SUM | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | > Enable: 是否使能,第0位 0 禁用, 1 使能; 0x10表示只上报一次,此时相当于查询功能;第5位表示是否环境评估,如0x21,表示环境评估类型 > Interval: 当最高位为0时,上报不需要确认,低七位表示上报间隔,0表示实时,低七位非0表示以秒为单位的上报的间隔;最高位为1时,表示上报需要回复确认。 > Timeout: 单位:分钟;0表示没有时间限制。 ## 3.16 设备主动上报传感信息(0xC0) 设备主动上报传感信息指令,具体传感数据需要根据不同的类型进行解析。 | 7Fh | ADDR | Len | C0 | SensType(1Byte) | SubPkgFlag(1Byte) | SensData | XOR | SUM | | --- | --- | --- | --- | --- | --- | --- | --- | --- | SensType: 传感数据类型 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, Direction,freq_type, sens | 线圈 1 配置
freq_level:高低频,两个比特位,00 表示高频(33nF),01表示中高(43nF), 10表示中低(66nF), 11表示低频(76nF)。
Direction: 0 表示触发,1 表示方向判别
freq_type: 0 表示初始频率,1 表示当前实时频率。
sens:低四位表示当前的灵敏度等级 | | 线圈评估条件 | 1 | condition, loop_state | loop_condition 正常(0)有效,环境状态条件(环境状态评估值,值越大,干扰越大),高四位有效。低四位中,其中第3位表示线圈状态,0 表示正常,1 表示线圈断开;第 2 位表示有无车,0 表示无车,1 表示有车;低两位表示**杂项类型**,0b00表示时间量,0b01表示线圈断开次数;0b10表示车流量数 | | 频率 1 | 3 | frequent | 低字节在前 | | 变化量 1 | 2 | variation | 低字节在前 | | 杂项 | 4 | in_out_passtime/cut_amount/flow_amount | **杂项类型**,可能是时间量,也可能是线圈断开次数、车流量数,说明:
1、通过时间或车间距,5ms为单位,最大计时()
2、线圈断开次数
3、车流量数 | eg: `7F 00 2F C0 0C 00 D2 00 00 00 00 00 00 00 00 00 00 52 00 00 00 00 00 00 00 00 00 00 92 00 00 00 00 00 00 00 00 00 00 D2 00 00 00 00 00 00 00 00 00 00 23 83` **注意,如果有续包,最后一包上位机无返回**。中间续包上位机返回传感类型,当前收到包的序列和子包的数量: | 7Fh | ADDR | 07 | C0 | SensType | Seq(1Byte) | SubAmount(1Byte) | XOR | SUM | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- # 修订记录 | 版本 | 修订时间 | 修订说明 | 修订人 | | --- | --- | --- | --- | | | | | | | V1.00 | 2026-03-11 | 创建协议初始版本 | wangfq | | V1.01 | 2026-06-22 | 补充遗漏的接口说明 | wangfq |