CAN总线哪个节点在通讯?发送了什么信息?(二) 作者:Steve Smith
在上一篇文章中,我们通过捕获变速杆处电流以及开闭电子手刹按钮两种方法确认了ID 1 97属于变速杆,并且知道了开闭电子手刹时ID 1 97数据的变化。那么是否还有其他技巧方法可以帮我们分析CAN总线上一些节点的通讯情况呢?其实是有的,我们可以断开CAN控制器或者利用扫描工具的主动测试改变CAN控制器的状态。
同样地,我们将钥匙旋至“ON”挡,发动机未起动,蓄电池工作正常。如图1所示,我们将低压燃油泵控制单元与CAN 网络的连接断开(拔掉燃油泵保险丝),扫描工具数据流中可以看到“燃油控制”无法通讯。测出此时CAN高波形并进行译码,将所有缓冲区的数据导出,如图2所示。
图1
图2
然后我们在燃油泵控制单元正常连接的情况下进行CAN高的捕获和译码,如图3和图4所示。将译码后所有缓冲区的数据导出为.csv文件,这样我们就导出了燃油泵正常通讯和无法通讯两种情况下的译码数据。
图3
图4
用EXCEL打开燃油泵正常通讯的.csv文件(FP ONLINE),将E列(ID列)复制到Q列中,并命名为ID FP ON。选中Q列,在“数据”菜单,选择“删除重复项”,这将删除10000多个重复的ID,最后按照A-Z对该列排序。
然后用EXCEL打开燃油泵无法通讯的.csv文件(FP OFFLINE),将E列(ID列)复制到燃油泵正常通讯的.csv文件(FP ONLINE)中R列,并命名为ID FP OFF。选中R列,在“数据”菜单,选择“删除重复项”,最后按照A-Z对该列排序。
接下来,单击“ 开始”菜单,同时选中Q列和R列,并点击“条件格式”>“突出显示单元格规则”>“重复值”,然后选择“唯一值”。然后,它将突出显示多个ID,这些ID在燃油泵正常通讯时(Q列)是存在的,但是在断开燃油泵控制单元时(R列)丢失。因此将这些突出显示的ID值复制并粘贴到“ S”列中,它们就是我们感兴趣的唯一ID值!
如图5所示,可以看到我们已经找出了感兴趣的ID值,具体步骤可参考下面这个视频:
图5
接下来我们用扫描工具的主动测试控制燃油泵开启,同时捕获燃油泵电流以及CAN高,并且在单个缓冲区中查看串行译码数据,如图6所示。
图6
在串行译码表格中点击“过滤”功能,将之前找出的唯一ID值一次输入。我们发现,没有找到ID 2 26和ID 2 F8的数据,但是ID 3 35出现了4次,每秒传输一次,查看图6中开始时间可知。有趣的是,ID 3 35第一条信息是在燃油泵电流出现前50ms传输的。另外请注意,ID 3 35的字节是发生了变化的!
ID 5 17是另一个在燃油泵开启时有数据的ID值,在“过滤”功能输入时,只有ID 3 35和ID 5 17有数据。如图7所示,ID 5 17每646ms传输一次,但是字节没有任何变化!因此基本可以判断ID 5 17与燃油泵的运转是没有关系的,当然这只是猜测,并不是100%确定。
图7
分析进行到这里,我们将重点怀疑的唯一ID值范围缩小到了ID 3 35和ID 5 17。接着我们选择“时间标尺间”译码,具体分析开启燃油泵时的CAN 译码数据。再次在“过滤”中输入ID 3 35和ID 5 17,数据包减少了很多,如图8和图9所示。
图8
图9
用扫描工具的主动测试控制燃油泵开启,同时捕获燃油泵电流以及CAN高的波形文件如下,大家可以下载学习: |