本发明涉及通信技术领域,尤其涉及一种车载总线的数据通信方法、装置及车辆。
背景技术:
车载电子控制单元(electroniccontrolunit,简称ecu)的发送端和接收端在进行信息交换过程中,由于软件、硬件及环境等因素存在多种出错风险,以can总线通信为例,可能发生的错误有报文被重复接收、报文丢失、错误寻址及延迟等,无法保证端到端的数据通信的连续性、完整性及加密性。
技术实现要素:
本发明旨在至少在一定程度上解决相关技术中的技术问题之一。
为此,本发明的第一个目的在于提出一种车载总线的数据通信方法,发送端发送报文的报文中包括应用数据和控制域数据,控制域数据包括报文计数值和/或发送端循环冗余校验值,接收端根据报文计数值判断数据通信的连续性,根据应用数据和接收端预先存储的数据标识值计算得到接收端循环冗余校验值,根据发送端循环冗余校验值和接收端循环冗余校验值判断数据通信的加密性和完整性,可保证端到端的数据通信的连续性、完整性及加密性。
本发明的第二个目的在于提出一种车载总线的数据通信装置。
本发明的第三个目的在于提出一种车辆。
为达上述目的,本发明第一方面实施例提出了一种车载总线的数据通信方法,包括:
发送端发送报文,所述报文中包括应用数据和控制域数据,所述控制域数据包括报文计数值和/或发送端循环冗余校验值,所述报文计数值在发送所述报文前加1,所述发送端循环冗余校验值根据所述应用数据和所述发送端预先存储的数据标识值计算得到,所述数据标识值用于唯一标识所述报文;
接收端接收所述报文,并根据所述报文计数值判断数据通信的连续性,根据所述应用数据和所述接收端预先存储的数据标识值计算得到接收端循环冗余校验值,根据所述发送端循环冗余校验值和所述接收端循环冗余校验值判断数据通信的加密性和完整性。
根据本发明实施例提出的车载总线的数据通信方法,发送端发送报文,报文中包括应用数据和控制域数据,控制域数据包括报文计数值和/或发送端循环冗余校验值,报文计数值在发送报文前加1,发送端循环冗余校验值根据应用数据和发送端预先存储的数据标识值计算得到,数据标识值用于唯一标识报文;接收端接收报文,并根据报文计数值判断数据通信的连续性,根据应用数据和接收端预先存储的数据标识值计算得到接收端循环冗余校验值,根据发送端循环冗余校验值和接收端循环冗余校验值判断数据通信的加密性和完整性,可保证端到端的数据通信的连续性、完整性及加密性。
根据本发明的一个实施例,所述根据所述报文计数值判断数据通信的连续性,包括:计算所述报文计数值和上次接收到的报文的报文计数值的差值;若所述差值等于0,则判断出报文重复接收;若所述差值等于1,则判断出报文按照正常序列成功接收;若所述差值大于1且等于或者小于预设的差值阈值,则判断出报文丢失;若所述差值大于所述差值阈值,则判断出报文发送序列出错严重。
根据本发明的一个实施例,所述根据所述发送端循环冗余校验值和所述接收端循环冗余校验值判断数据通信的加密性和完整性,包括:若所述发送端循环冗余校验值和所述接收端循环冗余校验值相同,则判断出数据通信加密性和完整性校验成功。
根据本发明的一个实施例,根据所述应用数据和所述数据标识值计算得到所述发送端循环冗余校验值或所述接收端循环冗余校验值,包括:根据所述应用数据和所述数据标识值,采用crc8-sae1850算法,计算得到所述发送端循环冗余校验值或所述接收端循环冗余校验值。
根据本发明的一个实施例,根据所述应用数据和所述数据标识值计算得到所述发送端循环冗余校验值或所述接收端循环冗余校验值,包括:根据所述数据标识值和预设的初值计算得到第一循环冗余校验值;将所述初值修改为所述第一循环冗余校验值;根据所述应用数据和修改后的所述初值计算得到第二循环冗余校验值;根据预设的最终异或值对所述第二循环冗余校验值进行异或取反处理,得到所述发送端循环冗余校验值或所述接收端循环冗余校验值。
根据本发明的一个实施例,该数据通信方法还包括:若所述应用数据长度大于1个字节,则低字节数据在前,高字节数据在后;若所述应用数据长度等于或者小于1个字节,则将所述应用数据放置在1个字节内,且高位数据在前,低位数据在后。
根据本发明的一个实施例,该数据通信方法还包括:计算所述发送端循环冗余校验值或所述接收端循环冗余校验值时,将所述应用数据中空字节的位置统一填充为预设值。
根据本发明的一个实施例,所述车载总线包括以下总线中的任意一种:控制器局域网络can总线、flexray总线和ethernet。
为达上述目的,本发明第二方面实施例提出了一种车载总线的数据通信装置,包括:
发送端,用于发送报文,所述报文中包括应用数据和控制域数据,所述控制域数据包括报文计数值和/或发送端循环冗余校验值,所述报文计数值在发送所述报文前加1,所述发送端循环冗余校验值根据所述应用数据和所述发送端预先存储的数据标识值计算得到,所述数据标识值用于唯一标识所述报文;
接收端,用于接收所述报文,并根据所述报文计数值判断数据通信的连续性,根据所述应用数据和所述接收端预先存储的数据标识值计算得到接收端循环冗余校验值,根据所述发送端循环冗余校验值和所述接收端循环冗余校验值判断数据通信的加密性和完整性。
根据本发明实施例提出的车载总线的数据通信装置,发送端发送报文,报文中包括应用数据和控制域数据,控制域数据包括报文计数值和/或发送端循环冗余校验值,报文计数值在发送报文前加1,发送端循环冗余校验值根据应用数据和发送端预先存储的数据标识值计算得到,数据标识值用于唯一标识报文;接收端接收报文,并根据报文计数值判断数据通信的连续性,根据应用数据和接收端预先存储的数据标识值计算得到接收端循环冗余校验值,根据发送端循环冗余校验值和接收端循环冗余校验值判断数据通信的加密性和完整性,可保证端到端的数据通信的连续性、完整性及加密性。
为达上述目的,本发明第三方面实施例提出了一种车辆,包括:如本发明第二方面实施例所述的车载总线的数据通信装置。
附图说明
图1是根据本发明一个实施例的车载总线的数据通信方法的流程图;
图2是包括应用数据和控制域数据的报文数据格式;
图3是根据本发明另一个实施例的车载总线的数据通信方法的流程图;
图4是根据本发明另一个实施例的车载总线的数据通信方法的流程图;
图5是根据本发明一个实施例的车载总线的数据通信装置的结构图;
图6是根据本发明一个实施例的车辆的结构图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
下面结合附图来描述本发明实施例的车载总线的数据通信方法、装置及车辆。
图1是根据本发明一个实施例的车载总线的数据通信方法的流程图,如图1所示,该数据通信方法包括:
s101,发送端发送报文,报文中包括应用数据和控制域数据,控制域数据包括报文计数值counter和/或发送端循环冗余校验值crc,报文计数值counter在发送报文前加1,发送端循环冗余校验值crc根据应用数据和发送端预先存储的数据标识值dataid计算得到,数据标识值dataid用于唯一标识报文。
本发明实施例中,可在发送端本地预先存储数据标识值dataid,数据标识值dataid用于唯一标识报文,长度可为8位(bit)。发送端发送报文,报文数据格式如图2所示,包括应用数据和控制域数据,应用数据即预保护数据,控制域数据包括报文计数值counter和/或发送端循环冗余校验值crc,其中,报文计数值counter的长度可为4bit,范围为0~15,发送端循环冗余校验值crc可根据应用数据和发送端预先存储的数据标识值dataid计算得到。发送端在发送报文之前,报文计数值counter加1。
s102,接收端接收报文,并根据报文计数值counter判断数据通信的连续性,根据应用数据和接收端预先存储的数据标识值dataid计算得到接收端循环冗余校验值crc1,根据发送端循环冗余校验值crc和接收端循环冗余校验值crc1判断数据通信的加密性和完整性。
本发明实施例中,可在接收端本地预先存储数据标识值dataid,数据标识值dataid用于唯一标识报文,长度可为8bit。接收端接收报文,并根据报文计数值counter判断数据通信的连续性,根据应用数据和接收端预先存储的数据标识值dataid计算得到接收端循环冗余校验值crc1,根据发送端循环冗余校验值crc和接收端循环冗余校验值crc1判断数据通信的加密性和完整性。
作为一种可行的实施方式,本发明实施例的车载总线可包括控制器局域网络can总线、flexray总线和ethernet中任意一种,可通过修改发送端循环冗余校验值或接收端循环冗余校验值的计算方法、报文计数值counter及数据标识值dataid的位数实现不同车载总线的匹配。
根据本发明实施例提出的车载总线的数据通信方法,发送端发送报文,报文中包括应用数据和控制域数据,控制域数据包括报文计数值和/或发送端循环冗余校验值,报文计数值在发送报文前加1,发送端循环冗余校验值根据应用数据和发送端预先存储的数据标识值计算得到,数据标识值用于唯一标识报文;接收端接收报文,并根据报文计数值判断数据通信的连续性,根据应用数据和接收端预先存储的数据标识值计算得到接收端循环冗余校验值,根据发送端循环冗余校验值和接收端循环冗余校验值判断数据通信的加密性和完整性,可保证端到端的数据通信的连续性、完整性及加密性。
进一步的,如图3所示,图3是根据本发明另一个实施例的车载总线的数据通信方法的流程图,上述实施例s102步骤中“根据报文计数值判断数据通信的连续性”具体可包括:
s201,计算报文计数值counter和上次接收到的报文的报文计数值counter0的差值δcounter。
本发明实施例中,计算报文计数值counter和上次接收到的报文的报文计数值counter0的差值δcounter=counter-counter0。
s202,若差值δcounter等于0,则判断出报文重复接收。
本发明实施例中,若δcounter=0,则报文计数值counter和上次接收到的报文的报文计数值counter0相同,判断出报文重复接收。
s203,若差值δcounter等于1,则判断出报文按照正常序列成功接收。
本发明实施例中,若δcounter=1,则接收端本次接收报文与上次接收报文连续,判断出报文按照正常序列成功接收。
s204,若差值δcounter大于1且等于或者小于预设的差值阈值maxδcounter,则判断出报文丢失。
本发明实施例中,可预先设置差值阈值maxδcounter,maxδcounter可为报文发送序列出错严重的临界值。若1<δcounter<maxδcounter,则判断出报文丢失。
s205,若差值δcounter大于差值阈值maxδcounter,则判断出报文发送序列出错严重。
本发明实施例中,若δcounter>maxδcounter,则判断出报文发送序列出错严重。
根据本发明实施例提出的车载总线的数据通信方法,根据报文计数值和上次接收到的报文的报文计数值的差值,可判断报文是否连续。
进一步的,图1所示实施例s102步骤中“根据发送端循环冗余校验值crc和接收端循环冗余校验值crc1判断数据通信的加密性和完整性”具体可包括:
若发送端循环冗余校验值crc和接收端循环冗余校验值crc1相同,则判断出数据通信加密性和完整性校验成功。
本发明实施例中,只有发送端和接收端针对某条报文具有相同的数据标识dataid,才能对同一条报文数据计算出相同的循环冗余校验值。如果发送端循环冗余校验值crc和接收端循环冗余校验值crc1相同,则判断出数据通信加密性和完整性校验成功;如果发送端循环冗余校验值crc和接收端循环冗余校验值crc1不同,则判断出数据通信加密性和完整性校验不成功。
根据本发明实施例提出的车载总线的数据通信方法,通过比较发送端循环冗余校验值和接收端循环冗余校验值是否相同,可判断数据通信是否加密性和完整性校验成功。
进一步的,图1所示实施例中,“根据应用数据和数据标识值计算得到发送端循环冗余校验值或接收端循环冗余校验值”具体可包括:
根据应用数据和数据标识值dataid,采用crc8-sae1850算法,计算得到发送端循环冗余校验值crc或接收端循环冗余校验值crc1。
本发明实施例中,根据应用数据和数据标识值dataid,采用crc8-sae1850算法,计算得到发送端循环冗余校验值crc或接收端循环冗余校验值crc1,为保证发送端和接收端对于通信数据的操作一致性,应用数据中空字节的位置可统一填充为预设值,预设值具体可为0xff。
具体的,计算方法可如图4所示,包括:
s301,根据数据标识值dataid和预设的初值计算得到第一循环冗余校验值。
本发明实施例中,根据数据标识值dataid和预设的初值计算得到第一循环冗余校验值,其中,预设的初值具体可为0xff。
s302,将初值修改为第一循环冗余校验值。
本发明实施例中,将初值修改为s301步骤计算得到的第一循环冗余校验值。
s303,根据应用数据和修改后的初值计算得到第二循环冗余校验值。
本发明实施例中,根据应用数据和s302步骤修改后的初值,计算得到第二循环冗余校验值。
s304,根据预设的最终异或值对第二循环冗余校验值进行异或取反处理,得到发送端循环冗余校验值crc或接收端循环冗余校验值crc1。
本发明实施例中,根据预设的最终异或值对第二循环冗余校验值进行异或取反处理,得到发送端循环冗余校验值crc或接收端循环冗余校验值crc1,其中,预设的最终异或值具体可为0xff。
本发明实施例中,计算循环冗余校验值的采用的crc接口函数的原型为:
crc_calculatecrc8(
constuint8*dataptr,
uint32length,
uint8startvalue8,
booleanisfirstcall);
需要说明的是,本发明实施例两次crc函数的调用(即计算第一循环冗余校验值及第二循环冗余校验值),对于isfirstcall参数传参为false,即crc函数内部对实际传入的初值做了异或取反,比如,在计算dataid的crc值时,实际传入的初值为0xff,而crc函数内部循环计算之前,初值为0xff^0xff=0x00。
根据本发明实施例提出的车载总线的数据通信方法,根据应用数据和数据标识值dataid,采用crc8-sae1850算法,可准确、有效的计算得到发送端循环冗余校验值crc或接收端循环冗余校验值crc1。
进一步的,为保证发送端和接收端对于通信数据的操作一致性,在图1所示实施例基础上,该方法还可包括:
若应用数据长度大于1个字节,则低字节数据在前,高字节数据在后;若应用数据长度等于或者小于1个字节,则将应用数据放置在1个字节内,且高位数据在前,低位数据在后。
本发明实施例中,首先获取应用数据的长度,如果应用数据长度大于1个字节,则低字节数据在前,高字节数据在后,即采用intel格式;若应用数据长度等于或者小于1个字节,则将应用数据放置在1个字节内,且高位数据在前,低位数据在后,即采用最高有效位(mostsignificantbit,简称msb)排布。
根据本发明实施例提出的车载总线的数据通信方法,根据应用数据长度对数据进行排布,可保证发送端和接收端对于通信数据的操作一致性。
图5是根据本发明一个实施例的车载总线的数据通信装置的结构图,如图5所示,该数据通信装置包括:
发送端21,用于发送报文,报文中包括应用数据和控制域数据,控制域数据包括报文计数值和/或发送端循环冗余校验值,报文计数值在发送报文前加1,发送端循环冗余校验值根据应用数据和发送端预先存储的数据标识值计算得到,数据标识值用于唯一标识报文;
接收端22,用于接收报文,并根据报文计数值判断数据通信的连续性,根据应用数据和接收端预先存储的数据标识值计算得到接收端循环冗余校验值,根据发送端循环冗余校验值和接收端循环冗余校验值判断数据通信的加密性和完整性。
需要说明的是,前述对车载总线的数据通信方法的解释说明也适用于该实施例的车载总线的数据通信装置,此处不再赘述。
根据本发明实施例提出的车载总线的数据通信装置,发送端发送报文,报文中包括应用数据和控制域数据,控制域数据包括报文计数值和/或发送端循环冗余校验值,报文计数值在发送报文前加1,发送端循环冗余校验值根据应用数据和发送端预先存储的数据标识值计算得到,数据标识值用于唯一标识报文;接收端接收报文,并根据报文计数值判断数据通信的连续性,根据应用数据和接收端预先存储的数据标识值计算得到接收端循环冗余校验值,根据发送端循环冗余校验值和接收端循环冗余校验值判断数据通信的加密性和完整性,可保证端到端的数据通信的连续性、完整性及加密性。
为实现上述实施例,本发明还提出了一种车辆30,如图6所示,包括:如上述实施例所示的车载总线的数据通信装置31。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。