一种车辆数据文件生成方法及装置
文献发布时间:2023-06-19 09:51:02
技术领域
本发明涉及车联网技术领域,具体涉及一种车辆数据文件生成方法及装置。
背景技术
随着车联网的发展及大数据技术应用日益成熟,大数据作为战略资产越来越受到各车企重视。汽车主要通过配置T-BOX(Telematics BOX)进行大数据采集。该采集工作需要遵循特定的协议制作大数据通信矩阵,定义各车型ECU信号大数据采集的格式。每款车型的通信矩阵各不相同,若针对每一款车型都手动制作通信矩阵及DBC文件(DBC文件是描述CAN网络节点间的数据通讯的文件,.dbc文件是一个ASCII格式的文件,其.dbc扩展名可用于定义CAN网络),编制时间长、更迭成本高、可维护性弱。
发明内容
本发明所要解决的技术问题在于,提供一种车辆数据文件生成方法及装置,以有效提高车辆数据文件的制作效率,节省人力和时间成本。
为了解决上述技术问题,本发明提供一种车辆数据文件生成方法,包括:
步骤S1,获取设定路径下的总线矩阵和信号需求表;
步骤S2,逐一读取并运用JAVAPOI解析所述总线矩阵和信号需求表中的数据单元格,生成包含CAN总线传输的采集信号信息的RX表;
步骤S3,对所述RX表逐行排序,将同一报文名称下的信号名称排列一起,并根据Motorola forward LSB矩阵格式及采集频率分组,采取贪心算法将每一个信号轮询填充64位数据帧,生成TX表;
步骤S4,根据所述TX表的信号值描述属性,设定类型判断规则添加信号的模式schema信息,并结合所述RX表、TX表和schema信息生成通信矩阵;
步骤S5,通过DBC转换程序逐行读取所述通信矩阵,生成DBC文件。
其中,所述步骤S2中,运用JAVAPOI解析所述总线矩阵和信号需求表中的数据单元格,具体包括:
读取信号需求表的报文16进制ID、信号名两列数据形成键值对链表;
逐行扫描总线矩阵每一行去匹配链表中的键值对,若满足匹配则拷贝该行到RX表,拷贝过程由JAVAPOI程序设置格式、字体、行高、列宽属性。
其中,所述步骤S2在解析数据单元格时,还将根据唯一性原则进行信号去重,根据数据互相关特性进行信号名匹配。
其中,所述步骤S3具体包括:
运行TXFirstinput代码模块,将所述RX表转化得到TXFirstinput表,所述TXFirstinput表包含数据报文的时间周期MsgCycleTime、信号名称SignalName、信号的长度SigLength三列数据;
运行TXSecondinput代码模块,读取所述TXFirstinput表,获取数据报文的时间周期MsgCycleTime、信号名称SignalName、信号的长度SigLength三列数据,并采取贪心算法,根据Motorola forward LSB矩阵格式及采集频率分组,将每一个信号轮询填充64位数据帧,直到数据帧填满或无满足要求的信号,并输出signal.txt;
设定signal.txt中信号起始位、信号长度两列值,将signal.txt生成所述TX表。
其中,所述模式schema信息类型包括int、float、double三种类型,
int类型需满足以下条件之一:信号值描述属性不包含linear字段;信号值描述属性包含linear字段但不包含‘.’字段且不包含‘%’字段;信号值描述属性包含linear字段且包含‘.’字段且‘.’字段与‘n:’字段相隔位置大于5;
float类型需满足以下条件之一:信号值描述属性包含linear字段且包含‘.’字段但不包含‘%’字段;信号值描述属性包含linear字段且包含‘.’字段且‘.’字段与‘n:’字段相隔位置不大于5;信号值描述属性包含linear字段且包含‘.’字段且‘.’字段与‘pre’字段相隔位置不大于15;
double类型需满足:信号值描述属性包含linear字段且包含‘.’字段且‘.’字段与‘pre’字段相隔位置大于15。
其中,在所述步骤S5生成DBC文件后,由log日志信息判别所述DBC文件是否满足功能要求,若log日志仅包含警告warning信息则表示转换DBC成功,若有错误error信息反馈则需检查通信矩阵内容、格式规范后再次转换DBC文件,直到没有error信息反馈。
本发明还提供一种车辆数据文件生成装置,包括:
获取单元,用于获取设定路径下的总线矩阵和信号需求表;
第一生成单元,用于逐一读取并运用JAVAPOI解析所述总线矩阵和信号需求表中的数据单元格,生成包含CAN总线传输的采集信号信息的RX表;
第二生成单元,用于对所述RX表逐行排序,将同一报文名称下的信号名称排列一起,并根据Motorola forward LSB矩阵格式及采集频率分组,采取贪心算法将每一个信号轮询填充64位数据帧,生成TX表;
第三生成单元,用于根据所述TX表的信号值描述属性,设定类型判断规则添加信号的模式schema信息,并结合所述RX表、TX表和schema信息生成通信矩阵;
第四生成单元,用于通过DBC转换程序逐行读取所述通信矩阵,生成DBC文件。
其中,所述第一生成单元运用JAVAPOI解析所述总线矩阵和信号需求表中的数据单元格,具体包括:
读取信号需求表的报文16进制ID、信号名两列数据形成键值对链表;
逐行扫描总线矩阵每一行去匹配链表中的键值对,若满足匹配则拷贝该行到RX表,拷贝过程由JAVAPOI程序设置格式、字体、行高、列宽属性。
其中,所述第一生成单元在解析数据单元格时,还将根据唯一性原则进行信号去重,根据数据互相关特性进行信号名匹配。
其中,所述第二生成单元具体用于:
运行TXFirstinput代码模块,将所述RX表转化得到TXFirstinput表,所述TXFirstinput表包含数据报文的时间周期MsgCycleTime、信号名称SignalName、信号的长度SigLength三列数据;
运行TXSecondinput代码模块,读取所述TXFirstinput表,获取数据报文的时间周期MsgCycleTime、信号名称SignalName、信号的长度SigLength三列数据,并采取贪心算法,根据Motorola forward LSB矩阵格式及采集频率分组,将每一个信号轮询填充64位数据帧,直到数据帧填满或无满足要求的信号,并输出signal.txt;
设定signal.txt中信号起始位、信号长度两列值,将signal.txt生成所述TX表。
其中,所述模式schema信息类型包括int、float、double三种类型,
int类型需满足以下条件之一:信号值描述属性不包含linear字段;信号值描述属性包含linear字段但不包含‘.’字段且不包含‘%’字段;信号值描述属性包含linear字段且包含‘.’字段且‘.’字段与‘n:’字段相隔位置大于5;
float类型需满足以下条件之一:信号值描述属性包含linear字段且包含‘.’字段但不包含‘%’字段;信号值描述属性包含linear字段且包含‘.’字段且‘.’字段与‘n:’字段相隔位置不大于5;信号值描述属性包含linear字段且包含‘.’字段且‘.’字段与‘pre’字段相隔位置不大于15;
double类型需满足:信号值描述属性包含linear字段且包含‘.’字段且‘.’字段与‘pre’字段相隔位置大于15。
其中,所述车辆数据文件生成装置还包括:
判断单元,用于在生成DBC文件后,根据log日志信息判别所述DBC文件是否满足功能要求,若log日志仅包含警告warning信息则表示转换DBC成功,若有错误error信息反馈则需检查通信矩阵内容、格式规范后再次转换DBC文件,直到没有error信息反馈。
实施本发明实施例具有以下有益效果:可以规范通信矩阵制作流程,减少了工程师制作通信矩阵、DBC的人力和时间成本,同时减少工程师人工操作失误的概率,且满足了数据解析即可用的时效性,对汽车大数据的信号采集以及后续数据解析分析都提供极大便利。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例一一种车辆数据文件生成方法的流程示意图。
图2为本发明实施例一一种车辆数据文件生成方法的具体流程示意图。
图3为本发明实施例一中信号长度拼接示意图。
图4为本发明实施例一中schema制作流程示意图。
具体实施方式
以下各实施例的说明是参考附图,用以示例本发明可以用以实施的特定实施例。
请参照图1所示,本发明实施例一提供一种车辆数据文件生成方法,包括:
步骤S1,获取设定路径下的总线矩阵和信号需求表;
步骤S2,逐一读取并运用JAVAPOI解析所述总线矩阵和信号需求表中的数据单元格,生成包含CAN总线传输的采集信号信息的RX表;
步骤S3,对所述RX表逐行排序,将同一报文名称下的信号名称排列一起,并根据Motorola forward LSB矩阵格式及采集频率分组,采取贪心算法将每一个信号轮询填充64位数据帧,生成TX表;
步骤S4,根据所述TX表的信号值描述属性,设定类型判断规则添加信号的模式schema信息,并结合所述RX表、TX表和schema信息生成通信矩阵;
步骤S5,通过DBC转换程序逐行读取所述通信矩阵,生成DBC文件。
具体地,请结合图2所示,本实施例步骤S1还包括对总线矩阵、信号需求表进行格式错误识别,格式错误识别操作包括数据总行数匹配,列数识别,列名匹配,以更正出现的错误数据,确保后续操作正常。格式错误识别中的总行数匹配,列数识别由JAVAPOI统计逻辑自动计算,列名匹配时总线矩阵应包含如下列:电子控制单元类型、报文名称、报文16进制ID、报文字节数、报文发送类型、报文循环时间、报文快速循环时间、报文无效值、信号名、信号描述、信号起始位、信号长度、信号最小值、信号最大值、信号默认值、信号无效值、超时时间、精度、信号偏移量、信号单元、信号发送类型、是否为事件命令信号、信号值描述;信号需求表应包含如下列:报文16进制ID、报文循环时间、信号名。
之后输入总线矩阵、信号需求表的设定路径,判断总线矩阵、信号需求表是否存在于设定路径,若是则获取该设定路径下的总线矩阵和信号需求表。需要说明的是,本实施例可识别数据文件必须为Excel文件,优选地,格式为xls格式,当Excel格式为xlsx格式时需进行转换。
步骤S2将生成RX表,该RX表包含有CAN总线传输的采集信号信息。首先运行createRXTable代码模块(即生成RX表的代码模块),逐一读取总线矩阵和信号需求表中的内容,运用JAVAPOI解析数据单元格,运用JAVAPOI解析数据单元格的步骤为:先读取信号需求表的报文16进制ID、信号名两列数据形成key value键值对链表;再逐行扫描总线矩阵每一行去匹配链表中的键值对,若满足匹配则拷贝该行到RX表,拷贝过程由JAVAPOI程序设置格式、字体、行高、列宽等属性;其中应用到的JAVA程序包括:MainRXTable.java、CheckExcel.java、CopyAndCreateRXExcel.java、ReadExcel.java、SearchExcel.java。
进一步地,步骤S2在解析数据单元格时,还将根据唯一性原则进行信号去重,根据数据互相关特性进行信号名匹配。根据唯一性原则进行信号去重是指信号需求表中每一个信号有且只出现一次;根据数据互相关特性进行信号名匹配是指将信号需求表的每一个信号在总线矩阵进行定位匹配。
步骤S3对得到的RX表逐行排序,排序过程中添加灰色空白行分隔不同报文名称。进一步地,在对RX表检查内容、格式正确无误后,运行TXFirstinput代码模块,将RX表转化得到TXFirstinput表,TXFirstinput表包含了数据报文的时间周期MsgCycleTime、信号名称SignalName、信号的长度SigLength三列数据。然后再运行TXSecondinput代码模块,读取TXFirstinput表,获取数据报文的时间周期MsgCycleTime、信号名称SignalName、信号的长度SigLength三列数据,并通过采取贪心算法,根据Motorola forward LSB矩阵格式及采集频率分组,将每一个信号轮询填充64位数据帧,直到数据帧填满或无满足要求的信号,并输出signal.txt,由此减少了空置位,满足每帧64位的通信协议要求,提升流量的使用效率。其中,为提高数据可读性采用循环周期时间排序,为确保报文名称的字节长度固定为64帧需进行帧数插值排序等操作。
signal.txt是通过TxSecondinput代码生成,包含五列数据,分别为数据报文名字Msg Name、数据报文的时间周期Msg Cycle Time(ms)、信号名称Signal Name、信号起始位Start Bit Position、信号长度Sig.Length,signal.txt中的信号数据的起始位、长度可以满足每帧64位的通信协议要求,如图3所示,设定信号起始位、信号长度两列值,将signal.txt生成TX表。
还需说明的是,车身信号通过车载T-Box发送到后台,后台运行解析程序,根据解析后信号有效位,判定有效存储到数据库。步骤S2、S3所述统计指标全部基于有效数据来计算。
模式schema信息类型有且仅有int、float、double三种类型,schema判断逻辑如图4所示。int类型需满足以下条件之一:信号值描述属性不包含linear字段;信号值描述属性包含linear字段但不包含‘.’字段且不包含‘%’字段;信号值描述属性包含linear字段且包含‘.’字段且‘.’字段与‘n:’字段相隔位置大于5。float类型需满足以下条件之一:信号值描述属性包含linear字段且包含‘.’字段但不包含‘%’字段;信号值描述属性包含linear字段且包含‘.’字段且‘.’字段与‘n:’字段相隔位置不大于5;信号值描述属性包含linear字段且包含‘.’字段且‘.’字段与‘pre’字段相隔位置不大于15。double类型需满足:信号值描述属性包含linear字段且包含‘.’字段且‘.’字段与‘pre’字段相隔位置大于15。每一个信号均有对应的schema信息,由此结合RX表、TX表、schema信息生成该车型通信矩阵。
步骤S5通过DBC转换程序逐行读取通信矩阵生成DBC文件,由log日志信息判别DBC是否满足功能要求。DBC转换程序需指定RX表、TX表路径,RX表、TX表内容会自动被识别,转换结束后生成的DBC文件将用于解析以后上传的报文,由于本实施例中DBC文件包含schema信息,可满足解析即可用的时效性。
通信矩阵转换为DBC文件过程中将反馈log日志,若log日志仅包含警告warning信息则表示转换DBC成功,若有错误error信息反馈则需检查通信矩阵内容、格式规范后再次转换DBC文件,直到没有error信息反馈。
相应于本发明实施例一,本发明实施例二还提供一种车辆数据文件生成装置,包括:
获取单元,用于获取设定路径下的总线矩阵和信号需求表;
第一生成单元,用于逐一读取并运用JAVAPOI解析所述总线矩阵和信号需求表中的数据单元格,生成包含CAN总线传输的采集信号信息的RX表;
第二生成单元,用于对所述RX表逐行排序,将同一报文名称下的信号名称排列一起,并根据Motorola forward LSB矩阵格式及采集频率分组,采取贪心算法将每一个信号轮询填充64位数据帧,生成TX表;
第三生成单元,用于根据所述TX表的信号值描述属性,设定类型判断规则添加信号的模式schema信息,并结合所述RX表、TX表和schema信息生成通信矩阵;
第四生成单元,用于通过DBC转换程序逐行读取所述通信矩阵,生成DBC文件。
其中,所述第一生成单元运用JAVAPOI解析所述总线矩阵和信号需求表中的数据单元格,具体包括:
读取信号需求表的报文16进制ID、信号名两列数据形成键值对链表;
逐行扫描总线矩阵每一行去匹配链表中的键值对,若满足匹配则拷贝该行到RX表,拷贝过程由JAVAPOI程序设置格式、字体、行高、列宽属性。
其中,所述第一生成单元在解析数据单元格时,还将根据唯一性原则进行信号去重,根据数据互相关特性进行信号名匹配。
其中,所述第二生成单元具体用于:
运行TXFirstinput代码模块,将所述RX表转化得到TXFirstinput表,所述TXFirstinput表包含数据报文的时间周期MsgCycleTime、信号名称SignalName、信号的长度SigLength三列数据;
运行TXSecondinput代码模块,读取所述TXFirstinput表,获取数据报文的时间周期MsgCycleTime、信号名称SignalName、信号的长度SigLength三列数据,并采取贪心算法,根据Motorola forward LSB矩阵格式及采集频率分组,将每一个信号轮询填充64位数据帧,直到数据帧填满或无满足要求的信号,并输出signal.txt;
设定signal.txt中信号起始位、信号长度两列值,将signal.txt生成所述TX表。
其中,所述模式schema信息类型包括int、float、double三种类型,
int类型需满足以下条件之一:信号值描述属性不包含linear字段;信号值描述属性包含linear字段但不包含‘.’字段且不包含‘%’字段;信号值描述属性包含linear字段且包含‘.’字段且‘.’字段与‘n:’字段相隔位置大于5;
float类型需满足以下条件之一:信号值描述属性包含linear字段且包含‘.’字段但不包含‘%’字段;信号值描述属性包含linear字段且包含‘.’字段且‘.’字段与‘n:’字段相隔位置不大于5;信号值描述属性包含linear字段且包含‘.’字段且‘.’字段与‘pre’字段相隔位置不大于15;
double类型需满足:信号值描述属性包含linear字段且包含‘.’字段且‘.’字段与‘pre’字段相隔位置大于15。
其中,所述车辆数据文件生成装置还包括:
判断单元,用于在生成DBC文件后,根据log日志信息判别所述DBC文件是否满足功能要求,若log日志仅包含警告warning信息则表示转换DBC成功,若有错误error信息反馈则需检查通信矩阵内容、格式规范后再次转换DBC文件,直到没有error信息反馈。
通过以上实施例的描述可知,本发明实施例的有益效果在于,可以规范通信矩阵制作流程,减少了工程师制作通信矩阵、DBC的人力和时间成本,同时减少工程师人工操作失误的概率,且满足了数据解析即可用的时效性,对汽车大数据的信号采集以及后续数据解析分析都提供极大便利。
此外,相对于现有的数据文件生成方案不涉及到大数据通信矩阵的制作,本发明对大数据通信矩阵制作设计了核心算法:校验总线矩阵、信号需求表及大数据矩阵;利用标准数据帧64位有效位的特性,排列需求采集的信号,保证信号位置不重叠、数据帧ID不重复及每帧有效位最大利用率。大数据通信矩阵的制作是汽车can总线发送具体报文的前提,这对汽车传感器的数据采集、分析具有重要意义。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
- 一种车辆数据文件生成方法及装置
- 一种安卓系统应用程序的数据文件生成及调用方法和装置