ZCANPRO的.can文件解析

写在前面

        ZCANPRO是致远电子ZLG公司推出的canpro继任软件,尽管界面花哨了很多,不过个人用得并不习惯。主要原因有以下几点:

  • ZCANPRO没有了【导入数据】功能,只能通过【数据回放】来将保存的离线数据进行加载,在一定程度上浪费了点时间;
  • ZCANPRO可显示的报文列表最大数量仅仅只有100000帧,你没数错,就是只有10万帧,这对于总线负载比较高的场合也就是几分钟数据就得被覆盖,非常不利于将数据保存下来离线分析。然而原版的CANpro的列表显示上限不设限制,个人测试中显示过300多万帧都不卡。
  • 还是数据量的问题,尽管ZCANPRO也可以进行【实时保存】,但是它每隔10万帧就会自动分割成两个文件,不利于离线分析。
    在这里插入图片描述

        不过,ZLG官网已经不再提供CANpro的下载了,所以在这里我们就针对他主推的ZCANPRO软件的.can文件来分析分析。如果有CANpro安装包需要,可以点击这里到百度网盘下载,提取码:001q 。ZCANPRO软件请自行到ZLG官网下载,下图是ZCANPRO软件本尊:
在这里插入图片描述

言归正传

        ZLG公司是国内CAN总线的先驱者,其推出的CAN总线产品也是广受好评。对于吾等处于无产阶级的学生仔来说,ZLG的CANtest、CANpro等软件可以免费无限制使用真是太好了。ZLG公司也针对其产品,定义了.can格式的二进制文件来保存CAN数据,以降低文件的体积。ZCANPRO软件作为CANpro的接棒者,其保存的.can格式文件与CANpro软件的.can文件并不相同。CANpro软件生成的.can文件的解析请参看本人另一篇博文《ZLG的CANpro保存的.can文件解析》

先抛结论

  1. CANpro中,.can文件中保存的N帧CAN报文数据的总字节数为:20+N×24
  2. ZCANPRO中,.can文件中保存的CAN报文数据是变长度的,其N帧报文总字节数为:
    B y t e s C o u n t = 12 + N × 58 + i = 1 N l e n g t h ( i ) BytesCount=12+N×58+ \sum_{i=1}^N{length(i)}
    如有错误,请务必指正,谢谢!

这都是什么鬼东西

固定前缀

ZCANPRO的.can文件的固定前缀为12字节:ff ff ff ff 00 00 00 00 01 00 00 00。嗯,也不知道它代表啥意思,不像CANpro那样很直白的“Zhiyuan CAN Data ”。反正就是这么个前缀。
在这里插入图片描述

单帧报文

ZCANPRO的.can文件的单帧报文为变长度的58~66字节。
在这里插入图片描述

Bytes 含义 示例
Byte0~Byte4 组号GROUP_ID 15 00 00 00 01 表示组号为:0x0100000015
Byte5~Byte29 不详 -
Byte30~Byte33 CAN_ID ef 1f f1 18 表示组号为:0x18F11FEF
Byte34 不详 -
Byte35 帧格式 0x00为数据帧,0x01为远程帧
Byte36 帧类型 0x00为标准帧,0x01为扩展帧
Byte37 数据长度length 根据数据长度取值,例如0x08表示长度为8
Byte38~Byte41 不详 -
Byte42~Byte(42+length-1) 数据Data[0]~Data[?] 此区域长度为数据长度。
Byte(42+length)~Byte(42+length+5?) 时间戳(微秒) 单位为微秒,例如:FC 98 7F 04 00(即0x00047F98FC)表示时间戳为75.471100 s。特别说明:此处长度有可能不止5字节
Byte(42+length+5?)~Byte(42+length+15) 不详 -

接下来,我们对不同长度的CAN报文进行测试,为了更便于观察,已将前缀10个字节删去,不同数据长度下单帧报文的数据如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
通过以上各Bit的解析,即可对.can文件进行数据分析,本人在自开发的X-CAN离线分析软件中也实现了对ZCANPRO软件生成的.can文件的数据解析。详情请看本人博文:CAN报文的离线分析:X-CAN离线分析平台

在这里插入图片描述

发布了26 篇原创文章 · 获赞 14 · 访问量 4927

猜你喜欢

转载自blog.csdn.net/jaysur/article/details/98208350
CAN