通用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 |
数据长度 |
周期( |
|
本设备 |
外部 |
0x XX XX XX A1 |
0 |
/ |
|
数据位 |
功能 |
数据类型 |
说明 |
||
byte[ |
/ |
/ |
/ |
举例:向型号0x02 编号0x03的底盘发送CANID:0x01 02 03 01 数据:01 02 03 00 00 00 0000,系统重启。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
0x01 02 03 01
数据帧
扩展帧
8
01 02 03 00 00 00 00 00
上位机
0x01 02 03 A1
数据帧
扩展帧
0
/
1