奇特的低速CAN 总线通信故障
2020-03-10
故障现象一辆2010款大众途锐车,搭载BHR发动机,累计行驶里程约为19万km,行驶中组合仪表上的多个故障灯(电动转向助力系统故障灯、ABS故障灯、前照灯照明距离调节故障灯及空气悬架系统故障灯等)突然点亮,且组合仪表背景灯熄灭,组合仪表右下角的蓄电池电量指示灯归零,同时还伴有空调鼓风机不工作、车窗玻璃无法升降等故障现象。故障现象仅能持续几秒钟,然后一切恢复正常,故障频率不高,也没有规律,有时好几天才出现1次,有时1天出现好几次。
故障诊断用故障检测仪检测,发现网关中存储有多个控制单元无通信的故障代码(图1),且这些控制单元都连接在舒适CAN总线上,由此推断该车舒适CAN总线偶尔无法正常通信。
图1 网关中存储的部分故障代码(截屏)
该车的舒适CAN总线为低速总线,数据传输速率为100 kbit/s,采用双绞线连接,分别传递CAN-H信号和CAN-L信号。CAN-H线和CAN-L线之间没有终端电阻,两者是彼此独立工作的。低速CAN总线支持单线模式,当CAN-H线或CAN-L线其中一条导线出现故障时,比如断路、对搭铁短路或对正极短路,系统仍然可以工作;当CAN-H线和CAN-L线相互短路时,两条CAN线上的信号电压是相同的,系统会关闭CAN-L线,只使用CAN-H线通信。
如图2所示,在不发送信号时(隐形状态),CAN-H线上的电压约为0 V,CAN-L线上的电压约为5 V;当发送信号时(显性状态),CAN-H线上的电压约为4 V,CAN-L线上的电压约为1 V。
图2 正常时舒适CAN总线的信号波形(截屏)
低速CAN总线一般不容易出现无法通信的故障,毕竟CAN-H线和CAN-L线同时损坏的概率很低,还有一种可能是某个控制单元损坏,造成整个舒适CAN总线都无法通信,但具体是哪个控制单元损坏不得而知,首先得想办法采集故障出现时的数据。经过反复试车发现,在尽可能多地使用车上的电器设备(比如接通前照灯、雾灯、危险报警灯、音响和空调,反复按喇叭,以及反复升降车窗玻璃)时,故障出现的频率较高。
用pico示波器测得故障出现时舒适CAN总线的信号波形如图3所示,分析认为,CAN-H线和CAN-L线上在重复传递两组不同的电压波形,即CAN-H线在传递一组数据,与此同时CAN-L线在传递另一组完全不同的数据。用pico示波器诊断软件自带的串行译码功能对舒适CAN总线的信号波形进行译码(图4),发现CAN-H线上数据(蓝色波形)的ID为404,CAN-L线上数据(红色波形)的ID为408。由于每个ID只能对应一个控制单元,因此CAN-H线和CAN-L线上的信息是由2个控制单元分别发送的。
图3 故障出现时舒适CAN总线的信号波形(截屏)
图4 对舒适CAN总线的信号波形进行译码(截屏)
故障出现时CAN总线上仍能保持规律的电压波形,暂时排除线路存在问题的可能。这个故障很奇怪,由于某种原因造成CAN-H线和CAN-L线上发送的信息不一致,控制单元无法识别CAN总线上传递的信息,以致整条舒适CAN总线上的控制单元均暂时失去通信。由于没遇到过这种故障,只好仔细地分析波形,结果意外地发现舒适CAN总线偶尔处于单线模式(图5),有时是CAN-H线上的信息缺失,有时是CAN-L线上的信息缺失,另外还注意到,故障发生前会连续出现几次单线发送信息的情况。
图5 舒适CAN总线偶尔处于单线模式(截屏)
真的有控制单元处于单线模式吗?再次用故障检测仪检测,发现前部车身控制单元、后部车身控制单元、组合仪表、网关及左后车门控制单元等中存储的故障代码“单线的舒适/便捷功能数据总线组,断路,静态”无法清除。读取网关中舒适CAN总线的通信数据流(图6),发现只有左后车门控制单元处于单线模式,其他控制单元均能正常通信。拆下左后车门内衬,测量左后车门控制单元与网关(该车的网关集成在组合仪表中)之间的舒适CAN总线是否导通,发现橙/棕色的CAN-H线断路了,“飞线”搭接左后车门控制单元与网关的CAN-H端子,所有故障代码均变为偶发状态,且舒适CAN总线的通信数据流也恢复正常,说明这就是故障原因。顺着线路查找断路点,最终在驾驶人侧B柱下方发现问题,此处CAN-H线的接点进水腐蚀(图7),上面的3根线分别连接至网关、左后车门控制单元及驾驶人侧座椅控制单元,其中网关与驾驶人侧座椅控制单元的线路连接很牢固,而左后车门控制单元的线路只是稍微挨着一点,用手轻轻一拽就掉了,说明故障是由左后车门控制单元的CAN-H线虚接引起的。为验证推断的准确性,人为将左后车门控制单元的CAN-H线断开,用故障检测仪读取故障代码,发现仍然是之前的那几个控制单元记录舒适CAN总线处于单线模式的故障信息,同时还发现,每当升降左后车窗玻璃时,之前的故障现象就会出现。
图6 网关中舒适CAN总线的通信数据流(截屏)
图7 CAN-H线的接点进水腐蚀
故障排除修复驾驶人侧B柱下方的CAN-H线接点后反复试车,故障未再出现,交车半个月后回访客户,车辆使用一切正常,故障排除。
故障总结CAN总线使用两条导线传递信息,为了消除干扰,控制单元在接收信息时使用差分信号,即用CAN-H线的电压减去CAN-L线的电压,以此确保数据能够可靠传输。舒适CAN总线进入单线模式后,抗干扰能力和容错能力下降,在网络通信繁忙时容易出现工作不正常的情况。