本发明涉及汽车通信,特别指一种兼容dbc的汽车通信方法及系统。
背景技术:
1、dbc(databasecan)是vector公司定义的can网络通信文件格式,其代表的是can的数据库文件,dbc把can通信的信息定义的非常完整,而can网络的通信就是依据dbc的描述进行的,正是因为有了dbc才可以使得整个can网路的节点控制器进行无差错的协同开发。
2、但是,传统的dbc存在如下问题:1、不支持uds(unifieddiagnostic services,统一的诊断服务)的解析;2、仅支持对上传值做简单计算,如:v(上传值)*f(系数)+o(偏移量);3、不支持例如acsii码转字符等编码转换功能;4、只能实时解析can或者canfd回来的数据,无法保存变量测试过程中的最大值、最小值、平均值等信号;5、只能按照协议比较死板的进行数据解析,无法进行一些逻辑判断;6、解析时是对文件内所有的数据都进行解析导致效率不高,因为有些数据是可以不需要解析的,例如心跳数据;7、dbc文件以明文形式保存,安全性低。
3、由于dbc存在的上述问题,导致其在汽车通信时无法完全适用,因为汽车通信不仅存在简单数据的传输,还存在如uds的传输,一些数据上传后需要二次计算或解析,例如ntc温度值,acsii码等,而在上传数据的基础上做二次解析开发相当耗费时间,并且存在高度的重复劳动。
4、因此,如何提供一种兼容dbc的汽车通信方法及系统,实现提升汽车通信的灵活性、扩展性、效率以及安全性,成为一个亟待解决的技术问题。
技术实现思路
1、本发明要解决的技术问题,在于提供一种兼容dbc的汽车通信方法及系统,实现提升汽车通信的灵活性、扩展性、效率以及安全性。
2、第一方面,本发明提供了一种兼容dbc的汽车通信方法,包括如下步骤:
3、步骤s10、基于dbc格式定义dbce格式;
4、步骤s20、汽车通信时,发送端基于所述dbce格式以及待传输的can报文生成dbce文件,利用base64算法对所述dbce文件进行加密后发送给接收端;
5、步骤s30、接收端利用base64算法对接收的所述dbce文件进行解密后,基于所述dbce格式对dbce文件进行实时解析,进而完成汽车通信。
6、进一步地,所述步骤s10具体为:
7、定义dbce格式为在dbc格式的基础上,增加信号类型、逻辑脚本以及特征值。
8、进一步地,所述信号类型的取值为0、1、2、3、4;0表示心跳数据,不需要进行解析;1表示普通数据,需要进行解析;2表示需要更新特征值;3表示需要进行逻辑处理;4表示需要进行acsii数据解码;
9、所述逻辑脚本携带对uds进行处理的脚本;
10、所述特征值包括特征最大值、特征最小值以及特征平均值。
11、进一步地,所述步骤s30中,所述基于所述dbce格式对dbce文件进行实时解析具体为:
12、从所述dbce文件中提取信号类型、逻辑脚本、特征值以及can报文,判断所述信号类型的取值;
13、当所述信号类型的取值为0时,不解析所述can报文;
14、当所述信号类型的取值为1时,将所述can报文的n个字节数据按顺序组合,将各字节数据从最低字节到最高字节依次向右移动n*字节序号位,然后相加得到字节序,当所述字节序的取值为0时,表示can报文的格式为motorola格式,让低字节在前,高字节在后;当所述字节序的取值为1时,表示can报文的格式为intel格式,让高字节在前,低字节在后;
15、基于所述can报文携带的起始位和位长度计算终止位,利用所述起始位和终止位提取有效数据,基于所述位长度计算右移位数,将所述有效数据基于右移位数进行右移后屏蔽高位,得到原始数据;
16、将所述原始数据转换为十进制数后,乘以比例因子并加上偏移量得到报文数据;
17、当所述信号类型的取值为2时,先对所述can报文进行解析得到报文数据,基于所述报文数据更新特征值中的特征最大值和特征最小值,更新过程中对所述特征值的更新次数进行累加,对所述特征最大值和特征最小值的取值进行累加得到特征总值,基于所述特征总值除以更新次数的值更新特征平均值。
18、当所述信号类型的取值为3时,基于所述逻辑脚本对can报文执行逻辑处理;
19、当所述信号类型的取值为4时,基于acsii码表将所述can报文的各字节数据依次转换为字符并进行拼接。
20、进一步地,对所述can报文进行解析得到报文数据后,基于dbc格式携带的报文最大值和报文最小值对所述报文数据进行更新。
21、第二方面,本发明提供了一种兼容dbc的汽车通信系统,包括如下模块:
22、dbce格式定义模块,用于基于dbc格式定义dbce格式;
23、dbce文件生成发送模块,用于汽车通信时,发送端基于所述dbce格式以及待传输的can报文生成dbce文件,利用base64算法对所述dbce文件进行加密后发送给接收端;
24、dbce文件接收解析模块,用于接收端利用base64算法对接收的所述dbce文件进行解密后,基于所述dbce格式对dbce文件进行实时解析,进而完成汽车通信。
25、进一步地,所述dbce格式定义模块具体用于:
26、定义dbce格式为在dbc格式的基础上,增加信号类型、逻辑脚本以及特征值。
27、进一步地,所述信号类型的取值为0、1、2、3、4;0表示心跳数据,不需要进行解析;1表示普通数据,需要进行解析;2表示需要更新特征值;3表示需要进行逻辑处理;4表示需要进行acsii数据解码;
28、所述逻辑脚本携带对uds进行处理的脚本;
29、所述特征值包括特征最大值、特征最小值以及特征平均值。
30、进一步地,所述dbce文件接收解析模块中,所述基于所述dbce格式对dbce文件进行实时解析具体为:
31、从所述dbce文件中提取信号类型、逻辑脚本、特征值以及can报文,判断所述信号类型的取值;
32、当所述信号类型的取值为0时,不解析所述can报文;
33、当所述信号类型的取值为1时,将所述can报文的n个字节数据按顺序组合,将各字节数据从最低字节到最高字节依次向右移动n*字节序号位,然后相加得到字节序,当所述字节序的取值为0时,表示can报文的格式为motorola格式,让低字节在前,高字节在后;当所述字节序的取值为1时,表示can报文的格式为intel格式,让高字节在前,低字节在后;
34、基于所述can报文携带的起始位和位长度计算终止位,利用所述起始位和终止位提取有效数据,基于所述位长度计算右移位数,将所述有效数据基于右移位数进行右移后屏蔽高位,得到原始数据;
35、将所述原始数据转换为十进制数后,乘以比例因子并加上偏移量得到报文数据;
36、当所述信号类型的取值为2时,先对所述can报文进行解析得到报文数据,基于所述报文数据更新特征值中的特征最大值和特征最小值,更新过程中对所述特征值的更新次数进行累加,对所述特征最大值和特征最小值的取值进行累加得到特征总值,基于所述特征总值除以更新次数的值更新特征平均值。
37、当所述信号类型的取值为3时,基于所述逻辑脚本对can报文执行逻辑处理;
38、当所述信号类型的取值为4时,基于acsii码表将所述can报文的各字节数据依次转换为字符并进行拼接。
39、进一步地,对所述can报文进行解析得到报文数据后,基于dbc格式携带的报文最大值和报文最小值对所述报文数据进行更新。
40、本发明的优点在于:
41、通过基于dbc格式定义dbce格式,即在dbc格式的基础上,增加信号类型、逻辑脚本以及特征值,再基于dbce格式以及待传输的can报文生成dbce文件,并利用base64算法对dbce文件进行加密传输;接收端利用base64算法对dbce文件进行解密后,基于dbce格式对dbce文件进行实时解析,即基于信号类型的不同取值执行不同的解析操作,使得dbce格式支持uds的解析、支持更复杂的计算、支持acsii码转字符、支持保存变量测试过程中的最大值、最小值和平均值、支持进行一些逻辑判断、支持不解析心跳数据,结合base64算法避免dbce文件被明文窃取,最终极大的提升了汽车通信的灵活性、扩展性、效率以及安全性。