一种CAN总线通信方法转让专利

申请号 : CN202210653863.3

文献号 : CN115277286B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 田海舰殷玮徐向敏刘婕妤张婧宇

申请人 : 智己汽车科技有限公司

摘要 :

有效。一种汽车CAN总线通信方法,收发消息中包括基于比特位多消息类聚合数据帧;数据帧的长度固定,数据帧每个比特位固定设置功能;数据帧内部包括两个以上的消息类聚合体;所述消息类聚合体包括类校验和、类更新标识位、类参数有效位、类参数;类校验和位于消息类聚合体的头部或尾部,是消息类聚合体的校验值;类更新标识位占据一个比特位,类更新标识位表示整个消息类聚合体的数据,是否有更新数据;类参数(56)对比文件Maglaris, B.;Schwartz, M..Optimalfixed frame multiplexing in integratedline- and packet-switched communicationnetworks.Information Theory, IEEETransactions on.1982,第28卷(第2期),全文.

权利要求 :

1.一种CAN总线通信方法,其特征在于,包括:

设置数据帧格式,使得:(1)所述数据帧的长度固定,每个比特位固定设置功能;(2)数据帧内部包括两个以上的消息类聚合体;(3)消息类聚合体包括类校验和、类更新标识位、类参数有效位和类参数;(4)类校验和位于消息类聚合体的头部或尾部,是消息类聚合体的校验值;(5)类更新标识位占据一个比特位,类更新标识位表示整个消息类聚合体的数据,是否有更新数据;(6)类参数有效位占据一个以上比特位,每个比特位对应一个类参数,每个比特位表示对应的类参数是否有效;

选定数据帧中的消息类聚合体,设置选定的消息类聚合体中的类参数;

设置选定的消息类聚合体中的类参数对应的类参数有效位为有效;

设置选定的消息类聚合体中的类更新标识位为有效;

发送数据帧;

接收数据帧;

选中数据帧中的消息类聚合体,检查选中的消息类聚合体中的类更新标志位是否位有效;

在类更新标识位有效时,判断选中的消息类聚合体中对应的类参数有效位是否有效;

在类参数有效位为有效时,解析对应的类参数。

2.如权利要求1所述的CAN总线通信方法,其特征在于,在发送数据帧之前,所述CAN总线通信方法还包括计算所述选定的消息类聚合体的类校验和。

3.如权利要求2所述的CAN总线通信方法,其特征在于,在类更新标志位为有效时,所述CAN总线通信方法还包括:计算选中的消息类聚合体的类校验和;

判断计算得到的类校验和是否与选中的消息类聚合体中的类校验和相等;

在相等时,再判断选中的消息类聚合体中对应的类参数有效位是否有效。

4.如权利要求3所述的CAN总线通信方法,其特征在于,在类更新标识位无效时,不接收该消息类聚合体,和/或上报消息类聚合体无效故障给对应的诊断模块。

5.如权利要求3所述的CAN总线通信方法,其特征在于,在类参数有效位为无效时,上报类参数无效故障给对应的诊断模块。

6.如权利要求3所述的CAN总线通信方法,其特征在于,在计算得到的类校验和与选中的消息类聚合体中的类校验和不相等时,上报类校验和故障。

7.如权利要求1至6中任一项所述的CAN总线通信方法,其特征在于,所述类校验和占据

8个比特位。

8.如权利要求1至6中任一项所述的CAN总线通信方法,其特征在于,所述消息类聚合体还包括类消息计数器,类消息计数器表示发送消息的顺序计数。

9.如权利要求8所述的CAN总线通信方法,其特征在于,所述类消息计数器占据4个比特位。

10. 如权利要求1至6中任一项所述的CAN总线通信方法,其特征在于,所述消息类聚合体的类校验和通过如下方法计算得到:根据SAE‑J1850 CRC8标准,选取多项式 0x1D,将每个消息类聚合体中的消息作为被校验的数据,与多项式0x1D进行循环异或操作,求得类校验和。

11.如权利要求1至6中任一项所述的CAN总线通信方法,其特征在于,所述数据帧内部包括消息类聚合体A,消息类聚合体A中的类参数包括左前车轮轮速和右前车轮轮速。

12.如权利要求1至6中任一项所述的CAN总线通信方法,其特征在于,所述数据帧内部包括消息类聚合体B,消息类聚合体B中的类参数包括左后车轮轮速和右后车轮轮速。

13.如权利要求1至6中任一项所述的CAN总线通信方法,其特征在于,所述数据帧内部包括消息类聚合体D,消息类聚合体D中的类参数包括左前轮方向角度和右前轮方向角度。

说明书 :

一种CAN总线通信方法

技术领域

[0001] 本发明涉及通信技术领域,具体涉及一种CAN总线通信方法。

背景技术

[0002] 通信协议又称通信规程,是指通信双方对数据传送控制的一种约定。约定中包括对数据格式、同步方式、传送速度、传送步骤、检纠错方式以及控制字符定义等问题作出统一规定,通信双方必须共同遵守,它也叫做链路控制规程。
[0003] 这些规格(语言)的规定都是事先在会议上讲好的,一般我们称之为“协议”(英文称为protocol),而这种在网络上负责定义资料传输规格的协议,我们就统称为通信协议。
[0004] 其实每一种网络所使用的通信协议都不太一样,但就以我们最常用的Internet为例,当资料要送到Internet上时,就必须使用Internet用的通信协议。
[0005] 一般通信协议,根据七层网络模型,每一层网络,如同洋葱皮层层覆盖传输过程中真正的核心数据,如图1如图2中,IP协议承重在以太网协议中,以太网络协议封装,数据有发送者的源地址,目的地址,数据类型,数据和最后的CRC,一般核心的数据,在传输过程中,是否出现传输错误,由最后的CRC进行校验。
[0006] 如图3,汽车内部总线,为CAN网络总线,CAN网络也如同洋葱皮层层覆盖应用层的核心数据。
[0007] 如图4,是CAN网络各个通信层之间的系统结构,应用程序到信息协议到底层的物理网络,需要层层转换,层层包装,协议是各个通信层之间能正常交流的关键技术。
[0008] 如图5,是CAN网络数据的帧结构,为了保证数据在传输过程中,不丢失,应用层发送的数据Data有0 64个字节,虽然在标准帧结构中,有CRC校验和,但是这种校验和需要完~整接收到整个数据帧,才能计算,对于汽车这种实时性要求非常高的应用场景,一个CRC校验和错误,丢弃整个报文,非常地低效。
[0009] 因实时性要求,汽车行业,应用层发送的数据Data是按照比特位来固定定义的,很多网络节点,只发送自己关心的数据,但是在数据Data内部采用同样的数据帧结构。
[0010] 因此,在应用层数据这个层面,有必要开发一种快速解析,分块验证数据有效性的具体协议。

发明内容

[0011] 本发明是提高汽车内部协议的高效性,发送方与接收方,只关注自己发送或接收的信息,每部分信息有独立的校验信息,如果一个部分的校验信息正确,这部分的信息就可以信任,对于固定帧结构中,不同参数部分有不同的标记符号,指示信息的有效性,对于有指示的参数,才有效。
[0012] 本申请解决上述技术问题的技术方案是:
[0013] 一种CAN总线通信方法,包括:
[0014] 设置数据帧格式,使得:(1)所述数据帧的长度固定,每个比特位固定设置功能;(2)数据帧内部包括两个以上的消息类聚合体;(3)消息类聚合体包括类校验和、类更新标识位、类参数有效位和类参数;(4)类校验和位于消息类聚合体的头部或尾部,是消息类聚合体的校验值;(5)类更新标识位占据一个比特位,类更新标识位表示整个消息类聚合体的数据,是否有更新数据;(6)类参数有效位占据一个以上比特位,每个比特位对应一个类参数,每个比特的类表示对应的类参数是否有效;
[0015] 选定数据帧中的消息类聚合体,设置选定的消息类聚合体中的类参数;
[0016] 设置选定的消息类聚合体中的类参数对应的类参数有效位为有效;
[0017] 设置选定的消息类聚合体中的类更新标识位为有效;
[0018] 发送数据帧。
[0019] 可以是,在发送数据帧之前,所述CAN总线通信方法还包括计算所述选定的消息类聚合体的类校验和。
[0020] 该通信方法还包括:
[0021] 接收数据帧;
[0022] 选中数据帧中的消息类聚合体,检查选中的消息类聚合体中的类更新标志位是否位有效;
[0023] 在类更新标识位有效时,判断选中的消息类聚合体中对应的类参数有效位是否有效;
[0024] 在类参数有效位为有效时,解析对应的类参数。
[0025] 可以是,在类更新标志位为有效时,CAN总线通信方法还包括:
[0026] 计算选中的消息类聚合体的类校验和;
[0027] 判断计算得到的类校验和是否与选中的消息类聚合体中的类校验和相等;
[0028] 在相等时,再判断选中的消息类聚合体中对应的类参数有效位是否有效。
[0029] 可以是,在类更新标识位无效时,不接收该消息类聚合体,和/或上报消息类聚合体无效故障给对应的诊断模块。
[0030] 可以是,在类参数有效位为无效时,上报类参数无效故障给对应的诊断模块。
[0031] 可以是,在计算得到的类校验和与选中的消息类聚合体中的类校验和不相等时,上报类校验和故障。
[0032] 可以是,类校验和占据8个比特位。
[0033] 可以是,消息类聚合体还包括类消息计数器,类消息计数器表示发送消息的顺序计数。
[0034] 可以是,类消息计数器占据4个比特位。
[0035] 可以是,消息类聚合体的类校验和由公式CRC‑8‑SAE J1850 ‑0x1D (x8 + x4 + x3 + x2 + 1)计算。
[0036] 可以是,数据帧内部包括消息类聚合体A,消息类聚合体A中的类参数包括左前车轮轮速和右前车轮轮速。可以是,数据帧内部包括消息类聚合体B,消息类聚合体B中的类参数包括左后车轮轮速和右后车轮轮速。可以是,数据帧内部包括消息类聚合体D,消息类聚合体D中的类参数包括左前轮方向角度和右前轮方向角度。
[0037] 本申请中技术方案的有益效果是:一个汽车CAN总线通讯帧中,包括多个消息类聚合体,每个消息类聚合体有自己独立的校验和,传输过程中,只要消息类聚合体内部的信息没有损坏,就可以信任该消息类聚合体内的参数;接收者,只解析关注的消息类聚合体,简化了接收处理流程;每个消息类聚合体中,都有一个独立的顺序计数,在汽车通信总线协议中,多个发送方,与多个接收方,用同样一个消息体进行通讯,这样确保了多对多协议相互不干扰;一个消息帧中,有多个消息类聚合体,每个消息类聚合体采用不同的校验和计算加密算子,相当于多了很多把密码锁,安全性能有了更高的提升。

附图说明

[0038] 图1:IP协议承重在以太网协议中示意图;
[0039] 图2:以太网协议字节定义示意图;
[0040] 图3:CAN‑bus网络分层示意图;
[0041] 图4:CAN总线系统结构示意图;
[0042] 图5:CAN数据帧示意图;
[0043] 图6:基于比特位的一个消息类聚合体示意图;
[0044] 图7:基于比特位的一个数据帧中消息类聚合体示意图;
[0045] 图8:一种数据帧中前6个字节的消息类聚合体示意图;
[0046] 图9:一种数据帧中6到11字节的消息类聚合体示意图;
[0047] 图10:一种数据帧中12到14字节的消息类聚合体示意图;
[0048] 图11:一种数据帧中15到17字节的消息类聚合体示意图;
[0049] 图12:一种数据帧中类校验和计算公式示意图;
[0050] 图13:一种CAN总线通信接收数据流程示意图。

具体实施方式

[0051] 以下本发明较佳实施例的说明是本发明实施时的较佳方式,并不对本发明构成任何限制。本发明较佳实施例的说明只是作为本发明一般原理的说明。
[0052] 在应用层消息中,包含一个固定的帧结构,基于比特位进行参数定义。如图6所示,第一横排,有8个比特位,一个字节的长度,也就是消息的0到7比特位,是这个微结构的类校验和,第二排,也就是第二个字节,0 3比特位,是消息发送顺序计数,第二排4比特位,是类~更新标志位,第二排5和6比特位是参数0与参数1是否有效的比特位。可见,一个消息类聚合体包括类校验和、类更新标识位、类参数有效位0、类参数有效位1,类参数0与类参数1。类校验和位于消息类聚合体的头部或尾部,是消息类聚合体的校验值;类更新标识位占据一个比特位,类更新标识位表示整个消息类聚合体的数据是否有更新;类参数有效位占据一个以上比特位,每个比特位对应一个类参数,每个比特的类表示对应的类参数是否有效。数据帧的长度固定,数据帧每个比特位固定设置功能;数据帧内部包括两个以上的消息类聚合体,如图7中,给出了一个帧中,包括了5个消息类聚合体。
[0053] 汽车或其他实时控制系统中,有大量的传感器,每个传感器都有参数要上报,控制中心要接收处理大量的传感器数据,在这些应用场景下,发送数据的消息帧结构是一样的,如图7,车轮转速的传感器,要发送大量的车轮转动数据,虽然一个传感器只检测到了一个转动数据,但是发送数据的时候,还是发送一个完整的20字节的数据包。而接收方,如果只关注车轮转速的数据,直接根据类更新标识位来判断消息体中,车轮转速的数据是否有效,是否应该接收数据。
[0054] 通过将密切相关,或者同一个传感器模块发送的参数,组成一个消息类聚合体,一个帧,包括多个消息类聚合体,每个消息类聚合体有自己独立的校验和,传输过程中,只要消息类聚合体内部的信息没有损坏,就可以信任该消息类聚合体内的参数。
[0055] 如图8,第0行到第5行,为Signal01消息类聚合体,Signal01_Chks为消息类聚合体的类校验和,Signal01_UB为类更新标识位,如果Signal01_UB等于0,那么该消息类聚合体内的参数Signal01_Whl_SpdCircumlReRi与Signal01_Whl_SpdCircumlReLe都是没有更新的,也就是该消息类聚合体是无效数据。Signal01_Whl_SpdCircumlReRiV为Signal01_Whl_SpdCircumlReRi的类参数有效位,Signal01_Whl_SpdCircumlReLeV为Signal01_Whl_SpdCircumlReLe的类参数有效位,根据类参数有效位可以判断对应的参数是否有效,比如传感器没有检测到汽车车轮的转速,这个时候,无论设置车轮的数值是多少,都不太合理,通过设置类参数有效位,可以让接收器判断出车轮转速传感器出现问题。
[0056] 如图9,第6行到第11行,为Signal02消息类聚合体,消息类聚合体内部的定义,参考Signal01的定义。
[0057] 如图10,第12行到第14行,为Signal03消息类聚合体,消息类聚合体内部的定义,参考Signal01的定义,参数Signal03_Whl_DirRotlReRi与Signal04_Whl_DirRotlFrntLe占据的比特位只有两位。
[0058] 如图11,第15行到第17行,为Signal04消息类聚合体,消息类聚合体内部的定义,参考Signal03的定义。
[0059] 如图8 11,类校验和占据8个比特位,一些实施方式中,也可以用16个比特位。~
[0060] 如图8 11,消息类聚合体还包括类消息计数器,如Signal01_Cntr、Signal02_~Cntr、Signal03_Cntr、Signal04_Cntr,类消息计数器表示发送消息的顺序计数。
[0061] 采用消息的顺序计数,可以让接收者知道是否有丢失的消息,或者接收到重复的消息。
[0062] 采用消息类聚合体,每个消息类聚合体中,都有一个独立的顺序计数,在汽车通信总线协议中,多个发送方,与多个接收方,用同样一个消息体进行通讯,这样确保了多对多协议相互不干扰。
[0063] 一些实施方式中,类消息计数器占据4个比特位。
[0064] 上述消息类聚合体的类校验和通过如下方法计算得到:根据SAE‑J1850 CRC8标准,选取多项式 0x1D,将每个消息类聚合体中的消息作为被校验的数据,与多项式0x1D进行循环异或操作,求得类校验和。
[0065] 采用同样的校验和计算公式,发送方与接收方,约定统一的加密算子,能够防范系统攻击。
[0066] 采用消息类聚合体,一个消息帧中,有多个消息类聚合体,每个消息类聚合体采用不同的校验和计算加密算子,相当于多了很多把密码锁,安全性能有了更高的提升。
[0067] 如图12,为了使得在所有网络中的ECU都用同一种E2E的方法去计算校验结果,一些实施方式中,用数据类型uint8对信号进行处理,当报文中的signal数据长度大于8位,将把该数据拆分为多个uint8的数据,分别填充到算法公式中,不足8位,按照8位来处理。
[0068] 上述协议,可以应用到汽车内部总线协议中,也可以应用到机床控制,机器人控制,飞机控制总线。
[0069] 应用到汽车内部总线中,一个汽车控制消息帧中,包括消息类聚合体A,消息类聚合体A中的类参数包括左前车轮轮速和右前车轮轮速。
[0070] 一些实施方式中,汽车控制消息帧中,包括消息类聚合体B,消息类聚合体B中的类参数包括左后车轮轮速和右后车轮轮速。
[0071] 一些实施方式中,汽车控制消息帧中,包括消息类聚合体D,消息类聚合体D中的类参数包括左前轮方向角度和右前轮方向角度。
[0072] 一种CAN总线通信发送数据方法,发送数据帧中,包括上述通信方法的基于比特位多消息类聚合数据帧,包括:
[0073] 步骤A1:选定数据帧中的消息类聚合体,设置选定的消息类聚合体中的类参数;
[0074] 步骤A2:设置选定的消息类聚合体中的类参数对应的类参数有效位为有效;
[0075] 步骤A3:设置选定的消息类聚合体中的类更新标识位为有效;
[0076] 步骤A4:发送数据帧。
[0077] 上述发送数据方法,在步骤A4前,步骤A3之后,还包括:
[0078] 步骤A31:计算所述选定的消息类聚合体的类校验和。
[0079] 如图13,对应的,一种CAN总线通信接收数据方法,接收数据帧中,包括上述通信方法的基于比特位多消息类聚合数据帧,包括:
[0080] 步骤B1:选中数据帧中的消息类聚合体,检查选中的消息类聚合体中的类更新标识位是否为有效;如果类更新标识位无效,不接收该消息类聚合体,和/或上报消息类聚合体无效故障给对应的诊断模块;如果类更新标志位有效,执行步骤B2;
[0081] 步骤B2:判断选中的消息类聚合体中对应的类参数有效位是否为有效;如果类参数有效位为无效,上报类参数无效故障给对应的诊断模块;如果类参数有效位为有效,执行步骤B3;
[0082] 步骤B3:解析对应的类参数。
[0083] 进一步地,在步骤B1后,如果类更新标志位有效,在执行步骤B2前,还包括:
[0084] 步骤B11,对选中的消息类聚合体做类校验和;
[0085] 步骤B12,判断计算得到类校验和是否等于消息类聚合体中的类校验和,如果不等,上报类校验和故障;如果相等,执行步骤B2。
[0086] 本发明虽然根据优选实施例和若干备选方案进行说明和描述,但发明不会被在本说明书中的特定描述所限制。其他另外的替代或等同组件也可以用于实践本发明。