曹 俊, 万志云, 夏永强, 张 懿, 熊世文
(江铃汽车股份有限公司, 江西 南昌 330001)
智能网联汽车时代来临,汽车电气化的程度将会越来越高,整车功能交互也将更加密集[1],导致通信矩阵及DBC设计形式的多样,对于跨网段的信号之间的交互需要通过信号路由,因而网关路由表的设计也将越来越复杂。由于人工编辑的网关路由表容易出错导致开发的网关软件功能失效故障,而自动生成网关路由表可极高保证网关路由表的准确性。
DBC (Database Can) 表示 CAN的数据库文件中的一种文件格式[2],DBC文件详细定义了CAN通信矩阵的信息,包含网络节点、数据类型、精度、偏移以及数据枚举量等[3]。该文件可用于指导各ECU控制模块CAN通信网络的开发。DBC文件内容主要可分为8部分信息:版本与符号、波特率定义、网络节点的定义、报文帧的定义、信号的定义、注解部分、属性定义部分、信号数值部分[4-5]。DBC文件展示及说明如图1、图2所示。
图1 DBC文件展示及说明1
图2 DBC文件展示及说明2
网络节点的定义部分展示当前DBC的所有节点及名称;报文帧定义包含报文名称、报文ID、数据长度以及发送节点;信号定义包含信号名称、起始位、长度、数据格式(Motorola、Inter)、精度、偏移、最大值、最小值、单位以及接收节点;注解部分是对信号、报文、版本等的说明信息;属性定义各参数的缺省、默认以及初始值;信号数值部分列出了信号的枚举量。
基于DBC的详解,发现网关路由表只要获取各网段DBC中信号的发送节点为网关,以及信号的接收节点为网关进行分析处理,即可通过软件生成网关路由表。
网关路由表匹配原则是对各网段信号网关发送及接收的信号名称进行匹配,当信号名称相同时 (信号名称-区分大小写),即路由成立,方案设计详述如下。
1) 获取源网段网关发送信号及接收信号。
2) 获取目标网段 (目标网段可以是多个) 网关发送信号及接收信号。
3) 基于源网段网关的的发送信号,逐一与目标网段网关接收信号进行比对,当相同时,即找到路由关系 (存在同时匹配多个网段);当无任何网段能匹配时,即无路由关系;并记录匹配关系及结果。
4) 反查网关接收信号,遍历所有网段网关,当存在未匹配成功,即表示此信号路由出错,无源网段发送。
对匹配关系逐一生成路由表:①目标网段某一报文ID所有信号均来自同一源网段某一报文ID,生成报文路由。若起始位、长度、精度、偏移存在差异时,生成报文路由的同时报出警告。②目标网段某一报文ID信号来自同一源段的不同报文ID,生成信号路由。若长度、精度、偏移存在差异时,报出警告。③对于所有网段网关的发送及接收信号,未匹配成功的,逐一进行报错。
基于Qt5.10.0对该工具进行开发,软件主要包括3部分,分别为界面模块、DBC文件解析及逻辑判断模块、xls处理模块。不同模块功能描述如下。
1) 界面模块:主要针对用户,给用户提供可视化操作界面,用于选择需要转换的项目;同时串联其他模块,串联整体数据流程。
2) DBC文件解析及逻辑判断模块:主要用于对DBC文件的解析,提取各网段的收、发信号,及信号所有属性 (起始位、长度、精度等信息);对两网段之间的报文往来逻辑进行判断,提取出两网段之间的路由关系。
3) xls处理模块:主要用于将已提取出的路由关系分sheet形式写入文件中。
该软件的整体设计UML如图3所示。
图3 软件UML设计图
基于某项目软件开发的信号矩阵DBC文件,BCAN_DBC_0311.dbc及PTCAN_DBC_0311.dbc生成的网关路由表及分析如图4、图5所示,使用VectorCANdb++打开DBC查看网关的发送及接收如图6所示。
图5 PTCAN路由BCAN网关路由表
图6 BCAN及PTCAN网关展示图
BCAN路由PTCAN路由表:含1帧报文路由、2个信号名称错误EMS_BatterVoltage及Ems_Fuelcounter、1帧网关发出的网络管理报文属于正常、以及信号路由报文的校验由网关计算发出属正常。PTCAN路由BCAN路由表:含1帧报文路由、1帧信号路由、2 个信号名称错误EMS_BatteryVoltage 及EMS_BatteryVoltage。经过生成的网关路由表及DBC原文件分析核对,以及网关路由表报错反校核,充分验证了工具的准确性。
准确的网关路由表是网关软件开发的关键,开发一种自动生成网关路由表工具有效地解决手工编辑网关路由表出错问题,并通过案例分析验证该工具的可行性。结果表明:该工具自动生成的网关路由表正确,同时也能检查出DBC中的信号描述问题,此工具操作简单,实用性强、可靠性高。