一种快速识别CAN总线上诊断主体的方法及装置制造方法及图纸

技术编号:26530320 阅读:16 留言:0更新日期:2020-12-01 14:08
本发明专利技术公开了一种快速识别CAN总线上诊断主体的方法,用于识别连接在汽车CAN总线上的多个诊断主体,包括步骤:车内控制器从CAN总线上接收诊断请求指令,所述诊断请求指令包括CAN ID以及诊断报文内容;解析所述诊断报文内容,在所述CAN ID与自身ID相符时,获得所述诊断报文内容中的填充位信息;根据所述填充位信息确定对应的诊断主体,其中每一填充位信息对应于一个诊断主体;车内控制器在处理所述诊断请求指令后,将携带有诊断主体信息的诊断响应报文发送至CAN总线上。本发明专利技术还提供了相应的装置。实施本发明专利技术,可以快速识别CAN总线上诊断主体,成本低且扩展性好。

【技术实现步骤摘要】
一种快速识别CAN总线上诊断主体的方法及装置
本专利技术涉及车辆控制器的诊断
,特别是涉及一种快速识别CAN总线上诊断主体的方法及装置。
技术介绍
随着汽车电子的发展,对汽车诊断的途径越来越多,特别是还有后装市场的OBD(车载自诊断系统)端(如一键遥控升窗),也可以给整车发送诊断指令来达到控制的目的。如图1所示,示出了现有技术中的车辆控制器的连接示意图;多个车辆控制器通过CAN总线相连接,其中,控制器A~F为车内控制器,外部诊断设备M为车辆外接的诊断设备。控制器A~F中,控制器C和控制器E是具备诊断其他控制器的能力。其中,控制器A、B、D、F为车上普通控制器,被诊断节点。控制器C、E为车上控制器,具备被诊断和诊断别的控制器的能力。有了控制器C和E,在没有控制器M参与的情况下也可以对整车进行远程的诊断,也就相当于整车内部集成了一个诊断设备软件。由于具备发送诊断能力的控制器越来越多,而且这些控制器都可以往CAN总线上发送指令,而发送的指令中不包含源地址信息,就导致了在图1的架构下,当出现问题后需要排查问题时,无法迅速地确定排查方向。比如图1中控制器A的诊断请求ID为0x701,响应ID为709。控制器C、控制器E和外部诊断设备M都具备发送0x701的能力,那么当总线上出现0x701的报文时,无法识别出是谁在发送。比如外部诊断设备M在对控制器A进行诊断时,发现有其他节点也在对控制器A进行诊断,这样就干扰外部诊断M对控制器A的诊断过程。或者在正常不应该有诊断指令的时候,发现总线上有0x701的诊断报文,对整车造成了影响,但是又很难查出是发送诊断信息的诊断主体是谁。为了解决这些问题,现有技术中一般采用逐一断开诊断设备的方法来一一排查。也就是说如果发现有干扰,可以在物理上分开断开控制器C和控制器E,从而判断相应的诊断主体。但是这种方法排查起来要花费大量的时间,如果是偶发的一些情况,多次排查可能都没有出现。费时费力。
技术实现思路
本专利技术所要解决的技术问题在于,提供一种快速识别CAN总线上诊断主体的方法及装置,通过定义填充位的方式,在不改变控制器、不改变整车协议、不增加任何成本的基础上,能够直观地观测出总线上的诊断报文所对应的诊断主体。为解决上述技术问题,作为本专利技术的一方面提供一种快速识别诊断主体的方法,用于识别连接在汽车CAN总线上的多个诊断主体,其包括如下步骤:车内控制器从CAN总线上接收来自诊断主体的诊断请求指令,所述诊断请求指令包括CANID以及诊断报文内容;解析所述诊断报文内容,在所述CANID与自身ID相符时,获得所述诊断报文内容中的填充位信息;根据所述填充位信息确定对应的诊断主体,其中每一填充位信息对应于一个诊断主体;车内控制器在处理所述诊断请求指令后,将携带有诊断主体信息的诊断响应报文发送至CAN总线上。其中,进一步包括:预先确定符合要求的填充位信息,并建立各填充位信息与各诊断主体之间的对应关系,并存储。其中,采用如下的原则来预先确定符合要求的填充位信息:一个字节的填充位,开始和结尾必须为二进制“01”或二进制“10”;不能连续出现5个连续的二进制0或者5个连续的二进制1。其中,所述诊断主体包括:带诊断功能的车内控制器以及外部诊断设备。相应地,本专利技术的另一方面,还提供一种快速识别诊断主体的装置,设置于车内控制器中,用于识别连接在汽车CAN总线上的多个诊断主体,其特征在于,包括如下步骤:诊断请求指令接收单元,用于从CAN总线上接收来自诊断主体的诊断请求指令,所述诊断请求指令包括CANID以及诊断报文内容;填充位信息解析单元,用于解析所述诊断报文内容,在所述CANID与自身ID相符时,获得所述诊断报文内容中的填充位信息;诊断主体确定单元,用于根据所述填充位信息确定对应的诊断主体,其中每一填充位信息对应于一个诊断主体;响应处理单元,用于在车内控制器处理所述诊断请求指令后,将携带有诊断主体信息的诊断响应报文发送至CAN总线上。其中,进一步包括:填充位确定单元,用于预先确定符合要求的填充位信息,并建立各填充位信息与各诊断主体之间的对应关系,并存储。其中,所述填充位确定单元进一步用于采用如下的原则来预先确定符合要求的填充位信息:一个字节的填充位,开始和结尾必须为二进制“01”或二进制“10”;不能连续出现5个连续的二进制0或者5个连续的二进制1。其中,所述诊断主体包括:带诊断功能的车内控制器以及外部诊断设备。实施本专利技术实施例,具有如下的有益效果:本专利技术实施例所提供的快速识别CAN总线上诊断主体的方法及装置,只需要CAN诊断报文中的填充位进行定义,即预先定义填充位与诊断主体的对应关系,可以快速识别出诊断报文的对应的诊断主体;而无需改变现有的诊断协议、无需更改诊断ID、无需重新定义诊断内容;在排查问题时特别有效,能够迅速定位问题。提高了识别诊断主体的效率以及准确性;且无论增加多少个车内车外诊断设备,均可以进行定位,扩展性好。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,根据这些附图获得其他的附图仍属于本专利技术的范畴。图1是现有技术中的车辆控制器的连接示意图;图2为现有的一种CAN报文格式示例图;图3为本专利技术提供的一种快速区分CAN总线上的诊断主体的方法的一个实施例的主流程示意图;图4是本专利技术提供的一种快速区分CAN总线上的诊断主体的装置的一个实施例的结构示意图。具体实施方式为使本专利技术的目的、技术方案和优点更加清楚,下面将结合附图对本专利技术作进一步地详细描述。为了便于理解,首先介绍一下本专利技术涉及的CAN报文格式,如图2所示,示出了一种常用的CAN报文格式,其中:最左边“0.011730”那一列这数据记录的时间戳;往右的那个“1”代表使用的设备通道,这里就代表通道1;再往右这个“720”或“7A0”就是代表CAN总线的ID;再往右的“Tx”“Rx”表示发送和接收,Tx是发送,Rx是接收;再往右的d无特殊含义;再往右的“8”为DLC(数据长度),如果是8,就说明后面有8个字节的长度,诊断报文规定这个必须为8;再往右的“032201FFAAAAAAAA”为数据位,第一个03代表三个字节有效,所以接下来三个字节“2201FF”是这个报文的有效字节。后面的四个字节“AAAAAAAA”即为填充格式的填充位,以使诊断指令满足8个字节;在现有技术中,该填充位没有实际意义,仅仅作为格式填充,一般推荐填充“AA”或“55”。而车辆控制器在接收诊断报文时,在解析时会将填充位是作为无效位舍弃掉。在CAN2.0规范里面,使用11bit的CANID格式,CANID只能代表目的地址,无法代表源地本文档来自技高网
...

【技术保护点】
1.一种快速识别CAN总线上诊断主体的方法,用于识别连接在汽车CAN总线上的多个诊断主体,其特征在于,包括如下步骤:/n车内控制器从CAN总线上接收诊断请求指令,所述诊断请求指令包括CAN ID以及诊断报文内容;/n解析所述诊断报文内容,在所述CAN ID与自身ID相符时,获得所述诊断报文内容中的填充位信息;/n根据所述填充位信息确定对应的诊断主体,其中每一填充位信息对应于一个诊断主体;/n车内控制器在处理所述诊断请求指令后,将携带有诊断主体信息的诊断响应报文发送至CAN总线上。/n

【技术特征摘要】
1.一种快速识别CAN总线上诊断主体的方法,用于识别连接在汽车CAN总线上的多个诊断主体,其特征在于,包括如下步骤:
车内控制器从CAN总线上接收诊断请求指令,所述诊断请求指令包括CANID以及诊断报文内容;
解析所述诊断报文内容,在所述CANID与自身ID相符时,获得所述诊断报文内容中的填充位信息;
根据所述填充位信息确定对应的诊断主体,其中每一填充位信息对应于一个诊断主体;
车内控制器在处理所述诊断请求指令后,将携带有诊断主体信息的诊断响应报文发送至CAN总线上。


2.如权利要求1所述的方法,其特征在于,进一步包括:
预先确定符合要求的填充位信息,并建立各填充位信息与各诊断主体之间的对应关系,并存储。


3.如权利要求2所述的方法,其特征在于,采用如下的原则来预先确定符合要求的填充位信息:一个字节的填充位,开始和结尾必须为二进制“01”或二进制“10”;不能连续出现5个连续的二进制0或者5个连续的二进制1。


4.如权利要求1至3任一项所述的方法,其特征在于,所述诊断主体包括:带诊断功能的车内控制器以及外部诊断设备。


5.一种快速识别CAN总线上诊断主体的装置,设置于车内...

【专利技术属性】
技术研发人员:温小锋朱鹏波韦恩祥王宇王礼高德申
申请(专利权)人:广州汽车集团股份有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1