在CAN网络上截取的报文一般被保存为为.txt或.asc等格式,在分析报文时经常需要对着协议来逐条报文、逐个字节甚至逐节来解析。为了应对这种情况,行业内也是提出了各种解决方案,比如Vector的CAN报文软件,或者自己写上位机来自动解析,再或者将对应报文导入进Excel中用公式自动解析……
本文详细介绍了在Excel中用公式解析CAN报文的方法,读者也可基于这个Excel来编写解析用到的其他报文协议。
报文定义类型
以GBT 27930协议中的CRM报文为例,CAN报文中的字节定义主要有以下几种用途。
- 状态定义,比如“BMS不能识别”和“BMS能识别”这两种状态
- 数据定义,比如充电机编号
- 编码定义,比如将报文内容转换为ASCII码
常用公式
根据这几种用法,可在Excel中用对应的公式将其表示结果自动解析出来。以下是常用到的公式(以下示例如未特别注明,则数字均为十进制格式):
- 进制转换
HEX2DEC(number) —— 将十六进制数字number转换成十进制格式。如填入十六进制数字10,则返回十进制数字16,即HEX2DEC(10) = 16;
- 除法取余
MOD(number,divisor) —— 将数字number除以divisor,然后取结果的余数。如number = 10,divisor = 3,则返回结果为1,即MOD(10,3) = 1;