电子开关类CAN协议标准
为了更好的兼容不同设备,我们规范了CAN协议的标准,使得同类型不同型号设备能无缝切换,自动被ROS识别并直接使用,方便更换硬件时候的软件移植工作。以下为电子开关使用的专用CAN协议。
请先确保阅读了CAN协议构架说明再开始以下内容
请注意使用设备CANID替换表中XX部分
电子开关类设备的大类ID为 0A
电子开关指令总表
此表展示了专用指令的所有指令内容,方便快速查询和定位
指令集 |
反馈集 |
重要性 |
说明 |
|||||||||||
设备对象 |
命令内容 |
大类 ( 00~1F) |
型号 (00~FF) |
编号 (00~FF) |
功能 (00~FF) |
大类 (00~1F) |
型号 (00~FF) |
编号 (00~FF) |
功能 (00~FF) |
反馈内容 |
周期性 |
|||
电子开关 |
可控开关状态设置 |
0A |
xx |
xx |
11 |
0A |
xx |
xx |
B1 |
可控开关状态信息 |
周期反馈 |
选备 |
开关性质只能是其中一种 | |
/ |
/ |
/ |
/ |
/ |
0A |
xx |
xx |
B2 |
按键状态信息 |
周期反馈 |
选备 |
|||
/ |
/ |
/ |
/ |
/ |
0A |
xx |
xx |
B3 |
AD状态信息 |
周期反馈 |
选备 |
|||
反馈周期设置 |
0A |
xx |
xx |
14 |
0A |
xx |
xx |
B4 |
反馈周期信息 |
即时反馈 |
选备 |
1. 可控开关状态设置 / 可控开关状态信息
用于可控的IO设备
可控开关状态设置 |
||||
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
外部 |
本设备 |
0x 0A XX XX 11 |
1 |
/ |
数据位 |
功能 |
数据类型 |
说明 |
|
byte[0] |
设置开关 |
unsigned int8 |
0x00: 关闭 / 0x01: 开启 |
|
byte[1~7] |
/ |
/ |
/ |
可控开关状态信息 |
||||
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
本设备 |
外部 |
0x 0A XX XX B1 |
7 |
默认1000/触发模式 |
数据位 |
功能 |
数据类型 |
说明 |
|
byte[0] |
开关状态 |
unsigned int8 |
0x00: 关闭 / 0x01: 开启 |
|
byte[1~7] |
/ |
/ |
/ |
可控开关指通过单一变量控制启停的设备,包括灯光、门锁、气泵、电磁阀等
保持每次操作间隔超过 500ms,先读取状态再操作,防止过频繁烧毁部件
举例: 型号0x02 编号0x03 的开关开启, 发送CANID:0x 0A 02 03 11 数据:01。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
0x0A 02 03 11
数据帧
扩展帧
1
01
上位机
0x0A 02 03 B1
数据帧
扩展帧
1
01
2. 按键状态信息
用于按键单输入设备的控制
按键状态信息 |
||||
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
本设备 |
外部 |
0x 01 XX XX B2 |
8 |
默认100/触发模式 |
数据位 |
功能 |
数据类型 |
说明 |
|
byte[0] |
按键1 |
unsigned int8 |
0x00: 未触发 / 0x01: 触发 |
|
byte[1] |
按键2 |
unsigned int8 |
0x00: 未触发 / 0x01: 触发 |
|
byte[2] |
按键3 |
unsigned int8 |
0x00: 未触发 / 0x01: 触发 |
|
byte[3] |
按键4 |
unsigned int8 |
0x00: 未触发 / 0x01: 触发 |
|
byte[4] |
按键5 |
unsigned int8 |
0x00: 未触发 / 0x01: 触发 |
|
byte[5] |
按键6 |
unsigned int8 |
0x00: 未触发 / 0x01: 触发 |
|
byte[6] |
按键7 |
unsigned int8 |
0x00: 未触发 / 0x01: 触发 |
|
byte[7] |
按键8 |
unsigned int8 |
0x00: 未触发 / 0x01: 触发 |
使用触发模式要注意按键抖动问题
举例: 型号0x02 编号0x03 的按键1按下。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
/
/
/
/
/
上位机
0x0A 02 03 B2
数据帧
扩展帧
8
01 00 00 00 00 00 00 00
3. AD状态信息
用于AD输入设备的控制
AD状态信息 |
||||
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
本设备 |
外部 |
0x 01 XX XX B3 |
8 |
默认100 |
数据位 |
功能 |
数据类型 |
说明 |
|
byte[0] |
AD1低8位 |
signed int16 |
|
|
byte[1] |
AD1高8位 |
|||
byte[2] |
AD2低8位 |
signed int16 |
|
|
byte[3] |
AD2高8位 |
|||
byte[4] |
AD3低8位 |
signed int16 |
|
|
byte[5] |
AD3高8位 |
|||
byte[6] |
AD4低8位 |
signed int16 |
|
|
byte[7] |
AD4高8位 |
举例: 型号0x02 编号0x03 的AD1 = 80%。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
/
/
/
/
/
上位机
0x0A 02 03 B3
数据帧
扩展帧
8
50 00 00 00 00 00 00 00
4. 反馈周期设置 / 反馈周期信息
反馈周期设置 |
||||
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
外部 |
本设备 |
0x 0A XX XX 14 |
4 |
/ |
数据位 |
功能 |
数据类型 |
说明 |
|
byte[0] |
设置周期 |
unsigned int32 |
0: 触发模式 / 其他数值单位ms |
|
byte[1] |
||||
byte[2] |
||||
byte[3] |
||||
byte[4~7] |
/ |
/ |
/ |
反馈周期信息 |
||||
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
本设备 |
外部 |
0x 0A XX XX B4 |
0 |
/ |
数据位 |
功能 |
数据类型 |
说明 |
|
byte[0~7] |
/ |
/ |
/ |
当反馈周期设置为0时进入触发模式,该模式下只有开关状态变化才会反馈
举例: 型号0x02 编号0x03 的设置反馈周期100ms, 发送CANID:0x 0A 02 03 14 数据:64 00 00 00。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
0x0A 02 03 14
数据帧
扩展帧
4
64 00 00 00
上位机
0x0A 02 03 B4
数据帧
扩展帧
0
/