一种芯片高负载情况下CAN诊断报文与网络报文处理方法、系统、电子设备和存储介质技术方案

技术编号:34719627 阅读:24 留言:0更新日期:2022-08-31 18:04
本发明专利技术公开了一种芯片高负载情况下CAN诊断报文与网络报文处理方法、系统、电子设备和存储介质,具体包括:在接收中断响应的过程中,判断报文的类型;如果接收到诊断报文,则停止发送网络报文,并将停发的网络报文进行存储;执行诊断报文发送流程,直到诊断报文流程完成,将停发的网络报文重新发送,系统、电子设备和存储介质与方法流程相对应。本发明专利技术可以在有效控制成本,也就是在采用较为便宜的芯片的情况下,即便偶发芯片负载过高,也可以保证CAN报文发送成功,整车诊断功能正常。在处理诊断报文的瞬间使负载降到最低,保证诊断功能正常执行,通过设置一个软件缓存区,能够避免网络报文丢帧,确保报文的完整性。确保报文的完整性。确保报文的完整性。

【技术实现步骤摘要】
一种芯片高负载情况下CAN诊断报文与网络报文处理方法、系统、电子设备和存储介质


[0001]本专利技术涉及一种CAN诊断报文与网络报文处理方法、系统、电子设备和存储介质,尤其涉及一种芯片高负载情况下CAN诊断报文与网络报文处理方法、系统、电子设备和存储介质。

技术介绍

[0002]汽车中有很多车载控制器,例如发动机控制器,变速箱控制器,电机控制器,车载控制器各种功能的运算主要由芯片完成,但是受成本影响,某些低端芯片的算力有限,在一些高负载工况下可能会造成某些功能失灵。
[0003]目前市场上的软件,对发送CAN报文的算法不做过多处理,也不对网络报文和诊断报文区分开做处理。比如,在调用发送报文的函数时,只填写报文ID和报文数据内容这两个参数[eg:can_txmessage(uint8 CAN_ID,uint8CAN_DATA[8])],然后通过按一定周期调用发送函数,实现CAN报文的周期发送。在现有技术的报文发送流程中,每条报文有一个自己的计数器counter,如果系统中程序运行在10ms任务中,则50ms发送报文时计数器counter初始值为5,每10ms计数器counter的数值减1。当计数器counter数值减为零时,发送一条50ms报文。显然,在这种状态下,某个10ms内,会连续发送5条报文,显著增大程序负载与芯片发送中断负载。

技术实现思路

[0004]本专利技术的目的在于提供一种芯片高负载情况下CAN诊断报文与网络报文处理方法、系统、电子设备和存储介质,在芯片发送中断负载过大时,通过设置发送延迟(offset)并进行缓冲存储,将发送周期相同的报文做不同程度的延迟发送,解决现有技术存在的缺憾。
[0005]本专利技术提供了下述方案:
[0006]一种芯片高负载情况下CAN诊断报文与网络报文处理方法,其特征在于,具体包括:
[0007]在接收中断响应的过程中,判断报文的类型;
[0008]如果接收到诊断报文,则停止发送网络报文,并将停发的网络报文进行存储;
[0009]执行诊断报文发送流程,直到诊断报文流程完成;
[0010]诊断报文流程完成,将停发的网络报文重新发送。
[0011]进一步的,接收到诊断报文,关闭至少一个网络报文的计数器。
[0012]进一步的,报文发送周期为10ms、20ms、50ms、100ms。
[0013]进一步的,在判断报文的类型时,如果接收到的不是诊断报文,则重置中断寄存器,重新发送诊断报文。
[0014]进一步的,在所述停止发送网络报文的过程中,将网络报文所在周期任务内需要
发送的数据存储在缓冲区中;
[0015]执行诊断流程,发送诊断响应报文,触发发送中断,发送诊断报文;
[0016]判断诊断报文发送是否成功,如果诊断报文发送成功,则通知系统应用层面完成诊断响应;
[0017]开启网络报文发送功能,发送存储在缓冲区中的网络报文。
[0018]进一步的,判断诊断报文发送是否成功,如果诊断报文未发送成功,则重置中断寄存器,重新发送诊断报文。
[0019]一种芯片高负载情况下CAN诊断报文与网络报文的处理系统,具体包括:
[0020]报文类型判断模块,用于在接收中断响应的过程中,判断报文的类型,如果接收到诊断报文,则停止发送网络报文,并将停发的网络报文进行存储;
[0021]诊断报文执行模块,用于执行诊断报文发送流程,直到诊断报文流程完成;
[0022]网络报文执行模块,用于在诊断报文流程完成时,将停发的网络报文重新发送。
[0023]进一步的,所述报文类型判断模块接收到诊断报文,关闭至少一个网络报文的计数器。
[0024]一种电子设备,其特征在于,包括:处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;所述存储器中存储有计算机程序,当所述计算机程序被所述处理器执行时,使得所述处理器执行所述方法的步骤。
[0025]一种计算机可读存储介质,其特征在于,其存储有可由电子设备执行的计算机程序,当所述计算机程序在所述电子设备上运行时,使得所述电子设备执行所述方法的步骤。
[0026]本专利技术与现有技术相比具有以下的优点:
[0027]本专利技术可以在有效控制成本,也就是采用较为便宜的芯片的情况下,即便偶发芯片负载过高,也可以保证CAN报文发送成功,整车诊断功能正常。
[0028]本专利技术在接收中断中检测收到诊断报文后,停止发送网络报文,并将停发的报文储存下来,之后执行诊断报文流程。在诊断报文流程执行完成后,打开网络报文的发送流程,并立刻发送一条之前停发的报文,之后恢复正常报文发送流程——这样可以在处理诊断报文的瞬间使芯片负载降到最低,保证诊断功能正常执行,同时也不会使网络报文丢帧。
[0029]本专利技术中通过设置发送延迟(offset),将发送周期相同的报文做不同程序的延迟发送。以实施例公开的内容为例,当一个控制器(ECU)需要发送5个50ms报文时,程序开始发送后发出1条50ms报文,经过10ms后发送第二条50ms报文,再经过10ms后发送第三条50ms报文,依此类推,这样可以将统一周期报文的发送分开,不至于同一瞬间发送中断负载过大。
[0030]本专利技术采用将诊断报文和网络报文分开处理的算法,执行诊断操作流程时停发网络报文,保证诊断流程能稳定运行,通过设置软件缓存区,储存停发的网络报文,在执行完诊断流程后立刻重发,保证网络报文不丢帧。
附图说明
[0031]为了更清楚地说明本专利技术具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本专利技术的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0032]图1是本专利技术芯片高负载情况下CAN诊断报文与网络报文处理方法的流程图。
[0033]图2是本专利技术芯片高负载情况下CAN诊断报文与网络报文处理系统的架构图。
[0034]图3是现有技术的报文发送流程。
[0035]图4是本专利技术实施例在一个具体应用场景下的报文发送方法原理框图。
[0036]图5是本专利技术实施例的方法流程图。
[0037]图6是电子设备的系统架构图。
具体实施方式
[0038]下面将结合附图对本专利技术的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。
[0039]如图1所示的芯片高负载情况下CAN诊断报文与网络报文处理方法,其特征在于,具体包括:
[0040]步骤S1,判断报文的类型:在接收中断响应的过程中,判断报文的类型;
[0041]步骤S2,停止发送网络报文:本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种芯片高负载情况下CAN诊断报文与网络报文处理方法,其特征在于,具体包括:在接收中断响应的过程中,判断报文的类型;如果接收到诊断报文,则停止发送网络报文,并将停发的网络报文进行存储;执行诊断报文发送流程,直到诊断报文流程完成;诊断报文流程完成,将停发的网络报文重新发送。2.根据权利要求1所述的芯片高负载情况下CAN诊断报文与网络报文处理方法,其特征在于,接收到诊断报文,关闭至少一个网络报文的计数器。3.根据权利要求1所述的芯片高负载情况下CAN诊断报文与网络报文处理方法,其特征在于,报文发送周期为10ms、20ms、50ms、100ms。4.根据权利要求1所述的芯片高负载情况下CAN诊断报文与网络报文处理方法,其特征在于,在判断报文的类型时,如果接收到的不是诊断报文,则重置中断寄存器,重新发送诊断报文。5.根据权利要求4所述的芯片高负载情况下CAN诊断报文与网络报文处理方法,其特征在于,在所述停止发送网络报文的过程中,将网络报文所在周期任务内需要发送的数据存储在缓冲区中;执行诊断流程,发送诊断响应报文,触发发送中断,发送诊断报文;判断诊断报文发送是否成功,如果诊断报文发送成功,则通知系统应用层面完成诊断响应;开启网络报文发送功能,发送存储在缓冲区中的网络报文。6.根据权利要求4...

【专利技术属性】
技术研发人员:王宏民张晓谦李岩刘奇刘明
申请(专利权)人:中国第一汽车股份有限公司
类型:发明
国别省市:

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

1