CAN协议构架说明
XSTD是一套基于CAN网络,可扩展到ROS使用的通讯协议规范。该规范为支持多设备和模组设计,在保持简洁易懂的同时提供给各模组充分的拓展空间,并支持多个同种设备同时在线工作。协议对同类型设备采用统一规范,牺牲少量效率换来极大的便捷性,非常便于早期功能开发与学习。
1.设备状态定义
使能(通讯设备默认状态)
▪设备所有功能正常运行。
▪对CAN和COM指令做出反馈。
▪默认关闭次要反馈,可通过指令开启。
失能(普通设备默认状态)
▪设备进入通讯静默状态,内部任然运行。
▪只接受通用指令,不接受专用指令。
▪只发送心跳反馈和通用指令的反馈,不发送专用指令反馈。
▪射频遥控器等设备自身安装的控制设备任然有效,并拥有更高优先级。
2.设备的分类与识别
每个设备有三个主要识别属性:大类、型号、编号
▪大类是按设备类型共分为30类,编码从0x01~0x1E,0x1F作为广播编码 。
▪型号是从0x01~0xFE的序号,在同一大类中,型号是确定且唯一的,与设备名称绑定的,0xFF下作为广播编码。
▪编号是从0x01~0xFE的序号,可以在XVIEW上设置,用于区分同大类且同型号的设备,0xFF作下为广播编码。
在使用指令时,需要对应的大类、型号、编号,对应的大类与型号代码请在对应设备的用户手册中查询。
3.指令类型
指令分为通用指令和专用指令
▪通用指令只通过CAN ID区分接受设备,数据内容对所有大类都是相同的,主要用于基础功能下设置和反馈
▪专用指令是按大类区分,每个大类的功能是不同的,同个大类中功能按需取用
▪通用指令的功能编码从0x 01开始,对应反馈从 0x A1开始(心跳包反馈为0x B0)
▪专用指令的功能编码从0x 11开始,对应反馈从 0x B1开始
4.CAN数据结构
产品中CAN通讯采用CAN2.0B(扩展帧),通讯波特率为500K。
CAN ID 编码规范:
CAN 数据位:Byte[0]~Byte[7]:
CAN使用的CAN信息为上述提到的CANID与CAN_DATA,总计12个字节数据。使用时,针对不同CANID进行相应的CAN_DATA数据传输。
CANID中大类与型号是设备的固定参数,数值不会改变,编号默认为1,当有多个同类设备同时使用时,可以通过通用指令修改。
CAN数据帧 |
|||||
数据定义 |
ID[0] |
ID[1] |
ID[2] |
ID[3] |
DATA [4~11] |
数据类型 |
unsigned int8 |
unsigned int8 |
unsigned int8 |
unsigned int8 |
0~8 x unsigned int8 |
说明 |
设备大类 |
设备型号 |
设备编号 |
设备功能 |
0~8字节数据 |
5.指令集查询说明
CAN协议分为设备通用指令与设备专用指令。通用指令操作对系统所有模块配件均适用,常见用于设备启动,系统升级,版本查询,系统复位等;设备专用指令专属于不同设备模块,不同模块根据需要选择使用部分专用指令,对特殊设备可定制专用指令。
CAN闭环控制系统,对绝大数指令均有应答机制。即命令帧,反馈帧一一对应。根据反馈帧实时监控数据流准确性。对部分功能可能需要先使能反馈或设置反馈周期。
6.CAN分析仪
如果有使用CAN-COM HUB或WiFi HUB,可以使用XVIEW的CAN分析仪功能来测试