李 彤, 屈金标, 岳 杰, 李 闯
(装甲兵工程学院 信息工程系,北京 100072)
当前,在综合电子系统中大量采用了 CAN[1-3]总线网络,这对车载CAN总线网络的可靠性提出了很高的要求。然而针对CAN总线网络的测试还仅仅处于数据链路层测试阶段,对CAN总线网络没有进行在环实时监测。
目前对单台设备的测试是对网络中的单一节点设备进行测试,主要测试参数有总线传输波形、总线电压等。然而功能良好的单个CAN总线节点设备接入到CAN总线网络中不能保证该网络具有应用的通信质量,甚至不能保证该网络能够正常通信,这是因为CAN总线网络的通信质量不仅与总线节点设备完好有关,还与总线终端匹配电阻的阻值和终端匹配电阻的放置的位置有关。当在一个CAN总线网络中新加入了一个节点设备后,其放置的位置会对整个网络状态产生影响,若放置位置在终端匹配电阻后面还可能使整个网络瘫痪,而目前的测试手段由于仅仅是数据链路层的测试,没有对总线传输的数据波形尽量测量,无法及时发现这种问题。
总的来说,目前基于数据链路层的CAN总线网络测试方法存在以下4点不足:①单台设备测试难以保证接入系统后的性能; ②目前的总线测试手段没有测量线路上传输的信号波形;③通过总线协议芯片获得的总线数据帧不全面,会漏掉被芯片过滤掉的错误帧和异常帧;④CAN总线传输网络的“偶发”故障还没有监测手段。
针对上述缺点,本文参照在汽车开发中采用的在环仿真技术,提出了车载CAN总线在环测试技术。
目前,通过数据链路层测试CAN总线网络的传输特性技术已经比较成熟,其核心是对帧格式的解析。但是在解析过程中,CAN接口芯片的错误管理器会自动过滤掉总线上的错误帧和异常帧。所以,基于数据链路层的车载CAN总线测试技术不能全面的判断网络的传输特性和节点故障情况。
因此,本文设计了基于物理层的车载CAN总线在环测试技术。
基于物理层的在环测试技术采用替代的方法不仅能够完成总线网络的性能测试,也能够定位出现故障的节点和信号不强的节点,其核心思想是“在环”和“替代”。 其测试内容分为2个方面。
(1)总线网络的性能测试
当车内正常通信时,首先保持总线节点设备的位置不动,另外终端电阻的大小以及位置也不能改变,其次将CAN总线测试系统和示波器接入总线,进而测试总线网络的性能指标,如总线电压。
(2)故障定位
当总线节点设备发生故障时,非在环测试是不能检测出故障节点的位置,而在环测试是可以实现故障定位。
方法是将总线中的一个原有节点之外的其他节点全部替换成测试节点仿真设备,再通过终端向总线发送数据,若总线通信正常,则说明替换下来的该原有节点不是故障节点模块;否则,则说明替换下来的原有节点是故障节点,测试模型如图1所示,把其中的原有节点除待测节点外的其他节点全部换成测试节点仿真设备。
为实现车载CAN总线的在环测试,需要的硬件设备除了基于物理层的总线测试系统,还有CAN总线的测试节点仿真设备。测试节点仿真设备的作用是替代车载CAN总线网络的原有节点,用来测试总线网络的性能指标和定位出总线网络的故障节点。下面介绍本文设计的基于 MCS-51的测试节点仿真设备。
该节点仿真设备的功能主要有2个:①将从CAN总线上接收的数据发回到总线上;②将CAN总线的数据帧转换成USB格式的数据,通过USB接口上传到PC机。
2为本节点模块的功能图,之后详细介绍这 3个模块的硬件设计。
如图3所示,本模块采用STC89C58作为主控芯片,采用SJA1000[4-7]作为CAN控制芯片,选用24C02型号的E2PROM作为存储设备。
SJA1000是一种独立的 CAN控制器,它通过并口与单片机通信,主要用于移动目标和一般工业环境中的区域网络控制。SJA1000是本模块的 CAN控制芯片,与STC89C58一起组成了本模块的数据转换核心部分。
E2PROM和单片机通过I2C总线通信,即24C02的5、6引脚分别连接到单片机的3、5引脚,用来存储配置到SJA1000中的CAN参数,单片机断电后,这些参数不会丢失,继续保存在E2PROM中,以后上电,单片机直接从E2PROM中读取SJA1000控制器的控制参数。
注意:图3中“K”表示千欧,这在图4、图5中表示相同意思,之后不再赘述。
CAN总线数据隔离收发电路是由 CAN收发器TJA1050、高速光电隔离器 6N137和隔离电源模块B0505S组成。其中,TJA1050从总线上接收CAN差分信号,并将之转换为数据流格式送到CAN控制器SJA1000中,SJA1000将数据流转换成并口数据送入单片机89C58中处理。当CPU需要向总线发送数据时,TJA1050将数据流传换成 CAN差分信号的格式发送到 CAN总线上。6N137作为高速光电隔离器,实现CAN总线收发与总线的完全电气隔离。具体设计电路如图4所示。
在设计的在环测试系统中,节点仿真设备接收到CAN总线上的数据要做出适当的反应。为测试方便,节点仿真模块对于CAN总线上接收的数据有两种处理方法:①将接收的总线数据重新发回到 CAN总线上,可以用来测试总线传输延迟;②将接收到的CAN总线数据通过USB口发送给上位机[8],通过上位机软件将接收到的数据以CAN总线帧的形式显示出来。 USB接口是下位机与上位机通讯的窗口,一个合理的USB通讯电路才能完成与下位机流畅的通信。设计如图5。
CH372内置了 USB通信中的底层协议,具有内置固件模式和外置固件模式。在内置固件模式下,CH372自动处理默认端点 0的所有事务,完成标准的USB枚举配置过程,而本地单片机只负责数据交换。在外置固件模式下,由外部单片机或DSP根据需要自行处理各种USB请求,从而实现符合各种USB类规范的设备。这里,节点模块选用内置固件模式进行通信。
根据国际标准ISO11898,CAN总线具有两种逻辑电平,显性和隐性。在总线共模的条件下,CAN_H波形的显性电压典型值和隐性电压典型值分别为3.5 V和2.5 V,CAN_L波形的显性电压典型值和隐性电压典型值分别为1.5 V和2.5 V,如图6所示(上面一条线表示CAN_H,下面一条线表示CAN_L)。
测试模型如图 1,将示波器和总线测试系统接入CAN总线网络(此时,总线上没有接入测试节点仿真设备),测得波形如图7。由图可以看出,总线上传输的CAN_H和CAN_L信号各有2种(上面2条为CAN_H,下面2条为CAN_L),其中,CAN_H1信号的显性平均电压是4 V,CAN_H2信号的显性平均电压是3.5 V,CAN_L3信号的显性平均电压是1.45 V,CAN_L4信号的显性平均电压是1.2 V。此时,总线上传输的CAN_H1信号和CAN_L4信号的显性平均电压与典型值不符,是异常信号,因此CAN总线网络出现了故障。
为了确定是总线中的一段线路出现故障还是终端匹配电阻没有完全匹配,亦或是总线节点中出现了故障节点,把总线上所有节点全部换成测试节点仿真模块,测得波形如图 8。由图所示,总线波形与图6基本一致,这说明总线网络性能良好,终端匹配电阻也基本符合理论要求。
为了定位故障节点设备,把原有节点1替换回原来的位置,测得波形如图 9。由图所示,总线波形与图6基本一致,这说明原有节点1不是故障节点。进而把原有节点2换回原来的位置,原有节点1换成测试节点仿真模块,测得波形如图10。由图所示,总线波形与图7基本一致,这说明原有节点2为故障节点。
本文简单介绍了基于物理层的车载CAN总线在环测试技术,并利用“替代法”和测试节点仿真模块快速地定位出故障节点设备,验证了该方法的可行性,解决了车载电子系统故障节点定位难的课题,为今后的车辆维修保障提供了方法和技术支持。
[1] 李光忠,吴士涛.基于CAN总线智能节点设计[J].微计算机信息,2009(26):64-65.
[2] 陈亦骏,姚晓东.CAN总线共享时钟调度算法的应用与改进[J].通信技术,2009,42(04):76-78.
[3] 蔡连君.基于 CAN总线的生产监控系统研究[J].通信技术,2009,42(10): 150-152.
[4] 谢勤岚,曹汇敏.USB与CAN总线转换电路的设计[J].计算机测量与控制,2009,17(09):1843-1845.
[5] 侯明,杜奕.基于CAN总线的接口电路设计[J].通信技术,2008,41(07):138-140.
[6] 陈昕静,易健雄,彭力.基于 DSP的实时监控和 SJA1000控制器实现 CAN总线接口[C].中国:[s.n.], 2007:1105-1108.
[7] 陈萍,蒋秀杰.基于FPGA的CAN总线通信系统[J].计算机测量与控制,2009,17(12):2482-2484.
[8] 刘振永,程鑫.基于CAN总线的汽车点火测试系统[J].仪表技术与传感器, 2007(12):54-56.