1、BMS协议规范1.引用标准:SAE J1939-SAE标准2.网络结构CAN网络采用总线拓扑结构,通讯速率250Kbps,采用29位标示符的扩展帧;3.终端电阻为保持正常CAN网络正确的阻抗匹配,要求bms端配置120终端电阻;4.协议数据单元格式4.1.标示符(ID)分配数据链路层的规定参照CAN2.0B和J1939的相关规定,标示符可定制;4.1.1 ID格式:RDPP PFPSSADATA311888064ID格式说明:1)P为优先权:从最高0设置到最低7。本标准充电应答信息、充电状态信息、充电阶段告警信息优先权设为2,充电控制信息优先权设为4,其他信息的缺省优先权设为6。2)R为保留位
2、:备今后开发使用,本标准设为0。3)DP为数据页:用来选择参数组描述的辅助页,本标准设为0。4)PF为PDU格式:用来确定PDU的格式,以及数据域对应的参数组编号。5)PS为特定PDU格式:PS值取决于PDU格式,本标准中采用PDU1格式,PS值为目标址。6)SA为源地址:发送此报文的源地址。7)DATA为数据域:若给定参数组数据长度= 8字节,可以使用数据域全部的8字节,若给的参数数组字节长度为91785字节时,数据传输需多个CAN数据帧,通过传输协议功能的连接管理能力来建立和关闭多包参数组的通讯方式,本标准选用SAEJ1939-21;4.1.2 设备ID定义:充电机地址86(0x56)BM
3、S地址 244(0xF4)车头模块地址226(0xE2)网桥地址228(0XE4)群发地址231(0XE7)4.2 数据格式约定每帧数据均为8 字节,无效或预留的字节以0x00 填充,无效或预留的位均置为0。数据转换公式:实际数值=总线上传送的数值分辨率+偏移量数据格式定义:Intel 占用2字节的数据高字节存放高8 位,低字节存放低8 位; 占用3字节的数据高字节存放高8 位,中间字节存放中8 位,低字节存放低8 位; 占用3字节以上的数据以此类推。范例 1:CAN报文A 含:数据X (2 字节)、数据Y(3 字节),则其数据域为:
4、Byte0Byte1Byte2Byte3Byte4Byte5Byte6Byte7X低字节X高字节Y低字节Y中间字节Y高字节范例 2数据X的位定义为:数据xByte0X低字节Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0Byte1X高字节Bit15Bit14Bit13Bit12Bit11Bit10Bit9Bit8 范例3:数据Y的位定义为:数据xByte2Y低字节Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit0Byte3Y中间字节Bit15Bit14Bit13Bit12Bit11Bit10Bit9Bit8Byte4Y高字节Bit23Bit22Bit21Bit20
5、Bit19Bit18Bit17Bit165.通信报文定义5.1 主bms控制的电源信号标记信息报文名称:HOST_BMS波特率:250KID:0x1801E7E4(PGN256)数据长度: 8字节周期: 100ms发送节点: HOST_BMS报文代码报文ID源-目的NTB(PGN1024)0x1801E7E4网桥群发Bit 01充电标记(0没有网桥,0x1停止或者运行;0x2充电未跳闸;0x3充电跳闸后)Bit 2Bms电源标记Bit 3空调高压标记Bit 4气泵油泵电源标记Bit 5DCDC电源标记Bit 6水泵标记Bit 7充电机继电器标记Bit 8电机控制器标记Bit 9充电枪连接状态B
6、it 10后仓风扇打开标记Bit 11高压报警Bit 12 Bit 23整车电压值(0700V)Byte 3-Byte 4整车总电流(-600A+600A)Byte 5后仓温度(-50))Byte 6水箱风扇调试位(0-100)Byte 7整车soc(0100)注:如果仪表电源标记无法显示的话,可只截取该报文的整车电压值,整车总电流,整车soc显示于主页面;5.2 BMS群发报文1报文名称:BMS_MAX_VOL波特率:250KID:0x1801E7F4(PGN256)数据长度: 8字节周期: 500ms发送节点: BMS报文代码报文ID源-目的BTA(PGN256)0x1801E7F4BMS
7、-ALL_NET Bit 0Bit 11位单箱最大电压值1_6 (偏移量0 分辨率0.001 v/位)Bit 12Bit 23单箱最大电压值7_12 (偏移量0 分辨率0.001 v/位)Bit 24Bit 27单箱最大电压单体号1_6 (编号为1-6)Bit 28Bit 31单箱最大电压单体号7_12 (编号为7-12)Bit 32Bit 35BMS充电状态1_6 (1-6中在充电的编号)Bit 36Bit 39BMS充电状态7_12Bit 40Bit 43BMS放电状态1_6Bit 44Bit 47BMS放电状态7_12Bit 48Bit 51BMS充放电状态0x8充电,0XA放电,0x0
8、静态Bit 52Bit 55BMS充放电单体数Byte 7接收电池箱体号注:根据bms箱体号,接收单箱中最大最小单体电压,计算出整车最大最小单体电压后显示在主页面上.(如果仪表可以实现单体电压不同颜色字体的话,可根据bms id读取单箱中在充电/放电状态,在次页面上显示出不同颜色)5.3 BMS群发报文4报文名称:BMS_MAX_TEMP波特率:250KID:0x1804E7F4(PGN1024)数据长度: 8字节周期: 500ms发送节点: BMS报文代码报文ID源-目的BTA(PGN1024)0x1804E7F4BMS-ALL_NETByte 0BMS最高温度/NTC情况下读取此位(80
9、= 30)Byte 1BMS最低温度(80 = 30)Byte 2 BMS平均温度(80 = 30)Bit 24风扇状态 1开;0关Bit 25Bit 31保留位Byte 4BMS整车单体数(BMS检测到的)(188个)Byte 5 -Byte 6BMS整车总电压(BMS检测到的)(356.8V)Byte 7BMS的ID注:目前采用ntc温度传感器,所以直接根据BMS ID去读取最高温度作为箱体的温度(50度偏移,即传80(0x50)表示30度)5.4 BMS群发报文5ID:0x1805E7F4(PGN1280)数据长度: 8字节周期: 500ms发送节点: BMS报文代码报文ID源-目的BM
10、V(PGN5376)0x1805E7F4BMS-充电机Bit0-Bit11#1单体动力蓄电池电压Bit12-Bit23#2单体动力蓄电池电压Bit24-Bit35#3单体动力蓄电池电压Bit36-Bit47#4 单体动力蓄电池电压Byte 6保留Byte 7包号1Bit0-Bit11#5单体动力蓄电池电压Bit12-Bit23#6单体动力蓄电池电压Bit24-Bit35#7单体动力蓄电池电压Bit36-Bit47#8 单体动力蓄电池电压Byte 6保留Byte 7包号2.注:每包数据4个单体,每箱电池3包(车辆为9箱12个单体),显示在次页面上(包号1-27);5.6 仪表检测状态汇报1(仪表
11、地址暂时定义为F0)报文名称:METER_STATUS 波特率:250KID:0x1801E2F0 (PGN256)数据长度: 8字节周期: 100ms发送节点:仪表 报文代码报文ID源-目的BTA(PGN256)0x1801E2F0仪表-车头字节位数据名分辨率偏移量范围024V电池电压0.2v/bit010乘客门3状态; 0:闭合 1:打开1乘客门2状态; 0:闭合 1:打开2乘客门1状态; 0:闭合 1:打开3后舱门状态, 0:闭合 1:打开;4手刹状态 0:无效 1:有效5.7保留2前储气罐气压值0.01Mpa/bit00-1.00Mpa3中储气罐气压值0.01Mpa/bit00-1.0
12、0Mpa4后储气罐气压值0.01Mpa/bit00-1.00Mpa5.7保留5.7 仪表总里程汇报报文名称:METER_INF1 波特率:250KID:0x1802E2F0 (PGN512)数据长度: 8字节周期: 500ms发送节点:仪表 报文代码报文ID源-目的BTA(PGN512)0x1802E2F0仪表-车头字节位数据名分辨率偏移量范围0.3总里程5m/bit4.7单次里程5m/bit5.8车头操纵件系统状态信息群发报文名称:Front_Moudle_INF 波特率:250KID:0x1801E7E2(PGN256)数据长度: 8字节周期: 200ms发送节点:车头报文代码报文ID源-
13、目的BTA(PGN256)0x1801E7E2 车头 -ALL_NET字节位数据名分辨率偏移量范围01.0钥匙开关状态 01:ACC位置 10:ON位置 11:START4.2档位状态 000:空挡 001:倒档 010:前进挡 5保留6刹车踏板状态 0:松开 1:踩下7加速踏板状态 0:松开 1:踩下1.2电机转速1-20000+200003保留4加速踏板大小开度 0.4%0FF 有效值0100%5控制器温度(50度偏移)6电机温度(暂时不读,)7保留仪表主页面显示内容:1. Soc2. 运行总电流3. 电池总电压4. 整车最高最低单体电压;5. 整车最高最低箱体温度;次页面显示内容:1. 9*12+8个单体的电压值(第10箱为低压电池共8个单体);2. 10箱电池的箱体温度;3. 根据电池单体充放电状态显示不同颜色;