跳转到主要内容

通用CAN协议标准

请先确保阅读了CAN协议构架说明再开始以下内容

通用指令是所有设备都会用到的指令,包含了各项设备基础功能。

请注意使用设备CANID替换表中XX部分

通用指令在设备失能情况下也是可以使用的,其中心跳包是任何情况下都会反馈的,是设备是否在线的标识


通用指令总表

此表展示了通用指令的所有指令内容,方便快速查询和定位

指令集

 

反馈集

重要性

说明

命令内容

大类

(00~1F)

型号

(00~FF)

编号

(00~FF)

功能

(00~FF)

 

大类

(00~1F)

型号

(00~FF)

编号

(00~FF)

功能

(00~FF)

反馈内容

周期性

设备重启

xx

xx

xx

01

 

xx

xx

xx

A1

准备重启

对命令反馈

必备

设备完全重置,相当于上电操作

软体版本查询

xx

xx

xx

02

 

xx

xx

xx

A2

软体版本反馈

对命令反馈

必备

大版本查询,不同于bin文件固件号

通用设置

xx

xx

xx

03

 

xx

xx

xx

A3

通用设置成功

对命令反馈

必备

使能和编号设置

特殊状态复位

xx

xx

xx

04

 

xx

xx

xx

A4

特殊复位成功

对命令反馈

必备

清除错误等特殊状态

运动状态复位

xx

xx

xx

05

 

xx

xx

xx

A5

运动复位成功

对命令反馈

选备

清除里程计等运动数据,非运动设备可无视指令

编号设置

xx

xx

xx

06

 

xx

xx

xx

A6

编号设置成功

对命令反馈

必备

用于设置设备编号

查找设备

xx

xx

xx

07


/

/

/

/

/

/

选备

收到后设备利用可用的方式

(包括不限于蜂鸣器,LED,灯光等)

将自身与其他同类设备区分出来

便于人类寻找到特定设备

/

/

/

/

/

 

xx

xx

xx

B0

设备心跳包

周期反馈

必备

 

进入升级模式

xx

xx

xx

F1

 

/

/

/

/

/

/

选备

如果没有boot loader则无视指令

级模式专用

xx

xx

xx

F2~FF

 

xx

xx

xx

F2~FF

升级模式专用

对命令反馈 

不需要

主程序直接忽略,bootloader使用


设备重启/准备重启 

 

设备重启

发送方

接收方

CAN ID

数据长度

周期(ms

外部

本设备

0x XX XX XX 01

3

/

数据位

功能

数据类型

说明

byte[0]

大类

unsigned int8

按设备型号分配表中大类(与ID中相同 )

byte[1]

型号

unsigned int8

按设备型号分配表中型号(与ID中相同 )

byte[2]

编号

unsigned int8

初始为1(与ID中相同 )

byte[3~7]

/

/

/

注:当系统中有多台机器同时使用时,可更改设置设备编号,设备编号默认为0x01。发送指令数据长度为8,无效位补0(后文同)。  

准备重启反馈

发送方

接收方

CAN ID

数据长度

周期(ms

本设备

外部

0x XX XX XX A1

0

/

数据位

功能

数据类型

说明

byte[0~7]

/

/

/

举例:向型号0x02 编号0x03的底盘发送CANID:0x01 02 03 01 数据:01 02 03 00 00 00 0000,系统重启。 

发送实例

传输目标

CAN ID

帧格式

帧类型

数据长度

数据位(L->H

设备

0x01 02 03 01

数据帧

扩展帧

3

01 02 03

上位机

0x01 02 03 A1

数据帧

扩展帧

0

/


固件版本查询

 

设备重启

发送方

接收方

CAN ID

数据长度

周期(ms

外部

本设备

0x XX XX XX 02

0

/

数据位

功能

数据类型

说明

byte[0]

/

/

/

准备重启反馈

发送方

接收方

CAN ID

数据长度

周期(ms

本设备

外部

0x XX XX XX A2

8

/

数据位

功能

数据类型

说明

byte[0]

硬件版本字符[0]

unsigned int8ASCII

用于电控的版本号,PCB修改时更新

byte[1]

硬件版本字符[1]

unsigned int8ASCII

byte[2]

硬件版本字符[2]

unsigned int8ASCII

byte[3]

硬件版本字符[3]

unsigned int8ASCII

byte[4]

软件版本字符[0]

unsigned int8ASCII

用于大更新的版本号,不同于bin文件的固件号

byte[5]

软件版本字符[1]

unsigned int8ASCII

byte[6]

软件版本字符[2]

unsigned int8ASCII

byte[7]

软件版本字符[3]

unsigned int8ASCII

举例:向型号0x02 编号0x03 的底盘发送CANID:0x01 02 03 02 数据:00 00 00 00 00 00 00 00。 

发送实例

传输目标

CAN ID

帧格式

帧类型

数据长度

数据位(L->H

设备

0x01 02 03 02

数据帧

扩展帧

8

/

上位机

0x01 02 03 A2

数据帧

扩展帧

8

XX XX XX XX XX XX XX XX

 


通用设置/通用设置成功