刘鑫爽,程洋
(柳州铁道职业技术学院,广西柳州,545616)
随着科学技术的不断发展,应用于汽车上的设备不断改进和提升,这些装置与传统的机械设备相比,具有更高的通信及计算要求,从而,提升了汽车的性能、效率以及安全性[1-2]。对于复杂的汽车设备及装置的控制,需要可靠的总线技术以及网络技术来支撑,并适用于复杂的汽车环境。这些技术的发展成为汽车相关技术发展的必然趋势[3]。CAN总线技术作为一种先进的支持串行的数据通信网络,能够在实时的以及分布式控制的系统上运行[4],已成为现场总线国际标准之一[5],广泛应用于汽车工业领域,成为汽车的主干通信总线。目前,汽车运行过程中的状态只有有限的信息通过车载仪表面板显示,仍有很多重要的信息无法直观地显示,如故障报警信息等,而这些信息是能够通过CAN总线向对应的ECU申请,由ECU响应并反馈这些信息数据的。因此设计一个通过CAN总线能获取汽车各ECU的参数数据,并直观地显示出来的监控系统,对汽车状态进行监测和故障诊断对于实现车辆安全运行具有重要的作用[6-7]。另外,对于车主而言,汽车运行状态监测技术可以让车主准确、直接了解车辆的各种参数和状态,而不需要到专门的检测部门进行了解,降低不必要的车辆维护成本[8-10]。
硬件电路设计如图1所示。
图1 汽车CAN总线协议分析仪系统框图
系统采用嵌入式STM32F103VET6作为CPU,片内集成CAN控制器,采用TJA1050作为 CAN数据的收发器。通过OBDII接口连接到车载CAN总线接口。显示器采用LCD串口显示屏。电源模块电路采用L7805三端稳压IC作为5V输出的稳压芯片,为CAN收发模块、3.3V稳压电路输入以及光耦模块提供电源。采用AMS1117_3.3稳压IC作为3.3V电压输出电路的电压转换芯片,为主控制器提供直流电源。
CAN协议数据帧定义包括ID的定义、帧数据的定义等,以发动机转速为例,利用CAN协议分析仪和汽车诊断仪ISCANCAR VAG对斯柯达轿车的CAN通信数据进行采集。采集方法如下:首先,将汽车诊断仪通过汽车OBD-II接口接入大众汽车的CAN总线,启动汽车,然后将汽车诊断仪上切换到007通道,请求读取发动机转速。其次,把CAN协议分析仪的CAN接口与OBD-II接口中的CAN总线引脚连接,将CAN总线分析仪的CANPro计算机端软件的CAN波特率配置为500kbps。此时CANPro协议分析平台就可获取到数据流通道号为07的发动机转速的数据。
CAN总线分析仪读取到的汽车发动机转速的通信数据如图2所示。
图2 CAN总线分析仪获取的由汽车诊断仪申请发动机转速的数据
解析过程如下:
(1)对于序号为0和序号为1的这两帧数据表示成功进入汽车发动机(Engine)系统,握手成功。在这两帧数据块中:
发送:01 C0 00 10 00 03 01
接收:00 D0 00 03 40 07 01
在发送这行的第0个字节“01” 表示的是发动机系统的触发地址码,在接收帧的第五个字节和第六个字节“07 01”表示的是发动机系统的系统地址码。
(2)序号为2和序号为3这两数据帧是空闲帧,表示的是在等待读取数据流或者其它任务的执行。
(3)序号为4的帧是CAN诊断仪发出的申请发动机07组参数的请求帧,其中“02 21”表示命令字;“07”表示的是参数组编号。
(4)序号为6到9和序号为12到15的帧ID为0x300表示的是汽车发动机ECU的响应帧,接收的第6帧和第12帧的最后两个字节“01 13”和“02 13”就是发动机的转速数据。将接收ECU帧的数据提取出来,转速的计算公式为:(buf[6]*buf[7])/5。
监控系统采用串口LCD显示屏,通过对应的组态软件,设计出友好的显示界面,并定义各显示元素的显示属性,根据串口显示屏的通信协议,通过RS232串口与车载CAN总线监控系统主机进行通讯,实现汽车状态参数的实时显示。
车载CAN总线监控系统主机的软件设计主要包括:系统时钟配置模块、串口中断配置模块、时钟节拍配置模块、串口屏程序初始化模块、CAN初始化模块等。软件设计流程图如图3所示。监控系统通过串口LCD屏,触摸选择实时显示汽车状态参数,监控主机向汽车对应ECU申请参数,ECU响应并反馈参数信息,经解析后送至串口LCD屏实时该参数。
图3 监控系统软件流程
实车测试是研发车型量产前的最后测试,也是最关键的测试[9]。文中以上海大众的斯柯达轿车为测试对象,将车载CAN总线监控系统的OBD-II接口通过Y型电缆分别于汽车的OBD-II接口和CAN总线分析的CAN接口连接。驾驶员启动汽车,汽车档位设置在空挡,加油,在不同的发动机转数下,通过CAN分析仪的CANPro软件读取设计的CAN总线监控系统请求发动机转速请求帧及发动机ECU响应帧的数据,通过读取发动机ECU响应的参数组为07的帧的数据域数据,解析出发动机转速,与汽车的发动机转速仪表以及CAN总线监控系统的串口LCD显示器显示出的发动机转速三者进行比较,如果相同,则可以验证解析数据的准确性,以及车载CAN总线系统的可行性。
将接收到汽车发动机转速的部分数据做成表格,如表1所示。
表1 斯柯达汽车CAN总线上的发动机转速相关数据
将“C2 13”转换成转速值:194*19/5= 737.2,取整后得到转速为737r/min,与图4中显示的发动机转速一致。
图4 汽车CAN总线监控系统的显示转速值
测试表明:汽车CAN总线监控系统能采集和解析斯柯达汽车的状态参数,并能实时实现这些参数。
文中以斯柯达汽车的发动机转速为测试参数对象,验证了CAN总线监控系统的应用可行性。在监控系统上,以同样的数据采集和解析的方法,可以获取汽车运行过程中的主要参数和报警信息,并实时显示这些参数,使汽车运行状态参数可视化,有利于驾驶者了解汽车运行状态,提高安全性。