Di-Link OTA 协议文档_V2

1、说明

参考使用 Modbus RTU 0x15 写命令,作为通用文件传输协议。

平台将数据分包发送到DTU,DTU可以处理文件数据或者透传给串口。

为简化操作,本协议不要求设备回复确认时携带原文件数据。

2、下发数据格式说明 (平台 → 设备)

序号 字段 数据长度(字节) 值 (16进制) 说明
1设备地址10x01默认 0x01, 设备的 Modbus 地址
2功能码10x15固定值
3本包字节数1序号 4~8 的总字节数范围十进制 7~244
4子请求10x06固定值
5文件总包数20x----根据文件大小和分包大小计算得出的包总数+1(最后追加一个校验包)
6本包序号2-从 0 开始
7本包写寄存器的个数2N,N=64/或者计算得出非最后包时,固定值64(一次传输128字节),最后一个数据包非满包发送时,根据剩余字节数/2计算得出
8数据体N*2文件内容片段
9CRC2Modbus RTU CRC低字节在前

3、回复格式 (设备 → 平台)

序号 字段 字节数 说明
1设备地址10x01收到的下发数据对应字段
2功能码10x15收到的下发数据对应字段
3包字节数1序号 4~8 的总字节数收到的下发数据对应字段
4子请求10x06收到的下发数据对应字段
5文件总包数20x----收到的下发数据对应字段
6本包序号2-收到的下发数据对应字段
7本包写寄存器的个数20回复包中不要求携带数据体,也可以携带,携带数据时,需返回有效的寄存器个数
8数据体N*2文件内容片段如果不携带数据体,无此部分数据
9CRC2Modbus RTU CRC低字节在前

4、示例

4.1、云平台下发第一包数据:
01 15 87 06 00 3E 00 00 00 40 48 5F 53 3D 22 31 32 33 34 35 36 37 38 39 41 42 43 44 45 46 22 0D 0A 63 72 63 31 3D 30 0D 0A 63 72 63 32 3D 30 0D 0A 63 72 63 33 3D 30 0D 0A 63 72 63 34 3D 30 0D 0A 72 65 71 44 3D 5B 5D 0D 0A 68 73 67 4C 3D 5B 5D 0D 0A 68 73 67 4E 3D 30 0D 0A 70 6C 63 43 4C 3D 5B 5D 0D 0A 67 4E 3D 30 0D 0A 61 4E 3D 30 0D 0A 63 42 3D 5B 5D 0D 0A 72 4E 3D 2D 31 0D 0A 75 72 4E 3D 2D 31 0D 0A 72 65 71 29 80
4.2、设备回复
01 15 87 06 00 3E 00 00 00 00 D5 11
4.3、云平台收到设备回复后,继续发送后续数据,设备依次回复。
01 15 87 06 00 3E 00 01 00 40 5F 73 3D 30 0D 0A 69 54 3D 30 0D 0A 63 72 41 63 6B 3D 5B 5D 0D 0A 63 52 3D 5B 5D 0D 0A 63 73 44 3D 5B 5D 0D 0A 63 64 43 3D 30 0D 0A 69 54 4D 61 78 3D 33 30 30 0D 0A 6C 6F 6F 70 54 61 67 3D 30 0D 0A 61 64 64 5F 62 3D 30 0D 0A 61 64 64 5F 65 3D 30 0D 0A 61 64 64 5F 74 3D 30 0D 0A 61 64 64 5F 69 3D 30 0D 0A 61 64 64 5F 74 63 3D 30 0D 0A 61 64 64 4E 3D 30 0D 0A 61 64 64 4C 3D 5B 5D 0D E3 81 01 15 87 06 00 3E 00 01 00 00 84 D1 ......
4.3、云平台发送文件校验包
01 15 09 06 00 3E 00 3D 00 01 B0 A3 F1 3D

校验数据生成方法: 从文件第一个字节开始累加到最后一个字节,赋值给无符号2字节整数,大端字节序(高字节在前)。

平台发送校验包示例:

01 15 09 06 00 12 00 11 00 01 FA 05 3A 23
4.4、设备可对比校验,回复数据
01 15 09 06 00 3E 00 3D 00 00 CD 31
4.5、云端收到校验包的回复后,标记文件发送过程结束