基于DBC的汽车CAN报文远程采集与分析系统设计

时间:2022-09-04 05:04:38

基于DBC的汽车CAN报文远程采集与分析系统设计

摘 要

应用CAN网络信息描述文件DBC,实现从汽车CAN总线上实时获取网络中所有节点的工况数据,并利用移动通信技术实现远程中心系统实时监测汽车内部ECU的工作状态,为汽车研发及试验提供重要参数,为汽车售后服务提供基础数据。

【关键词】CAN ECU DBC 远程采集分析

1 引言

随着CAN总线技术在汽车上的广泛应用,汽车上集成车载智能电子系统种类繁多,电子系统核心是ECU,例如:电子稳定控制系统(ESP)、防抱死制动系统(ABS)、电子驻车制动系统(EPB)等。虽然汽车自动化程度越来越高,但内部结构也日趋复杂。因此,实时监测ECU工况数据是汽车研发及试验过程中一项重要的工作。

1.1 CAN总线

CAN是德国博世在1986年研制出面向汽车的总线协议,随后英特尔推出第一款CAN控制芯片,标志着CAN总线技术的正式诞生。CAN已通过ISO11898 和ISO11519国际标准,其高性能特性不仅被应用于汽车工业,还广泛应用于各种自动化领域,成为当前技术发展的热点之一。

1.2 DBC文件

DBC文件是由德国维克多公司的,它被用来描述单一CAN网络中各逻辑节点信息,依据该文件可以开发出用来监视或分析CAN网络中所有逻辑节点的运行状态,也可以是有针对性的ECU通信应用软件。

2 系统设计

2.1 业务描述

本系统主要业务功能是依据DBC文件,动态配置CAN数据采集表,对收到的CAN数据依据信号关系快速转换、清洗及分类,并对每种信号进行统计存储,最终通过Matlab引擎和amCharts图表控件实现数据分析,以图表方式将工况数据展现出来。

2.2 数据通信设计

本系统依据TCP/IP网络协议,采用异步I/O模型实现Socket通信处理,有效提高系统并发量。其通信数据结构定义如下:

(1)总体封包结构(或称消息结构)由{标识位}+{消息头}+{消息体}+{检验码}+{标识位}组成。一个封包数据称为一条消息,它可能被拆分成多个子封包后再进行无线传输。这里的标识位用来表示一条消息的起始和结束,消息头用来表示消息特有的属性,消息体携带的是用户数据,检验码用来保障数据准确性。(2)消息头结构由{消息ID}+{消息属性}+{终端设备ID}+{消息流水号}+{封包项组成},被用于附加每条上报消息的特殊属性。(3)消息体结构可根据实际业务进行扩展,本系统主要实现CAN数据上报,其结构由{流水号}+{信号数据总包数}+{数据长度}+{时间序列}+{CAN数据}组成。车载终端依据上述封包结构对汽车CAN报文进行封包,并以每秒的频率向实时上报,并且需保障某一个毫秒系列的数据封包中,不能出现重复的数据。

2.3 DBC文件处理

DBC文件编译器用来从文件中提取CAN总线逻辑信息,包括ECU逻辑地址(或称CANID),ECU对象结构信息,ECU对象提供的信号对象结构信息,并且被转化为一系列哈希映射关系,为CAN数据转换信号值提供快速映射。依据Vector的DBC文件规范,以厂商提供的某一路CAN对应的文件为例,其文件结构如下所示:

VERSION ""

NS_ :

BU_SG_REL_

BU_BO_REL_

BS_:

BU_: TCU SRS EMS

BO_ 824 TCU_338: 8 TCU

SG_ AT_SlopeRatio : 31|8@0+ (0.2,-25) [-25|25] "%" EMS

SG_ AT_ClearDiagnosticInfo : 9|2@0+ (1,0) [0|3] "" EMS

BO_ 616 TCU_268: 8 TCU

SG_ AT_VehicleSpeed : 28|13@0+ (0.05625,0) [0|360] "km/h"

SG_ AT_NeutralControl : 6|1@0+ (1,0) [0|1] "" EMS

该文件经过编译转换后,除了在程序内存中建立了映射表外,还被转化为采集配置表,为用户进行动态采集提供依据。ECU对象信息表提供ECUID,CANID,ECU名称等。信号对象信息表提供信号ID,ECUID,信号名称,信号起始位,信号偏移量,信号类型,信号值有效范围等。文件编译处理流程如下:

(1)从文件中提取ECU对象的CANID,如:“BO_616”,并开辟一个对应的ECU对象内存,取得该内存地址值作为该ECU对象内存ID,将该内存ID与该CANID绑定,通过CANID就可以快速取得ECU对象内存地址信息。

(2)从文件中提取该ECU对象全局信息,包括ECU名称、信号周期,存入步骤(1)已开辟的ECU对象内存结构中,如:“BO_616 TCU_268: 8 TCU”。

(3)从文件中逐个提取该ECU对象下信号信息,如:“SG_ AT_TransFluidTemp : 23|8@0+ (1,-40) [-40|214] "degree C"”包括信号名称、信号类型、信号起始位、信号偏移量、字节序、浮点精度、有效值范围、单位等信息,并生成一一对应的信号对象内存存放这些信息,为CAN数据解析和转换工作提供重要依据。

(4)将步骤(3)得到的内存地址值作为该信号对象内存ID,并将该内存ID存入步骤(1)中生成的ECU对象中预开辟的信号对象内存ID链表中,构成相关联关系。

(5)循环执行步骤(3)和步骤(4),直至ECU对象包含的所有信号对象信息提取完毕。接着又从步骤(1)开始重复上面的流程,直至文件中所有的ECU对象信息提取完毕。

2.4 CAN数据采集与分析

被设计为由采集配置模块,信号数据解封模块,信号数据预处理模块,信号数据统计模块,信号数据异常处理模块,信号数据分析图表生成模块组成。

(1)信号采集配置模块:管理所有下发给车载终端的采集配置表,负责新增或更新CAN数据与信号转换关系映射表,为其他功能模块提供数据转换依据。

(2)信号数据预处理模块:主要实现将车载终端封包上报的数据,按照数据通信设计的封包结构进行拆解,依据信号转换关系映射表对拆解后的数据快速映射成相应的信号数据,再对信号数据进行清洗和数值转换后投递给信号数据统计分析模块。

(3)信号数据分析统计模块:主要负责对同一时刻的信号数据进行分类统计,如:模拟量信号需要计算信号值的最大值、最小值和平均值,而状态量信号需要统计信号状态出现频次、变换次数、持续时长等,并进行数据存储。

(4)信号数据异常处理模块:主要协助信号数据预处理模块工作,记录预处理生成过程出现的异常现象,并转存脏数据。

(5)信号数据分析图表模块:主要对Matlab引擎和amCharts图表控件进行二次封装,为表现层进行数据分析时提供相关图表生成引擎,实现数据图表分析。

3 结论

本系统实现了由远程中心系统控制车载终端进行汽车工况数据实时采集与分析系统设计,对DBC文件进行编译和信息提取转换,提供自定义采集配置表,对信号数据进行归并统计,并提供数据图表分析功能,让用户更加直观地了解汽车内部状态。

参考文献

[1]邬宽明.CAN总线原理和应用系统设计[M].北京:北京航空航天大学出版社,1996.

[2]佟震亚,马巧梅.计算机网络与通信(第2版本)[M].北京:人民邮电出版社,2010.

[3]杨建军.CAN总线技术在汽车中的应用[J].上海汽车,2007,(06):32-34.

[4]王婵娟.基于CAN总线的汽车车载远程终端监控系统[J].机械制造与自动化,2009,38(03):127-128.

作者单位

同济大学软件学院 福建省厦门市 361012

上一篇:基于ReWorks嵌入式操作系统的SNMP协议实现 下一篇:巩固社保和就业“安全网”