跳转到主要内容

COM协议构架说明

为了简化协议和方便解析,COM协议本质上就是对CAN指令的封装,其中包含的4~12位数据为4位CAN ID和8位CAN数据。由于COM报文长度是8~16位,使用固定表头0x55,请先阅读标准CAN协议再阅读以下内容。

COM 报文设置

通信波特率:460800

标准:自定义协议串口

COM 报文结构

数据定义

HEAD

LEN

DATA [0~11]

Frame ID

Checksum

数据类型

unsigned int8

unsigned int8

4~12 12 x unsigned int8

unsigned int8

unsigned int8

说明

表头固定0x55

COM报文长度0x08~0x10

4位CAN ID

0~8位CAN报文数据

帧ID

可固定也可累加

连贯数据的序列戳

前7~15位内容的累加和

再取最低位的int8反馈

DATA [0~11]

数据定义

ID[0]

ID[1]

ID[2]

ID[3]

DATA [0~7]

数据类型

unsigned int8

unsigned int8

unsigned int8

unsigned int8

0~8 x unsigned int8

说明

设备大类

设备型号

设备编号

设备功能

0~8字节数据

报文内容解释

Frame ID

  • 设计上是一个序列戳,方便对连续的数据包进行校验,帮助发现掉包现象。
  • 该序列从0到255,溢出后自动循环
  • 对非连续指令或不需要严格防掉包指令可以固定某一数值
  • 一般用于上位机校验,设备一般不使用该值

Checksum

  • 对报文前7~15位(总共8~16位)的累加和,取和的最低位字节,用于简单的数据校验
  • 代码案例如下:
unsigned char checksum(unsigned char* data) {
    unsigned char sum = 0x00;
    for (int i = 0; i < data[1] - 1; i++) {
        sum += data[i];
    }
    return sum;
}