电源类CAN协议标准
为了更好的兼容不同设备,我们规范了CAN协议的标准,使得同类型不同型号设备能无缝切换,自动被ROS识别并直接使用,方便更换硬件时候的软件移植工作。以下为电源使用的专用CAN协议。
请先确保阅读了CAN协议构架说明再开始以下内容
请注意使用设备CANID替换表中XX部分
电源类设备的大类ID为 06
电源指令总表
此表展示了专用指令的所有指令内容,方便快速查询和定位
指令集 |
反馈集 |
重要性 |
说明 |
|||||||||||
设备对象 |
命令内容 |
大类 (00~1F) |
型号 (00~FF) |
编号 (00~FF) |
功能 (00~FF) |
大类 (00~1F) |
型号 (00~FF) |
编号 (00~FF) |
功能 (00~FF) |
反馈内容 |
周期性 |
|||
电池 |
/ |
/ |
/ |
/ |
/ |
06 |
xx |
xx |
B1 |
BMS状态信息 |
周期反馈 |
必备 |
||
/ |
/ |
/ |
/ |
/ |
06 |
xx |
xx |
B2 |
BMS数据反馈 |
周期反馈 |
必备 |
|||
充电站 |
充电站设置 |
06 |
xx |
xx |
13 |
06 |
xx |
xx |
B3 |
充电站状态信息 |
周期反馈 |
必备 |
||
/ |
/ |
/ |
/ |
/ |
06 |
xx |
xx |
B4 |
充电站数据反馈 |
周期反馈 |
必备 |
|||
数字电源 |
数字电源设置 |
06 |
xx |
xx |
15 |
06 |
xx |
xx |
B5 |
电源数据反馈 |
周期反馈 |
必备 |
1. BMS状态信息
用于带有BMS功能的电池包的数据采集
BMS状态信息 |
||||
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
本设备 |
外部 |
0x 06 XX XX B1 |
4 |
1000 |
数据位 |
功能 |
数据类型 |
说明 |
|
byte[0] |
工作状态 |
unsigned int8 |
0x00: 正常 / 0x01: 警告 /0x02: 保护 |
|
byte[1] |
警告状态 |
unsigned int8 |
警告状态表 |
|
byte[2] |
保护状态 |
unsigned int8 |
保护状态表 |
|
byte[3] |
充电标识 |
unsigned int8 |
0x00: 未充电 / 0x01: 充电中 |
|
byte[4~7] |
/ |
/ |
/ |
警告状态表 |
||
位 |
值 |
说明 |
bit[0] |
0: 正常 / 1: 警告 |
电池过压警告 |
bit[1] |
0: 正常 / 1: 警告 |
电池欠压警告 |
bit[2] |
0: 正常 / 1: 警告 |
电池高温警告 |
bit[3] |
0: 正常 / 1: 警告 |
电池低温警告 |
bit[4] |
0: 正常 / 1: 警告 |
放电过流警告 |
bit[5] |
0: 正常/ 1: 警告 |
充电过流警告 |
bit[6] |
0: 正常 / 1: 警告 |
低电量警告(SOC<20%) |
bit[7] |
/ |
/ |
保护状态表 |
||
位 |
值 |
说明 |
bit[0] |
0: 正常 / 1: 触发 |
电池过压保护 |
bit[1] |
0: 正常 / 1: 触发 |
电池欠压保护 |
bit[2] |
0: 正常 / 1: 触发 |
电池高温保护 |
bit[3] |
0: 正常 / 1: 触发 |
电池低温保护 |
bit[4] |
0: 正常 / 1: 触发 |
放电过流保护 |
bit[5] |
0: 正常 / 1: 触发 |
充电过流保护 |
bit[6] |
0: 正常 / 1: 触发 |
低电量保护(SOC<10%) |
bit[7] |
0: 正常 / 1: 触发 |
短路保护 |
电池包必须带有BMS才能使用该功能
举例: 型号0x01 编号0x02 的BMS 充电中。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
/
/
/
/
/
上位机
0x06 01 02 B1
数据帧
扩展帧
4
00 00 00 01
2. BMS数据反馈
用于带有BMS功能的电池包的数据采集
BMS数据反馈 |
||||
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
本设备 |
外部 |
0x 06 XX XX B2 |
8 |
500 |
数据位 |
功能 |
数据类型 |
说明 |
|
byte[0] |
SOC |
unsigned int8 |
范围 0~100 |
|
byte[1] |
SOH |
unsigned int8 |
范围 0~100 |
|
byte[2] |
电池电压低8位 |
unsigned int16 |
单位:0.01V |
|
byte[3] |
电池电压高8位 |
|||
byte[4] |
电池电流低8位 |
signed int16 |
单位:0.1A |
|
byte[5] |
电池电流高8位 |
|||
byte[6] |
电池温度低8位 |
signed int16 |
单位:0.1℃ |
|
byte[7] |
电池温度高8位 |
电池包必须带有BMS才能使用该功能
举例: 型号0x01 编号0x02 的BMS 满电48V反馈。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
/
/
/
/
/
上位机
0x06 01 02 B2
数据帧
扩展帧
8
64 64 C0 12 00 00 68 01
3. 充电站设置
用于配套的自动充电站的设置
充电站设置 |
||||
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
外部 |
本设备 |
0x 06 XX XX 13 |
5 |
/ |
数据位 |
功能 |
数据类型 |
说明 |
|
byte[0] |
工作模式 |
unsigned int8 |
0:自动(默认) /1:手动 查看工作模式功能表 |
|
byte[1] |
手动开关设置(仅手动模式有效) |
unsigned int8 |
0:断开(默认) /1:连接 查看工作模式功能表 |
|
byte[2] |
蜂鸣器使能(报警无法关闭) |
unsigned int8 |
0:关闭 /1:开启(默认) |
|
byte[3] |
再充电压差值(与满电电压的压差) |
unsigned int8 |
单位:0.1V(默认1.0V) |
|
byte[4] |
充电截至电流 |
unsigned int8 |
单位:0.1A(默认0.2A) |
|
byte[5~7] |
/ |
/ |
/ |
充电站状态信息 |
||||
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
本设备 |
外部 |
0x 06 XX XX B3 |
7 |
500/接触触发(看备注) |
数据位 |
功能 |
数据类型 |
说明 |
|
byte[0] |
工作模式 |
unsigned int8 |
0:自动 /1:手动 |
|
byte[1] |
充电站探测状态 |
unsigned int8 |
0:未接触 /1:已接触 |
|
byte[2] |
工作状态 |
unsigned int8 |
0: 断开/ 1:连接 / 2:已充满(低电流) / 3:错误 |
|
byte[3] |
错误状态 |
unsigned int8 |
查看错误状态表 |
|
byte[4] |
蜂鸣器使能状态 |
unsigned int8 |
0:关闭 /1:开启(默认) |
|
byte[5] |
再充电压差值 |
unsigned int8 |
单位:0.1V(默认1.0V) |
|
byte[6] |
充电截至电流 |
unsigned int8 |
单位:0.1A(默认0.2A) |
|
byte[7] |
/ |
/ |
/ |
错误状态表 |
||
字节 |
状态值 |
说明 |
byte[3] |
0x00 |
无错误 |
0x01 |
电源过压 |
|
0x02 |
充电过流 |
|
0x03 |
短路保护 |
工作状态指示表 |
||
工作状态 |
LED状态 |
蜂鸣器状态 |
断开(未接触) |
无灯 |
无 |
断开(已接触) |
绿灯闪烁 |
无 |
连接 |
红绿交替 |
无 |
已充满 |
绿灯常亮 |
无 |
错误 |
红灯常亮 |
按规定的错误发声模式 |
工作模式功能表 |
|||
工作模式 |
探测状态 |
手动开关 |
工作状态 |
自动 |
未接触 |
无效 |
断开 |
接触 |
无效 |
连接 |
|
手动 |
未接触 |
无效 |
断开 |
接触 |
连接 |
连接 |
|
断开(默认) |
断开 |
一般反馈周期为500ms,如果出现充电站探测变化则立即发送充电站状态信息帧
再冲电电压差指完成第一次充电后,如果电池电压下降超过设置的压差值,会再次启动充电
举例: 型号0x02 编号0x03 的充电站 手动控制连接。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
0x06 02 03 13
数据帧
扩展帧
5
01 01 00 0A 02
上位机
0x06 02 03 B3
数据帧
扩展帧
7
01 01 01 00 00 0A 02
4. 充电站数据反馈
用于配套的自动充电站的充电数据反馈
充电站数据反馈 |
||||
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
本设备 |
外部 |
0x 06 XX XX B4 |
4 |
500 |
数据位 |
功能 |
数据类型 |
说明 |
|
byte[0] |
充电电压低8位 |
unsigned int16 |
单位:0.01V |
|
byte[1] |
充电电压高8位 |
|||
byte[2] |
充电电流低8位 |
signed int16 |
单位:0.1A |
|
byte[3] |
充电电流高8位 |
|||
byte[4~7] |
/ |
/ |
/ |
举例: 型号0x02 编号0x03 的充电站48V 1A充电。
发送实例
传输目标
CAN ID
帧格式
帧类型
数据长度
数据位(L->H)
设备
/
/
/
/
/
上位机
0x06 02 03 B4
数据帧
扩展帧
4
C0 12 0A 00
5. 数字电源设置
用于专用的数字电源
数字电源设置 |
||||
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
外部 |
本设备 |
0x 06 XX XX 15 |
8 |
/ |
数据位 |
功能 |
数据类型 |
说明 |
|
byte[0] |
电源通道ID |
unsigned int8 |
1~255 |
|
byte[1] |
模式 |
unsigned int8 |
1:恒压模式 / 2:恒流模式 |
|
byte[2] |
反馈周期 |
unsigned int8 |
单位ms |
|
byte[3] |
/ |
/ |
/ |
|
byte[4] |
输出电流或最大电流 |
unsigned int16 |
单位 mA |
|
byte[5] |
||||
byte[6] |
输出电压或最大电压 |
unsigned int16 |
单位 mV |
|
byte[7] |
数字电源数据反馈 |
||||
发送方 |
接收方 |
CAN ID |
数据长度 |
周期(ms) |
本设备 |
外部 |
0x 06 XX XX B5 |
8 |
按设置周期 |
数据位 |
功能 |
数据类型 |
说明 |
|
byte[0] |
电源通道ID |
unsigned int8 |
1~255 |
|
byte[1] |
模式 |
unsigned int8 |
1:恒压模式 / 2:恒流模式 |
|
byte[2] |
错误码 |
unsigned int8 |
查看错误状态码 |
|
byte[3] |
/ |
/ |
/ |
|
byte[4] |
输出电流或最大电流 |
unsigned int16 |
单位 mA |
|
byte[5] |
||||
byte[6] |
输出电压或最大电压 |
unsigned int16 |
单位 mV |
|
byte[7] |
错误状态表 |
||
字节 |
状态值 |
说明 |
byte[2] |
0x00 |
无错误 |
0x01 |
电源过压 |
|
0x02 |
电源过流 |
|
0x03 |
电源过温 |