基于CANoe的车载CAN总线监控系统的设计
2021-11-28刘鑫爽程洋
刘鑫爽,程洋
(柳州铁道职业技术学院,广西柳州,545616)
0 引言
CAN总线技术作为一种先进的支持串行的数据通信网络,能够在实时的以及分布式控制的系统上运行[1],已成为现场总线国际标准之一[2],也因此成为汽车的主干通信总线。目前,汽车运行过程中只有有限的信息状态是通过车载仪表面板显示出来的,还有一些如故障报警信息等重要的信息并没有直观地显示。而这些信息是能够通过CAN总线向对应的ECU申请,由ECU响应并反馈这些信息数据的。因此设计一个通过CAN总线能获取汽车各ECU的参数数据,并直观地显示出来的监控系统,对汽车状态进行监测和故障诊断对于实现车辆安全运行具有重要的作用[3-4]。此外,汽车运行状态监测技术可以让车主准确、直接了解车辆的各种参数和状态,而不需要到专门的检测部门进行了解,降低不必要的车辆维护成本[5-7]的同时,也为车主提供了极大的方便。
本文设计的车载CAN总线监控系统的系统原理框图如图1所示。由汽车诊断仪和CAN协议分析仪构成汽车某参数的协议数据获取工具,通过CANPro获取协议数据,分析并解析出该参数通信协议。根据解析出的通信协议,通过CANoe搭建仿真模型,用显示面板实时显示参数。下面以大众汽车发动机转速参数为例,描述参数获取、协议数据分析、CANoe仿真系统搭建与仿真结果分析。
图1 CAN总线监控系统的系统原理框图
1 参数的获取
下面以获取大众汽车发动机转速为例,描述汽车参数的获取和分析过程。大众汽车CAN总线应用层协议采用标准帧格式,所以以标准帧格式对斯柯达汽车CAN数据进行提取和解析。
■1.1 CAN数据的提取方案
利用CAN协议分析仪和汽车诊断仪ISCANCAR VAG对斯柯达轿车的CAN通信数据进行采集。将汽车诊断仪通过OBD-II接口接入大众汽车的CAN总线,启动汽车,然后将汽车诊断仪上切换到007通道,请求读取发动机转速。
将CAN协议分析仪的CAN接口与OBD-II接口中的CAN总线引脚连接,将CAN总线分析仪的CANPro计算机端软件的CAN波特率配置为500kbps;CANPro协议分析平台就可获取到数据流通道号为07的发动机转速的协议数据。
CAN总线分析仪读取到的汽车发动机转速的通信数据如图2所示。
图2 CAN总线分析仪获取的由汽车诊断仪申请发动机转速的数据
■1.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。
2 仿真系统搭建
仿真系统包含发动机控制单元节点(Engine)、控制节点(control)、发送节点(Send)3个节点;发动机控制单元节点用于解析发动机转速数据协议帧,并将转速数据在显示面板上显示;发送节点用于定时发送发送机转速参数的请求帧,向ECU申请发动机转速数据,ECU收到请求后,发送发动机转速数据协议帧;控制节点用于在全仿真方式下,模拟汽车ECU在收到发动机转速参数申请帧后,发送转速数据帧;在半实物仿真方式下,监控系统的OBDII接口直接与车载CAN总线连接,替代控制节点,此时发送节点向汽车ECU发送发动机转速参数请求帧,网络拓扑图如图3所示。
图3 CAN总线网络拓扑图
CANdb++是一种集成在CANoe开发环境中的数据库操作工具,它包含了整个系统的各个节点、环境变量、消息的设定以及信号在消息中的相对位置的配置。通过使用数据库编辑工具CANdb++把汽车CAN应用层协议定义的各个参数和报文信息编辑到一个数据库中,以消息的形式定义报文数据帧,再以信号的形式定义各个参数,最终把建立好的数据库DBC文件导入仿真系统中。根据前面分析出的汽车发动机转速协议数据制作如表1所示。
表1 数据库编辑应用表
在创建完网络节点、消息、信号和环境变量,并且相互之间关联后,基本上构成了一个网络数据库,对数据库里的网络、节点、消息和信号建立属性,如图4所示;采用在CANoe软件中自带的Panel Designer工具来编辑面板。
图4 DBC数据库建立
3 CAPL语言编程
建立好了的网络数据库和显示面板的设计,但各节点还没进行相互通信,对发出的报文无法做出响应及处理,因此需对各节点进行CAPL语言的编程从而实现相应的功能。编程时用到了系统事件(on start)、CAN消息事件(on message)、时间事件(on time)和环境变量事件(on envVar)等。
发动机系统节点Engine,用于从CAN总线上获取汽车发动机转速的协议数据帧,解析出转速后在显示面板上显示:
4 仿真系统的运行结果分析
系统的仿真结果如图5 所示。从CANoe软件的Trace跟踪窗口可以查看仿真系统中进行通信时,能正常发送与接收的报文,可以验证该仿真系统是可以正常通信的。跟踪窗口中记录了获取发动机转速参数的报文,同时通过在CANoe中的显示面板上显示出相应的发动机转速值。
图5 发动机转速数据及仪表显示
使用汽车诊断仪获取斯柯达汽车的发动机转速值如图6所示。仿真系统获得发动机转速与汽车诊断仪所是一致的。从而验证了所解析出来的发动机系统转速参数的协议的准确性。
图6 使用汽车诊断仪获取斯柯达汽车的发动机转速值
5 结束语
文中以斯柯达汽车的发动机转速为测试参数对象,验证了CAN总线监控系统的应用可行性。在监控系统上,以同样的数据采集和解析的方法,可以获取汽车运行过程中的主要参数和报警信息,并实时显示这些参数,使汽车运行状态参数可视化,有利于驾驶者了解汽车运行状态,提高行车安全性。