充电机及BMS通讯报文分析说明.docx
《充电机及BMS通讯报文分析说明.docx》由会员分享,可在线阅读,更多相关《充电机及BMS通讯报文分析说明.docx(29页珍藏版)》请在冰豆网上搜索。
充电机及BMS通讯报文分析说明
充电机与BMS通讯报文分析说明
充电机与BMS通讯报文分析
注:
充电协议参考2012-03-01实施的最新协议
、充电总流程
整个充电过程包括四个阶段:
充电握手阶段01/02
充电参数配置阶段OA
充电阶段1A
充电结束阶段1C-1F(故障诊断代码)
注意:
在各个阶段,充电机和BMS如果在规定的时间没有收到对方报文或者没有收到正确报文,即判定为报文接收超时,超时时间除特殊规定外均为5秒;当出现超时后,BMS或充电机发送错误报文(BEM或CEM),并进入错误处理状态。
(注:
因对协议理解不同,有些BMS厂家会在整个充电过程中发送没有超时信息的错误报文BEM或CEM)
BEM:
BMS接收超时的报文信息
CEM:
充电机接收超时的报文信息
通讯协议中地址分配
、报文分类解析
、充电握手阶段
当充电机和BMS物理连接完成并上电后,BMS首先检测低压辅助电源是否匹配,如果匹配,双方进入充电握手阶段,并由充电机首先发送辨识报文CRM(此时的CRM辨识结果为不能辨识0x00),当BMS收到充电机发送的CRM后,发送BMS和车辆辨识报文BRM。
充电机在收到BMS和车辆辨识报文BRM后,再发送辨识报文CRM(此时的CRM辨识结果为能辨识0xAA)。
至此充电握手阶段完成。
CRM报文包含容:
截包工具中显示此报文容为:
0x1801F4560000000000000000
分析此报文容:
Ox1801F456为此报文ID,“18”为包含报文优先级(3个位)、保留位(1个位)和数据页(1个位)。
“01”为此报文PGN(参数组编号)或者PF。
“F4”表示此报文发送的目的地址为BMS。
“56”为发送此报文的源地址为充电机。
(注:
查看报文时,只要看报文ID最后的两个数据:
“56”则表示此报文为充电机发送出来的;“F4”则表示此报文为BMS发送出来的)
0000000000000000为此报文的数据,最前面一个字节“00”表示CRM里面的辨识结果(0x00,BMS不能辨识;0xAA,BMS能辨识)。
第二个字节“00”表示CRM里面的充电机编号。
后面的六个字节“000000000000”表示CRM里面的充电机所在区域编码。
BRM报文包含容:
因为此报文超过8个字节,所以发送的时候会按照J1939协议发送数据。
在发送大于8个字节的数据之前,无论是充电机或者BMS会先发送一个连接请求的报文,
截包工具中显示:
0x1CEC56F410290006FF000200
分析此报文容:
0x1CEC56F4为此报文ID,“1C”为包含报文优先级(3个位)、保留位(1个位)和数据页(1个位)。
“EC”为此报文的功能说明(EC为数据大于8字节的报文连接请求,EB为长度大于8字节的报文数据容传输)。
“56”表示此报文发送的目的地址为充电机。
“F4”表发送此报文的源地址为BMS。
(此报文说明BMS想要发送数据长度大于8字节的报文,首先希望与充电机建立长包的发送连接,之后BMS开始传输数据)。
10290006FF000200为此报文的容,“10”表示功能码16请求发送,说明此报文想要与充电机建立连接。
“2900”用两个字节表示BMS将要发送的数据数量为0x0029=41个字节数据。
“06”表示要发送此报文中的41个数据一共要发送6个包才足以容纳41个字节的数据。
“FF”为保留容。
“000200”表示此报文BRM对应的PGN(查看报文时可通过此数据容找出,现在要建立连接请求的报文为协议中对应的哪个报文-即将发送的报文类型)。
充电机接收到BMS发送的请求发送报文后,会发送一个功能码为17的准备发送报文,通知BMS可以发送长包了。
截包工具中显示:
0x1CECF456110601FFFF000200
分析此报文容:
0x1CECF456为此报文ID,“1C”为包含报文优先级(3个位)、保留位(1个位)和数据页(1个位)。
“EC”为此报文的功能说明(EC为数据大于8字节的报文连接请求,EB为长度大于8字节的报文数据容传输)。
“56”为发送此报文的源地址为充电机。
“F4”表示此报文发送的目的地址为BMS。
110601FFFF000200为此报文的数据容,“11”表示功能码17准备发送,说明充电机允许BMS发送长度大于8字节的数据包。
“06”表示充电机允许发送的最大数据包数。
“01”表示BMS将要发送的下一个数据包的编号。
“FFFF”为保留容。
“000200”表示要发送的报文为BRM。
在完成长包请求连接成功后,BMS开始发送数据包编号为1的包含数据容的报文,
截包工具中显示:
0x1CEB56F401000100034902A0
分析此报文容:
0x1CEB56F4为报文ID,“1C”为包含报文优先级(3个位)、保留位(1个位)和数据页(1个位)。
“EB”为此报文的功能说明(EC为数据大于8字节的报文连接请求,EB为长度大于8字节的报文数据容传输)。
“56”此报文发送的目的地址为充电机。
“F4”表示发送此报文的源地址为BMS。
01000100014902A0为此报文的数据容,第一个字节“01”表示此长包的数据包编号为1号数据包(后续会有02、03、04、05、06号数据包)。
“000100”紧跟着后三个字节表示BMS通讯协议版本号(见BMS报文包含容表格)。
后面紧跟着的一个字节“01”表示电池类型为铅酸电池。
再后面两个字节“4902”表示整车动力蓄电池额定容量为0x0249=585AH(带一位小数)……(后续数据容参考BMS报文包含容表格,按定义字节顺序查看并一一对应)。
在BMS发送完所有6个数据包后,充电机如果判断接收完成则发送一个功能码为19的消息结束应答报文,
截包工具中显示:
0x1CECF45613290006FF000200
分析此报文容:
0x1CECF456为报文ID,“1C”为包含报文优先级(3个位)、保留位(1个位)和数据页(1个位)。
“EC”为此报文的功能说明(EC为数据大于8字节的报文连接请求,EB为长度大于8字节的报文数据容传输)。
“F4”表示此报文发送的目的地址为BMS。
“56”为发送此报文的源地址为充电机。
13290006FF000200为此报文的数据容,第一个字节“13”表示功能码19消息结束应答,说明充电机已经顺利接收到BMS发送的总共41个字节的数据包。
“2900”表示充电机计算的接收到的总共0x0029=41个字节的数据。
(先发送低地址的数据)“06”表示充电机计算的接收到的总共6个数据包。
“FF”为保留容。
“000200”表示接收到得报文为PGN=000200的BRM报文。
至此,数据大于8个字节的长包发送和接收的过程结束。
以后的长包也都是按照这个机制进行发送和接收。
需要注意一点的就是在接收方接收长包的数据时,接收方无法判断此时的数据容为哪个报文的数据,所以在整个充电流程中,每次只允许建立一次长包请求连接,直到接收方将数据全部接收完成才能进行下一个请求连接的允许。
如果上一个连接存在,数据没有接收完全,则发送方想要再次建立连接时,接收方将发送放弃连接报文,
截包工具中显示:
0x1CECF456FFFFFFFFFF000600
分析此报文容:
0x1CECF456为报文ID,“1C”为包含报文优先级(3个位)、保留位(1个位)和数据页(1个位)。
“EC”为此报文的功能说明(EC为数据大于8字节的报文连接请求,EB为长度大于8字节的报文数据容传输)。
“F4”表示此报文发送的目的地址为BMS。
“56”为发送此报文的源地址为充电机。
FFFFFFFFFF000600为此报文数据容,第一个字节“FF”表示功能码255放弃连接,说明充电机之前已经有连接存在,而且数据还没有接收完全,所以不能进行下一次的连接。
后面的“FFFFFFFF”为保留容。
最后面的三个字节“000600”表示要建立连接的报文为PGN=000600的BCP报文。
至此,通过CRM和BRM之间的报文交互并按照协议规定的流程顺利接收完成,在BMS接收到CRM的辨识结果为0xAA(能辨识)的前提下,充电机和BMS会进入到下一个流程:
充电参数配置阶段
充电参数配置阶段
在上一个阶段充电握手完成后,充电机和BMS进入充电参数配置阶段。
在此阶段,BMS接收到充电机发送的辨识结果为0xAA的CRM报文后,先发送电池充电参数报文(BCP),充电机在接收到此报文后向BMS发送时间同步(CST)和最大输出参数报文(CML),BMS根据接收到的CST和CML判断能否进行充电,判断结束后向充电机发送BMS完成充电准备报文(BRO),充电机在接收到BRO后向BMS发送充电机完成充电准备报文(CRO);如果BMS顺利接收到充电机发出的CRO报文则整个充电参数配置阶段完成。
BCP报文容
因为此报文数据容为13字节(大于8字节),所以要发送多包(也就是发送长包)。
在发送此报文数据之前要进行与充电机的请求连接,
截包工具中显示:
0x1CEC56F4100D0002FF000600
分析此报文容:
0x1CEC56F4为此报文ID,“1C”为包含报文优先级(3个位)、保留位(1个位)和数据页(1个位)。
“EC”为此报文的功能说明(EC为数据大于8字节的报文连接请求,EB为长度大于8字节的报文数据容传输)。
“56”表示此报文发送的目的地址为充电机。
“F4”表发送此报文的源地址为BMS。
(此报文说明BMS想要发送数据长度大于8字节的报文,首先希望与充电机建立长包的发送连接,之后BMS开始传输数据)。
100D0002FF000600为此报文的容,“10”表示功能码16请求发送,说明此报文想要与充电机建立连接。
“0D00”用两个字节表示BMS将要发送的数据数量为0x000D=13个字节数据。
“02”表示要发送此报文中的13个数据一共要发送2个包才足以容纳13个字节的数据。
“FF”为保留容。
“000600”表示此报文BCP对应的PGN(查看报文时可通过此数据容找出,现在要建立连接请求的报文为协议中对应的哪个报文)。
充电机接收到BMS发送的请求发送报文后,会发送一个功能码为17的准备发送报文,通知BMS可以发送长包了。
截包工具中显示:
0x1CECF456110201FFFF000600
分析此报文容:
0x1CECF456为此报文ID,“1C”为包含报文优先级(3个位)、保留位(1个位)和数据页(1个位)。
“EC”为此报文的功能说明(EC为数据大于8字节的报文连接请求,EB为长度大于8字节的报文数据容传输)。
“56”为发送此报文的源地址为充电机。
“F4”表示此报文发送的目的地址为BMS。
110201FFFF000600为此报文的数据容,“11”表示功能码17准备发送,说明充电机允许BMS发送长度大于8字节的数据包。
“02”表示充电机允许发送的最大数据包数。
“01”表示BMS将要发送的下一个数据包的编号。
“FFFF”为保留容。
“000600”表示要发送的报文为BCP。
在完成长包请求连接成功后,BMS开始发送数据包编号为1的包含数据容的报文,
截包工具中显示:
0x1CEB56F40168011C0CB000DE(第一包)
0x1CEB56F4020D6EC302080CFF(第二包)
分析此报文容:
0x1CEB56F4为报文ID,“1C”为包含报文优先级(3个位)、保留位(1个位)和数据页(1个位)。
“EB”为此报文的功能说明(EC为数据大于8字节的报文连接请求,EB为长度大于8字节的报文数据容传输)。
“56”此报文发送的目的地址为充电机。
“F4”表示发送此报文的源地址为BMS。
0168011C0CB000DE为此报文的数据容,第一个字节“01”表示此长包的数据包编号为1号数据包。
后面的两个字节“6801”表示单体动力蓄电池最高允许充电电压0x0168=360(带两位小数)(见BMS报文包含容表格)。
后面紧跟着的两个字节“1C0C”表示最高允许充电电流0x0C1C=3100(带一位小数并且有-400的偏移量,所以实际值为4000-3100=900)。
再后面两个字节“B000”表示动力蓄电池标称总能量0x000B=176kwH(带一位小数)……(后续数据容参考BMS报文包含容表格,按定义字节顺序查看并一一对应)。
在BMS发送完所有2个数据包后,充电机如果判断接收完成则发送一个功能码为19的消息结束应答报文,
截包工具中显示:
0x1CECF456130D0002FF000600
分析此报文容:
0x1CECF456为报文ID,“1C”为包含报文优先级(3个位)、保留位(1个位)和数据页(1个位)。
“EC”为此报文的功能说明(EC为数据大于8字节的报文连接请求,EB为长度大于8字节的报文数据容传输)。
“F4”表示此报文发送的目的地址为BMS。
“56”为发送此报文的源地址为充电机。
130D0002FF000600为此报文的数据容,第一个字节“13”表示功能码19消息结束应答,说明充电机已经顺利接收到BMS发送的总共13个字节的数据包。
“0D00”表示充电机计算的接收到的总共0x000D=13个字节的数据。
“02”表示充电机计算的接收到的总共2个数据包。
“FF”为保留容。
“000600”表示接收到得报文为PGN=000600的BCP报文。
CTS报文容
此报文包含7字节数据(小于8字节),所以一个数据包就可以发送。
这个报文的目的是为了和BMS做时间同步。
截包工具中显示:
0x1807F45614132026081220FF
分析此报文容:
0x1807F456为报文ID,“18”为包含报文优先级(3个位)、保留位(1个位)和数据页(1个位)。
“07”为此报文的PGN=000700(CTS报文)。
“F4”表示此报文发送的目的地址为BMS。
“56”为发送此报文的源地址为充电机。
14132026081220FF为此报文的数据容,第一个字节“14”表示时间容的秒。
“13”表示时间容的分。
“20”表示时间容的时。
“26”表示时间容的日。
“08”表示时间容的月。
“1220”表示时间容的年=2012年。
CML报文容
此报文为充电机发送的最大输出能力报文,数据容只有六个字节。
发送此报文的目的是为了让BMS了解充电机的输出能力,如果能力不匹配则BMS有可能不让充电。
截包工具中显示:
0x1808F4569411280A740EFFFF
分析此报文容:
0x1808F456为报文ID,“18”为包含报文优先级(3个位)、保留位(1个位)和数据页(1个位)。
“08”为此报文的PGN=000800(CML报文)。
“F4”表示此报文发送的目的地址为BMS。
“56”为发送此报文的源地址为充电机。
9411280A740EFFFF为此报文的数据容,前两个字节“9411”表示充电机最高输出电压=0x1194(450.0V带一位小数)。
后两个字节“280A”表示充电机最低输出电压=0x0A28(260.0V带一位小数)。
再两个字节“740E”表示充电机最大输出电流=0x0E74(370.0带一位小数和400的偏移量,所以实际电流值为400-370=30A)。
最后两个字节为填充的数据(无效数据)。
注意:
上面的CTS和CML报文都是在接收到BMS发送的BCP报文之后一起发送的,BMS只有在接收到CTS和CML之后才会发送下一个报文BRO。
BRO报文容
此报文为BMS发送的是否准备好可以让充电机充电的确认报文。
截包工具中显示:
0x100956F4AAFFFFFFFFFFFFFF
分析此报文容:
0x180956F4为报文ID,“10”为包含报文优先级(3个位)、保留位(1个位)和数据页(1个位)。
“09”为此报文的PGN=000900(BRO报文)。
“56”表示此报文发送的目的地址为充电机。
“F4”为发送此报文的源地址为BMS。
AAFFFFFFFFFFFFFF为此报文的数据容,第一个字节“AA”表示0xAA=BMS完成充电准备。
后面的“FF”FFFFFFFFFFFF为填充的数据(无效数据)。
CRO报文容:
此报文为充电机接收到BMS发送的BRO后,由充电机发送。
表示充电机也准备好,可以进行充电了。
截包工具中显示:
0x100A56F4AAFFFFFFFFFFFFFF
分析此报文容:
0x180AF456为报文ID,“10”为包含报文优先级(3个位)、保留位(1个位)和数据页(1个位)。
“0A”为此报文的PGN=000A00(BRO报文)。
“F4”表示此报文发送的目的地址为BMS。
“56”为发送此报文的源地址为充电机。
AAFFFFFFFFFFFFFF为此报文的数据容,第一个字节“AA”表示0xAA=充电机完成充电准备。
后面的“FF”FFFFFFFFFFFF为填充的数据(无效数据)。
至此表示BMS与充电机在启动充电前的流程已经完成,接下来可以进行充电。
充电阶段
在此阶段,充电机根据接收到的BMS需求报文来调整自己的输出电压和电流,确保充电过程顺利进行,在此过程中充电机方如果出现接收报文超时(在规定时间没有接收到)则立即停止充电,或者出现无常充电的故障也要立即停止充电。
在充电阶段中,BMS向充电机发送电池充电总状态(BCS)和电池充电需求报文(BCL),充电机在规定时间接收到这两个报文,向BMS发送充电机充电状态报文(CCS),(同时等待是否接收到BMS发送的充电中止报文(BST),如果接收到BST则充电机立即停止充电并向BMS发送充电机中止充电报文CST作为回应)。
BMS在接收到充电机发送的充电状态报文CCS后,向充电机发送蓄电池状态信息(BSM)、单体蓄电池电压(BMV这个报文为可选发送,接收方不用作超时判断)、单体电池电量信息(BSOC这个报文为可选发送,接收方不用作超时判断),(同时等待是否接收到充电机发送的充电中止报文CST,如果接收到CST则BMS立即向充电机发送BST以便中止充电)。
并等待充电充满。
以上过程在整个充电过程中循环进行。
BCL报文容
此报文为BMS的需求充电电压和充电电流。
充电机根据接收到的BCL报文来调整自己的输出电压和输出电流。
截包工具中显示:
0x181056F4DE0D740E02FFFFFF
分析此报文容:
0x181056F4为报文ID,“18”为包含报文优先级(3个位)、保留位(1个位)和数据页(1个位)。
“10”为此报文的PGN=001000(BCL报文)。
“56”表示此报文发送的目的地址为充电机。
“F4”为发送此报文的源地址为BMS。
DE0D740E02FFFFFF为此报文的数据容,前两个字节“DE0D”表示BMS的需求电压为0x0DDE=355.0V(带一位小数),后两个字节“740E”表示BMS的需求电流为0x0E74=370.0(带一位小数和400的偏移量,实际电流为400-370=30A)。
再后来一个字节“02”表示现在的阶段为充电机恒流充电模式。
接着的三个字节“FFFFFF”为填充的数据(无效数据)。
BCS报文
此报文为BMS方检测的充电机实际输出的电压、电流值。
还包含BMS方检测到的最高单体电池的电压值和所在组号,还有BMS当前的荷电状态SOC、估计充电完成的时间。
以便充电机终端显示这些数据。
BCS报文数据长度为9字节(大于8字节),所以会以两包的形式发送。
截包工具中显示:
0x1CEC56F410090002FF001100
0x1CECF456110201FFFF001100
0x1CEB56F401800C740E4C5134
0x1CEB56F4023C00FFFFFFFFFF
0x1CECF45613090002FF001100
分析此报文:
0x1CEC56F4为此报文ID,“1C”为包含报文优先级(3个位)、保留位(1个位)和数据页(1个位)。
“EC”为此报文的功能说明(EC为数据大于8字节的报文连接请求,EB为长度大于8字节的报文数据容传输)。
“56”表示此报文发送的目的地址为充电机。
“F4”表发送此报文的源地址为BMS。
(此报文说明BMS想要发送数据长度大于8字节的报文,首先希望与充电机建立长包的发送连接,之后BMS开始传输数据)。
10090002FF001100为此报文的容,“10”表示功能码16请求发送,说明此报文想要与充电机建立连接。
“0900”用两个字节表示BMS将要发送的数据数量为0x0009=9个字节数据。
“02”表示要发送此报文中的9个数据一共要发送2个包才足以容纳9个字节的数据。
“FF”为保留容。
“001100”表示此报文BCS对应的PGN(查看报文时可通过此数据容找出,现在要建立连接请求的报文为协议中对应的哪个报文)
0x1CECF456为此报文ID,“1C”为包含报文优先级(3个位)、保留位(1个位)和数据页(1个位)。
“EC”为此报文的功能说明(EC为数据大于8字节的报文连接请求,EB为长度大于8字节的报文数据容传输)。
“56”为发送此报文的源地址为充电机。
“F4”表示此报文发送的目的地址为BMS。
110201FFFF001100为此报文的数据容,“11”表示功能码17准备发送,说明充电机允许BMS发送长度大于8字节的数据包。
“02”表示充电机允许发送的最大数据包数。
“01”表示BMS将要发送的下一个数据包的编号。
“FFFF”为保留容。
“001100”表示要发送的报文为BCS。
0x1CEB56F4为报文ID,“1C”为包含报文优先级(3个位)、保留位(1个位)和数据页(1个位)。
“EB”为此报文的功能说明(EC为数据大于8字节的报文连接请求,EB为长度大于8字节的报文数据容传输)。
“56”此报文发送的目的地址为充电机。
“F4”表示发送此报文的源地址为BMS。
01800C740E4C5134为此报文的数据容,第一个字节“01”表示此长包的数据包编号为1号数据包。
后面的两个字节“800C”表示充电机电压测量值为0x0C80=320.0(带一位小数)(见BCS报文包含容表格)。
后面紧跟着的两个字节“740E”表示充电机电流测量值0x0E74=3700(带一位小数并且有-4000的偏移量,所以实际值为4000-3700=300)。
再后面两个字节“4C51”表示最高单体电池电压值和对应的组号。
最后的一个字节“34”表示BMS目前的荷电容量为0x34=50%……(后续数据容参考BCS报文包含容表格,按定义字节顺序查看并一一对应)。
在BMS发送完所有2个数据包后,充电机如果判断接收完成则发送一个功能码为19的消息结束应答报文,
截包工具中显示:
0x1CECF45613090002FF001100
分析此报文容:
0x1CECF456为报文ID,“1C”为包含报文优先级(3个位)、保留位(1个位)和数据页(1个位)。
“EC”为此报文的功能说明(EC为数据大于8字节的