CN114826974A - Can报文超时计算方法、装置、设备及可读存储介质 - Google Patents
Can报文超时计算方法、装置、设备及可读存储介质 Download PDFInfo
- Publication number
- CN114826974A CN114826974A CN202210476785.4A CN202210476785A CN114826974A CN 114826974 A CN114826974 A CN 114826974A CN 202210476785 A CN202210476785 A CN 202210476785A CN 114826974 A CN114826974 A CN 114826974A
- Authority
- CN
- China
- Prior art keywords
- message
- time
- timeout
- overtime
- moment
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000004364 calculation method Methods 0.000 title claims abstract description 67
- 238000001514 detection method Methods 0.000 claims abstract description 51
- 238000000034 method Methods 0.000 claims abstract description 49
- 230000001960 triggered effect Effects 0.000 claims abstract description 15
- 238000004590 computer program Methods 0.000 claims description 19
- 230000004044 response Effects 0.000 claims description 13
- 238000012545 processing Methods 0.000 claims description 11
- 230000000737 periodic effect Effects 0.000 claims description 7
- 230000007246 mechanism Effects 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 11
- 230000008569 process Effects 0.000 description 11
- 230000006870 function Effects 0.000 description 7
- 238000004422 calculation algorithm Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0852—Delays
Landscapes
- Engineering & Computer Science (AREA)
- Environmental & Geological Engineering (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本申请涉及一种CAN报文超时计算方法、装置、设备及可读存储介质,涉及汽车电子控制技术领域,包括创建时间轴,并基于各个CAN报文的预设超时时间确定出CAN报文的超时时刻,根据超时时刻将CAN网络中的各个CAN报文预先插入至时间轴上的对应位置处;对时间轴上的各个CAN报文的接收时间进行记录;当时间轴上的第一时刻被触发进行超时检测时,基于第一时刻、超时时刻和在第一时刻前最后一次接收到CAN报文的最后接收时刻对时间轴上位于第一时刻之前的各个CAN报文进行超时计算,并根据计算结果确定出处于超时状态的CAN报文。本申请不仅可有效提高CAN报文超时计算的效率,并降低系统开销大,且适用场景范围大。
Description
技术领域
本申请涉及汽车电子控制技术领域,特别涉及一种CAN报文超时计算方法、装置、设备及可读存储介质。
背景技术
由于当前汽车的功能越来越丰富,使得车辆上搭载的ECU(Electronic ControlUnit,电子控制单元)数量也越来越多,以致承载ECU之间通信的CAN(Controller AreaNetwork,控制器域网)网络报文数量极大增加,进而导致对需要处理CAN信息的车载设备来说工作压力越来越大,且对车载仪表的CAN报文处理算法要求也越来越高。而CAN报文的超时算法正是CAN报文处理算法中的重要组成部分。
其中,车载CAN网络报文的超时算法主要面临的问题有以下特点:(1)报文数量大、周期短和频率高;(2)报文周期长短不一且差异大,比如最短可至10ms,最长可到5s乃至10s;(3)具有严格的响应精度要求,超时响应允许的误差范围一般在±10%以内,例如对于10ms周期的报文而言,其超时时间一般为5倍的周期,即50ms,那么按10%误差来说,其超时响应必须在超时时刻的±5ms内发出。
相关技术中,主要使用以下两种方法进行CAN报文超时计算:周期轮询和定时器。其中,周期轮询指的是在接收报文时记录每个报文ID(Identity document,身份标识号)的接收时间,并周期轮询所有报文ID,比对当前时间和接收时间之间的时间差,当时间差大于设定的超时值时认为超时;该方法的优点是代码逻辑较为简单、运行稳定可靠且占用空间很小;但是,其只适用于报文发送周期接近的场景;此外由于其在每个周期都要检查所有报文ID,因此当ID数量较多时,还存在效率低的问题。
而定时器指的是为每一个报文ID设定一个定时器,每当接收报文时更新对应定时器的触发时间,因此若报文正常接收则定时器触发时间不停向后更新,但实际不会触发,而一旦定时器触发则说明对应ID超时;该方法的优点是代码结构清晰易于理解且超时时间的控制精度高;不过,其只适用于报文频率较低的场景,且由于需要在接收报文时更新定时器,以致定时器的更新十分频繁,因此当需要处理的报文数量较多时,将导致系统的开销非常大;此外,由于每一个报文ID均需要维护一个单独定时器,当报文ID数量较多时,大量的定时器将会带来额外的空间开销,进而对系统造成较大的负担。由此可见,当前进行CAN报文超时计算的方法存在效率低、系统开销大和适用场景限制大的问题。
发明内容
本申请提供一种CAN报文超时计算方法、装置、设备及可读存储介质,以解决相关技术中进行CAN报文超时计算存在的效率低、系统开销大和适用场景限制大的问题。
第一方面,提供了一种CAN报文超时计算方法,包括以下步骤:
创建时间轴,并基于各个CAN报文的预设超时时间确定出CAN报文的超时时刻,根据所述超时时刻将CAN网络中的各个CAN报文预先插入至时间轴上的对应位置处;
对时间轴上的各个CAN报文的接收时间进行记录;
当时间轴上的第一时刻被触发进行超时检测时,基于所述第一时刻、所述超时时刻和在第一时刻前最后一次接收到CAN报文的最后接收时刻对时间轴上位于第一时刻之前的各个CAN报文进行超时计算,并根据计算结果确定出处于超时状态的CAN报文。
一些实施例中,所述根据所述超时时刻将CAN网络中的各个CAN报文预先插入至时间轴上的对应位置处,包括:
将各个CAN报文的超时时刻与其对应的报文ID以键值对的形式进行存储,所述超时时刻为键值对中的key值,所述报文ID为键值对中的value值;
按照key值从小到大的顺序将CAN网络中的所有CAN报文预先插入至时间轴上的对应位置处。
一些实施例中,所述基于所述第一时刻、所述超时时刻和在第一时刻前最后一次接收到CAN报文的最后接收时刻对时间轴上位于第一时刻之前的各个CAN报文进行超时计算,并根据计算结果确定出处于超时状态的CAN报文,包括:
将时间轴上位于第一时刻之前的第一CAN报文的最后接收时刻与所述第一CAN报文的超时时刻进行相加,得到第二时刻;
判断所述第二时刻是否大于所述第一时刻;
若是,则所述第一CAN报文处于非超时状态;
若否,则所述第一CAN报文处于超时状态。
一些实施例中,在所述第一CAN报文处于非超时状态的步骤之后,还包括:
将所述第一CAN报文的最后接收时刻与所述第一CAN报文的预设超时时间进行相加,得到第三时刻;
将所述第一CAN报文移动至时间轴上与所述第三时刻对应的位置处。
一些实施例中,在所述第一CAN报文处于超时状态的步骤之后,还包括:
向超时处理模块发送超时响应,并将所述第一CAN报文从所述时间轴上移除;
当再次接收到所述第一CAN报文时,将接收到所述第一CAN报文的第一接收时刻与所述第一CAN报文的预设超时时间进行相加,得到第四时刻;
将所述第一CAN报文插入至时间轴上与所述第四时刻对应的位置处。
一些实施例中,所述方法还包括:
触发时间轴上第一时刻后的任一时刻作为新的第一时刻进行超时检测,并执行所述基于所述第一时刻、所述超时时刻和在第一时刻前最后一次接收到CAN报文的最后接收时刻对时间轴上位于第一时刻之前的各个CAN报文进行超时计算的步骤。
一些实施例中,所述第一时刻被触发的机制为周期性触发或定时器触发。
第二方面,提供了一种CAN报文超时计算装置,包括:
初始化单元,其用于创建时间轴,并基于各个CAN报文的预设超时时间确定出CAN报文的超时时刻,根据所述超时时刻将CAN网络中的各个CAN报文预先插入至时间轴上的对应位置处;
记录单元,其用于对时间轴上的各个CAN报文的接收时间进行记录;
检测单元,其用于当时间轴上的第一时刻被触发进行超时检测时,基于所述第一时刻、所述超时时刻和在第一时刻前最后一次接收到CAN报文的最后接收时刻对时间轴上位于第一时刻之前的各个CAN报文进行超时计算,并根据计算结果确定出处于超时状态的CAN报文。
第三方面,提供了一种CAN报文超时计算设备,包括:存储器和处理器,所述存储器中存储有至少一条指令,所述至少一条指令由所述处理器加载并执行,以实现前述的CAN报文超时计算方法。
第四方面,提供了一种计算机可读存储介质,所述计算机存储介质存储有计算机程序,当所述计算机程序被处理器执行时,以实现前述的CAN报文超时计算方法。
本申请提供的技术方案带来的有益效果包括:可有效提高CAN报文超时计算的效率,并降低系统开销大,且适用场景范围大。
本申请提供了一种CAN报文超时计算方法、装置、设备及可读存储介质,包括创建时间轴,并基于各个CAN报文的预设超时时间确定出CAN报文的超时时刻,根据所述超时时刻将CAN网络中的各个CAN报文预先插入至时间轴上的对应位置处;当时间轴上的第一时刻被触发进行超时检测时,基于所述第一时刻、所述超时时刻和在第一时刻前最后一次接收到CAN报文的最后接收时刻对时间轴上位于第一时刻之前的各个CAN报文进行超时计算,并根据计算结果确定出处于超时状态的CAN报文。通过本申请,每次超时检测时只需对时间轴上某一时刻前的CAN报文进行超时计算,而某一时刻后的CAN报文由于均未超时,因此不需要对其进行超时计算,进而保证每次仅对状态可能发生变化的CAN报文进行超时计算,即无需对系统内的所有CAN报文进行轮询,以此达到每次检测周期需进行超时计算的CAN报文数量最小化的目的,提高了CAN报文超时计算的效率;此外,本申请对CAN报文超时检测的时机和需要进行超时计算的CAN报文均从时间轴中动态获取,而与CAN报文数量的多少、CAN报文周期的长短、CAN报文的频度等无关,不仅可适用于各种场景的超时计算,且无需设置大量的定时器实现超时计算,有效降低了系统开销。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种CAN报文超时计算方法的流程示意图;
图2为本申请实施例提供的时间轴初始化的示意图;
图3为本申请实施例提供的超时检测过程的示意图;
图4为本申请实施例提供的一种CAN报文超时计算装置的结构示意图;
图5为本申请实施例提供的一种CAN报文超时计算设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例提供了一种CAN报文超时计算方法、装置、设备及可读存储介质,其能解决相关技术中进行CAN报文超时计算存在的效率低、系统开销大和适用场景限制大的问题。
图1是本申请实施例提供的一种CAN报文超时计算方法,包括以下步骤:
步骤S10:创建时间轴,并基于各个CAN报文的预设超时时间确定出CAN报文的超时时刻,根据所述超时时刻将CAN网络中的各个CAN报文预先插入至时间轴上的对应位置处;
进一步的,所述根据所述超时时刻将CAN网络中的各个CAN报文预先插入至时间轴上的对应位置处,包括:
将各个CAN报文的预设超时时间与其对应的报文ID以键值对的形式进行存储,所述预设超时时间为键值对中的key值,所述报文ID为键值对中的value值;
按照key值从小到大的顺序将CAN网络中的所有CAN报文预先插入至时间轴上的对应位置处。
示范性的,在本申请实施例中,利用常见的有序数据结构即可简单的实现时间轴。例如标准库中的Map(Map是一种把键对象和值对象映射的集合)结构就可以满足需求,即Map结构使用key+value的方式进行数据存储,且key值会自动的由小到大进行排列。因此,本实施例可以将CAN报文以“超时时刻”+“报文ID”的组合插入Map中就能完成时间轴的插入。
其中,在进行CAN报文接收前,先对时间轴进行初始化。由于在进行时间轴的初始化时,会预先知道CAN网络中包括的CAN报文的数量以及具体存在哪些CAN报文且每个CAN报文的超时时间和报文ID,因此,在未接收CAN报文之前,就可将所有需要接收处理的CAN报文按超时时间对应的超时时刻插入时间轴中,同时将每个CAN报文的初始接收时间置0。
以CAN网络中包括CAN报文1、CAN报文2、CAN报文3、CAN报文4和CAN报文5,且CAN报文1、CAN报文2、CAN报文3、CAN报文4和CAN报文5对应的报文ID分别为ID1、ID2、ID3、ID4和ID5为例:假设ID1、ID2、ID3、ID4和ID5的预设超时时间分别为5ms、7ms、10ms、13ms和14ms,且ID1、ID2、ID3、ID4和ID5对应的初始接收时间均置0(即系统未开始进行CAN报文1、CAN报文2、CAN报文3、CAN报文4和CAN报文5的接收),则ID1、ID2、ID3、ID4和ID5的初始超时时刻分别为第5ms、第7ms、第10ms、第13ms和第14ms;其中,时间轴上的任一时刻的表示实际上应为:xx时xx分xx秒xx毫秒,比如时间轴的初始时间为0时0分0秒0毫秒,那么ID1的初始超时时刻应为0时0分0秒5毫秒,不过为了描述的简洁性,本实施例将0时0分0秒5毫秒简化为第5ms,同理对其他的时刻也做同样的处理。
此时,可将各个CAN报文以键值对的形式进行数据存储,即CAN报文1的key值为超时时刻“第5ms”且value值为ID1,CAN报文2的key值为超时时刻“第7ms”且value值为ID2,CAN报文3的key值为超时时刻“第10ms”且value值为ID3;CAN报文4的key值为超时时刻“第13ms”且value值为ID4;CAN报文5的key值为超时时刻“第14ms”且value值为ID5。
本实施例按照key值从小到大的顺序分别将CAN报文1、CAN报文2、CAN报文3、CAN报文4和CAN报文5插入至图2所示的时间轴(该时间轴的起始时刻为0)上。而后续的超时检查将依托该时间轴进行,且只有插入时间轴内的CAN报文才会被纳入超时计算,即若时间轴上只有CAN报文1、CAN报文2、CAN报文3、CAN报文4和CAN报文5,那么本实施例只会对上述五个CAN报文进行超时检测和计算,而不会对时间轴之外的其他的CAN报文进行超时检测和计算。
创建时间轴的目的是建立一个有序的结构来维护CAN报文超时检查的顺序,由于Map(即mutilMap或map<time_t,list<id>>等)结构是是标准库中通用且被证明稳定高效的数据结构,因此本实施例通过通用有序的Map结构来创建时间轴,具有结构简单可靠的优势,当然也可使用自行维护其有序性的链表或数组等,来实现时间轴的功能,在此不作限定。
步骤S20:对时间轴上的各个CAN报文的接收时间进行记录;
示范性的,在本申请实施例中,作为实际超时检测工作中频度最高的CAN报文的接收过程,该接受过程内操作越少越好,因此本实施例在接收报文时只需记录下接收时间,以达到接收CAN报文时需要进行的操作尽可能少的目的,即当各个CAN报文被初始化至时间轴后,就需要对时间轴上的各个CAN报文的接收时间进行记录。比如,在第5ms之前的第1ms、第3ms均接收到了CAN报文1,则此时需要将CAN报文1的接收时间记录为第3ms。
步骤S30:当时间轴上的第一时刻被触发进行超时检测时,基于所述第一时刻、所述超时时刻和在第一时刻前最后一次接收到CAN报文的最后接收时刻对时间轴上位于第一时刻之前的各个CAN报文进行超时计算,并根据计算结果确定出处于超时状态的CAN报文。
进一步的,所述基于所述第一时刻、所述超时时刻和在第一时刻前最后一次接收到CAN报文的最后接收时刻对时间轴上位于第一时刻之前的各个CAN报文进行超时计算,并根据计算结果确定出处于超时状态的CAN报文,包括:
将时间轴上位于第一时刻之前的第一CAN报文的最后接收时刻与所述第一CAN报文的超时时刻进行相加,得到第二时刻;
判断所述第二时刻是否大于所述第一时刻;
若是,则所述第一CAN报文处于非超时状态;
若否,则所述第一CAN报文处于超时状态。
进一步的,在所述第一CAN报文处于非超时状态的步骤之后,还包括:
将所述第一CAN报文的最后接收时刻与所述第一CAN报文的预设超时时间进行相加,得到第三时刻;
将所述第一CAN报文移动至时间轴上与所述第三时刻对应的位置处。
进一步的,在所述第一CAN报文处于超时状态的步骤之后,还包括:
向超时处理模块发送超时响应,并将所述第一CAN报文从所述时间轴上移除;
当再次接收到所述第一CAN报文时,将接收到所述第一CAN报文的第一接收时刻与所述第一CAN报文的预设超时时间进行相加,得到第四时刻;
将所述第一CAN报文插入至时间轴上与所述第四时刻对应的位置处。
示范性的,在本申请实施例中,若当前时刻被触发,则说明当前时刻为检测时刻(比如参见图2所示,可以将第一次检测时刻设置为ID1对应的超时时刻),需进行报文超时检测,因此获取当前时刻对应的当前时间,并在时间轴中检索出所有超时时刻在当前时刻之前的CAN报文,以获得需要更新状态的CAN报文集合。具体的,当触发超时检测时,从头开始遍历所有key值,而key值小于当前时刻对应的CAN报文就是需要更新的报文,因此根据key值与当前时刻的大小关系即可获得所有需要更新的CAN报文,且由于时间轴上的key值具有从小到大的有序特性,因此只需要从时间轴的初始部分开始key值与当前时刻的比对,直至遇到key值大于当前时刻就可以停止,而无需遍历所有CAN报文。
参见图3所示,以第一时刻为第12ms被触发为例,对时间轴进行遍历,由于ID1和ID2的key值小于第一时刻,即ID1和ID2的超时时刻早于检测时刻,而ID3至ID5的超时时刻均晚于检测时刻,即ID3至ID5在当前时刻均未超时,无需进行超时计算,因此需要进行超时计算的报文为CAN报文1和CAN报文2。由于在接收CAN报文1和CAN报文2时并不更新时间轴,而在CAN报文1和CAN报文2的超时时刻之前可能已经接收到多个CAN报文1和CAN报文2(每个CAN报文的接收时间均已被记录),因此无法确认CAN报文1和CAN报文2是否处于超时状态,而是需要进一步检查。
假设CAN报文1的超时时刻(若此时的超时检测是在时间轴初始化后进行的第一次超时检测,则此时的超时时刻等于初始超时时刻)为第9ms,且在第12ms之前的第1ms、第3ms、第5ms和第8ms均接收到了CAN报文1,同理假设CAN报文2的超时时刻为第10ms,且在第12ms之前只有第1ms接收到了CAN报文2。
此时,对于CAN报文1:将第12ms之前最后一次接收到CAN报文1的最后接收时刻(即第8ms)与CAN报文1的超时时刻(即第9ms)进行相加,并根据相加结果和第一时刻(即第12ms)即可判断CAN报文1是否处于超时状态,即8+9=17,由于17大于第一时刻对应的12,则说明CAN报文1处于非超时状态。于是,本实施例将进一步计算出CAN报文1的下一个超时时刻,即将最后接收时刻(即第8ms)与CAN报文1的预设超时时间(即5ms)进行相加,得到CAN报文1的新的超时时刻(即第13ms),并将CAN报文1移动至时间轴上第13ms的位置处,得到新的时间轴并等待下一次检测。
对于CAN报文2:将第12ms之前最后一次接收到CAN报文2的最后接收时刻(即第1ms)与CAN报文2的超时时刻(即第10ms)进行相加,并根据相加结果和第一时刻(即第12ms)即可判断CAN报文2是否处于超时状态,即1+10=11,由于11小于第一时刻对应的12,则说明CAN报文2处于超时状态。于是,本实施例将向系统中的超时处理模块发送超时响应,并将CAN报文2从时间轴上移除;但是,若CAN报文2的超时响应问题被解决后,系统会继续发送CAN报文2,因此当再次接收到CAN报文2时,将再次接收到CAN报文2对应的第一接收时刻与CAN报文2的预设超时时间进行相加得到第四时刻,并将CAN报文2插入至时间轴上与第四时刻对应的位置处。比如,在第19ms接收到CAN报文2,则将19与CAN报文2的预设超时时间(即7ms)进行相加,得到CAN报文2的新的超时时刻(即第26ms),并将CAN报文2重新插入至时间轴上第26ms的位置处,得到新的时间轴并等待下一次检测。由此可见,本实施例仅在检测过程中对时间轴进行操作,其余时刻时间轴均为静态,可减少对有序结构的更改;此外,在CAN报文数量的多与少、报文周期的长与短以及报文频度的密集或稀疏等各种场景下,均无需对本实施例的超时计算算法进行任何修改,且都能达到较高的运行效率和空间效率。
进一步的,所述方法还包括:
触发时间轴上第一时刻后的任一时刻作为新的第一时刻进行超时检测,并执行所述基于所述第一时刻、所述超时时刻和在第一时刻前最后一次接收到CAN报文的最后接收时刻对时间轴上位于第一时刻之前的各个CAN报文进行超时计算的步骤。
示范性的,在本申请实施例中,在完成CAN报文1和CAN报文2的超时计算和处理后,可以以新时间轴中第12ms后的任一时刻作为下一次检查时刻,比如图3中的ID3的超时时刻,然后再对ID3之前的CAN报文进行超时计算。
进一步的,所述第一时刻被触发的机制为周期性触发或定时器触发。
示范性的,在本申请实施例中,CAN报文超时检测的触发既可以采用周期性触发也可以采取定时器触发。其中,相关技术中通过轮询的方式进行超时检测时,存在轮询周期难以选择的问题,比如轮询周期短则性能开销难以承受,而周期长则响应精度又过低,且如果报文周期长短差距较大,还会导致更多的性能浪费;但是本实施例中的超时计算与与CAN报文数量的多少、CAN报文周期的长短、CAN报文的频度等无关,因此可利用周期性(该检测周期应小于允许的响应误差范围)进行触发,其结构简单可靠,且由于时间轴的特性,即使频繁的触发也不会检测无需检测的CAN报文,因此不会带来额外的性能浪费。
而定时器法触发则可以带来更高的响应精度以及更小的性能开销(例如本实施例只需一个定时器即可,而不需要为每个CAN报文均设置一个定时器),比如每完成一次检测后,可重新获取最近的一个超时时刻,以此超时时刻作为下一次检测时刻;当然也可在误差允许范围内,将检测时刻向后偏移以进一步提高性能,即依靠时间轴自动将每次检测报文状态的时机推迟至必要的极限时刻,比如在第12ms完成一次检测后,第12ms后还存在第15ms对应的CAN报文、第18ms对应的CAN报文、第20ms对应的CAN报文、第23ms对应的CAN报文、第28ms对应的CAN报文等,此时可以选择第23ms作为下一次检测时刻,那么下一次进行超时检测时可对第15ms对应的CAN报文、第18ms对应的CAN报文、第20ms对应的CAN报文进行超时检测,以进一步提高超时检测效率。
由此可见,本实施例利用有序数据结构形成时间轴进行报文管理,提供了一种在性能占用、空间占用以及响应精度上均有较优秀表现且结构简单可靠、易于实现的报文超时算法。因此通过本申请,每次超时检测时只需对时间轴上某一时刻前的CAN报文进行超时计算,而某一时刻后的CAN报文由于均未超时,因此不需要对其进行超时计算,进而保证每次仅对状态可能发生变化的CAN报文进行超时计算,即无需对系统内的所有CAN报文进行轮询,以此达到每次检测周期需进行超时计算的CAN报文数量最小化的目的,并使得超时检测的频次达到理论上最低,提高了CAN报文超时计算的效率;此外,本申请对CAN报文超时检测的时机和需要进行超时计算的CAN报文均从时间轴中动态获取,而与CAN报文数量的多少、CAN报文周期的长短、CAN报文的频度等无关,不仅可适用于各种场景的超时计算,且无需设置大量的定时器实现超时计算,有效降低了系统开销。
参见图4所示,本申请实施例还提供了一种CAN报文超时计算装置,包括:
初始化单元,其用于创建时间轴,并基于各个CAN报文的预设超时时间确定出CAN报文的超时时刻,根据所述超时时刻将CAN网络中的各个CAN报文预先插入至时间轴上的对应位置处;
记录单元,其用于对时间轴上的各个CAN报文的接收时间进行记录;
检测单元,其用于当时间轴上的第一时刻被触发进行超时检测时,基于所述第一时刻、所述超时时刻和在第一时刻前最后一次接收到CAN报文的最后接收时刻对时间轴上位于第一时刻之前的各个CAN报文进行超时计算,并根据计算结果确定出处于超时状态的CAN报文。
进一步的,所述初始化单元具体用于:
将各个CAN报文的超时时刻与其对应的报文ID以键值对的形式进行存储,所述超时时刻为键值对中的key值,所述报文ID为键值对中的value值;
按照key值从小到大的顺序将CAN网络中的所有CAN报文预先插入至时间轴上的对应位置处。
进一步的,所述检测单元具体用于:
将时间轴上位于第一时刻之前的第一CAN报文的最后接收时刻与所述第一CAN报文的超时时刻进行相加,得到第二时刻;
判断所述第二时刻是否大于所述第一时刻;
若是,则所述第一CAN报文处于非超时状态;
若否,则所述第一CAN报文处于超时状态。
进一步的,所述检测单元具体还用于:
将所述第一CAN报文的最后接收时刻与所述第一CAN报文的预设超时时间进行相加,得到第三时刻;
将所述第一CAN报文移动至时间轴上与所述第三时刻对应的位置处。
进一步的,所述检测单元具体还用于:
向超时处理模块发送超时响应,并将所述第一CAN报文从所述时间轴上移除;
当再次接收到所述第一CAN报文时,将接收到所述第一CAN报文的第一接收时刻与所述第一CAN报文的预设超时时间进行相加,得到第四时刻;
将所述第一CAN报文插入至时间轴上与所述第四时刻对应的位置处。
进一步的,所述检测单元还用于:
触发时间轴上第一时刻后的任一时刻作为新的第一时刻进行超时检测,并执行所述基于所述第一时刻、所述超时时刻和在第一时刻前最后一次接收到CAN报文的最后接收时刻对时间轴上位于第一时刻之前的各个CAN报文进行超时计算的步骤。
进一步的,所述第一时刻被触发的机制为周期性触发或定时器触发。
需要说明的是,所属本领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的装置和各单元的具体工作过程,可以参考前述CAN报文超时计算方法实施例中的对应过程,在此不再赘述。
上述实施例提供的装置可以实现为一种计算机程序的形式,该计算机程序可以在如图5所示的CAN报文超时计算设备上运行。
本申请实施例还提供了一种CAN报文超时计算设备,包括:通过系统总线连接的存储器、处理器和网络接口,存储器中存储有至少一条指令,至少一条指令由处理器加载并执行,以实现前述的CAN报文超时计算方法的全部步骤或部分步骤。
其中,网络接口用于进行网络通信,如发送分配的任务等。本领域技术人员可以理解,图5中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
处理器可以是CPU,还可以是其他通用处理器、数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程逻辑门阵列(FieldProgrammable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件分立硬件组件等。通用处理器可以是微处理器,或者该处理器也可以是任何常规的处理器等,处理器是计算机装置的控制中心,利用各种接口和线路连接整个计算机装置的各个部分。
存储器可用于存储计算机程序和/或模块,处理器通过运行或执行存储在存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现计算机装置的各种功能。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如视频播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如视频数据、图像数据等)等。此外,存储器可以包括高速随存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘、智能存储卡(SmartMedia Card,SMC)、安全数字(Secure digital,SD)卡、闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件或其他易失性固态存储器件。
本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时,实现前述的CAN报文超时计算方法的全部步骤或部分步骤。
本申请实施例实现前述的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法的步骤。其中,计算机程序包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。计算机可读介质可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(Read-Only memory,ROM)、随机存取存储器(Random Accessmemory,RAM)、电载波信号、电信信号以及软件分发介质等。需要说明的是,计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、服务器或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
以上所述仅是本申请的具体实施方式,使本领域技术人员能够理解或实现本申请。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种CAN报文超时计算方法,其特征在于,包括以下步骤:
创建时间轴,并基于各个CAN报文的预设超时时间确定出CAN报文的超时时刻,根据所述超时时刻将CAN网络中的各个CAN报文预先插入至时间轴上的对应位置处;
对时间轴上的各个CAN报文的接收时间进行记录;
当时间轴上的第一时刻被触发进行超时检测时,基于所述第一时刻、所述超时时刻和在第一时刻前最后一次接收到CAN报文的最后接收时刻对时间轴上位于第一时刻之前的各个CAN报文进行超时计算,并根据计算结果确定出处于超时状态的CAN报文。
2.如权利要求1所述的CAN报文超时计算方法,其特征在于,所述根据所述超时时刻将CAN网络中的各个CAN报文预先插入至时间轴上的对应位置处,包括:
将各个CAN报文的超时时刻与其对应的报文ID以键值对的形式进行存储,所述超时时刻为键值对中的key值,所述报文ID为键值对中的value值;
按照key值从小到大的顺序将CAN网络中的所有CAN报文预先插入至时间轴上的对应位置处。
3.如权利要求1所述的CAN报文超时计算方法,其特征在于,所述基于所述第一时刻、所述超时时刻和在第一时刻前最后一次接收到CAN报文的最后接收时刻对时间轴上位于第一时刻之前的各个CAN报文进行超时计算,并根据计算结果确定出处于超时状态的CAN报文,包括:
将时间轴上位于第一时刻之前的第一CAN报文的最后接收时刻与所述第一CAN报文的超时时刻进行相加,得到第二时刻;
判断所述第二时刻是否大于所述第一时刻;
若是,则所述第一CAN报文处于非超时状态;
若否,则所述第一CAN报文处于超时状态。
4.如权利要求3所述的CAN报文超时计算方法,其特征在于,在所述第一CAN报文处于非超时状态的步骤之后,还包括:
将所述第一CAN报文的最后接收时刻与所述第一CAN报文的预设超时时间进行相加,得到第三时刻;
将所述第一CAN报文移动至时间轴上与所述第三时刻对应的位置处。
5.如权利要求3所述的CAN报文超时计算方法,其特征在于,在所述第一CAN报文处于超时状态的步骤之后,还包括:
向超时处理模块发送超时响应,并将所述第一CAN报文从所述时间轴上移除;
当再次接收到所述第一CAN报文时,将接收到所述第一CAN报文的第一接收时刻与所述第一CAN报文的预设超时时间进行相加,得到第四时刻;
将所述第一CAN报文插入至时间轴上与所述第四时刻对应的位置处。
6.如权利要求4或5所述的CAN报文超时计算方法,其特征在于,所述方法还包括:
触发时间轴上第一时刻后的任一时刻作为新的第一时刻进行超时检测,并执行所述基于所述第一时刻、所述超时时刻和在第一时刻前最后一次接收到CAN报文的最后接收时刻对时间轴上位于第一时刻之前的各个CAN报文进行超时计算的步骤。
7.如权利要求1所述的CAN报文超时计算方法,其特征在于:所述第一时刻被触发的机制为周期性触发或定时器触发。
8.一种CAN报文超时计算装置,其特征在于,包括:
初始化单元,其用于创建时间轴,并基于各个CAN报文的预设超时时间确定出CAN报文的超时时刻,根据所述超时时刻将CAN网络中的各个CAN报文预先插入至时间轴上的对应位置处;
记录单元,其用于对时间轴上的各个CAN报文的接收时间进行记录;
检测单元,其用于当时间轴上的第一时刻被触发进行超时检测时,基于所述第一时刻、所述超时时刻和在第一时刻前最后一次接收到CAN报文的最后接收时刻对时间轴上位于第一时刻之前的各个CAN报文进行超时计算,并根据计算结果确定出处于超时状态的CAN报文。
9.一种CAN报文超时计算设备,其特征在于,包括:存储器和处理器,所述存储器中存储有至少一条指令,所述至少一条指令由所述处理器加载并执行,以实现权利要求1至7中任一项所述的CAN报文超时计算方法。
10.一种计算机可读存储介质,其特征在于:所述计算机存储介质存储有计算机程序,当所述计算机程序被处理器执行时,以实现权利要求1至7中任一项所述的CAN报文超时计算方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210476785.4A CN114826974A (zh) | 2022-04-29 | 2022-04-29 | Can报文超时计算方法、装置、设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210476785.4A CN114826974A (zh) | 2022-04-29 | 2022-04-29 | Can报文超时计算方法、装置、设备及可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114826974A true CN114826974A (zh) | 2022-07-29 |
Family
ID=82510642
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210476785.4A Pending CN114826974A (zh) | 2022-04-29 | 2022-04-29 | Can报文超时计算方法、装置、设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114826974A (zh) |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101459502A (zh) * | 2007-12-13 | 2009-06-17 | 华为技术有限公司 | 一种网络时钟同步的方法与装置 |
CN102882809A (zh) * | 2012-10-26 | 2013-01-16 | 杭州迪普科技有限公司 | 一种基于报文缓存的网络限速方法及装置 |
CN104917645A (zh) * | 2015-04-17 | 2015-09-16 | 浪潮电子信息产业股份有限公司 | 一种在线检测报文传输超时的方法与装置 |
CN105991371A (zh) * | 2015-04-16 | 2016-10-05 | 杭州迪普科技有限公司 | 一种故障检测方法及装置 |
CN106059956A (zh) * | 2016-06-24 | 2016-10-26 | 汉柏科技有限公司 | 一种用于网络设备会话的时间队列处理方法以及装置 |
WO2017097201A1 (zh) * | 2015-12-09 | 2017-06-15 | 华为技术有限公司 | 一种数据传输方法、发送装置及接收装置 |
CN107872396A (zh) * | 2016-09-26 | 2018-04-03 | 华为技术有限公司 | 具有超时控制的通信方法、处理设备、终端设备和服务器 |
CN110971459A (zh) * | 2019-11-29 | 2020-04-07 | 新华三半导体技术有限公司 | 会话故障检测方法、装置、终端设备及可读存储介质 |
CN111565132A (zh) * | 2020-04-24 | 2020-08-21 | 烽火通信科技股份有限公司 | 一种双向转发检测报文的超时检测方法及系统 |
CN113110172A (zh) * | 2021-04-14 | 2021-07-13 | 中国重汽集团济南动力有限公司 | 一种基于can网关控制器的车辆can网络监控系统 |
CN113946147A (zh) * | 2021-09-26 | 2022-01-18 | 东风商用车有限公司 | 一种can报文诊断方法 |
-
2022
- 2022-04-29 CN CN202210476785.4A patent/CN114826974A/zh active Pending
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101459502A (zh) * | 2007-12-13 | 2009-06-17 | 华为技术有限公司 | 一种网络时钟同步的方法与装置 |
CN102882809A (zh) * | 2012-10-26 | 2013-01-16 | 杭州迪普科技有限公司 | 一种基于报文缓存的网络限速方法及装置 |
CN105991371A (zh) * | 2015-04-16 | 2016-10-05 | 杭州迪普科技有限公司 | 一种故障检测方法及装置 |
CN104917645A (zh) * | 2015-04-17 | 2015-09-16 | 浪潮电子信息产业股份有限公司 | 一种在线检测报文传输超时的方法与装置 |
WO2017097201A1 (zh) * | 2015-12-09 | 2017-06-15 | 华为技术有限公司 | 一种数据传输方法、发送装置及接收装置 |
CN106856457A (zh) * | 2015-12-09 | 2017-06-16 | 华为技术有限公司 | 一种数据传输方法、发送装置及接收装置 |
CN106059956A (zh) * | 2016-06-24 | 2016-10-26 | 汉柏科技有限公司 | 一种用于网络设备会话的时间队列处理方法以及装置 |
CN107872396A (zh) * | 2016-09-26 | 2018-04-03 | 华为技术有限公司 | 具有超时控制的通信方法、处理设备、终端设备和服务器 |
CN110971459A (zh) * | 2019-11-29 | 2020-04-07 | 新华三半导体技术有限公司 | 会话故障检测方法、装置、终端设备及可读存储介质 |
CN111565132A (zh) * | 2020-04-24 | 2020-08-21 | 烽火通信科技股份有限公司 | 一种双向转发检测报文的超时检测方法及系统 |
CN113110172A (zh) * | 2021-04-14 | 2021-07-13 | 中国重汽集团济南动力有限公司 | 一种基于can网关控制器的车辆can网络监控系统 |
CN113946147A (zh) * | 2021-09-26 | 2022-01-18 | 东风商用车有限公司 | 一种can报文诊断方法 |
Non-Patent Citations (1)
Title |
---|
秦培斌;李青;肖志辉;杨大川;: "一种稳定高效的加密报文回收设计", 通信技术, no. 04, 10 April 2015 (2015-04-10) * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11080404B2 (en) | Firmware upgrade method, slave station of robot, and machine readable storage medium | |
CN110704335A (zh) | 一种基于异步环形缓冲区的数据读取、写入方法及装置 | |
CN111343089B (zh) | 解决mac地址hash冲突导致洪泛问题的方法及系统 | |
CN111427417B (zh) | 一种时间获取方法、装置及电子设备 | |
CN113489653A (zh) | 报文发送方法、装置以及计算机设备 | |
CN109361693B (zh) | 虚拟设备通信方法和装置 | |
CN111106987A (zh) | 一种can报文发送方法、装置、存储介质及电子设备 | |
CN114826974A (zh) | Can报文超时计算方法、装置、设备及可读存储介质 | |
CN107623705B (zh) | 基于视频云存储系统的存储模式升级方法、装置和系统 | |
CN115794317A (zh) | 一种基于虚拟机的处理方法、装置、设备及介质 | |
CN107958414B (zh) | 一种清除cics系统长交易的方法及系统 | |
CN111045787B (zh) | 一种快速继续实验方法及系统 | |
CN113656374A (zh) | 带有附件的业务报文的处理方法及装置 | |
CN114721801A (zh) | 批量任务执行时间的动态调度方法及装置 | |
CN113542398A (zh) | 分布式集群系统的管控方法、装置、介质和设备 | |
CN110069221B (zh) | 数据释放方法及装置 | |
CN113032021A (zh) | 系统切换及其数据处理方法、装置、设备及存储介质 | |
CN111327499A (zh) | 发送报文的方法、装置和汽车 | |
CN103514126A (zh) | 一种数据的接收方法、系统以及装置 | |
CN115277285B (zh) | 通信方法及通信装置、通信系统及计算机可读存储介质 | |
CN113259374B (zh) | 一种新鲜值管理方法及装置 | |
CN113743564B (zh) | 一种计数方法、装置、电子设备和存储介质 | |
CN110618791B (zh) | 一种cfs存储域配置方法、装置、设备及可读存储介质 | |
CN115237974A (zh) | 一种系统数据序列号生成方法及系统 | |
CN109271347B (zh) | 一种分布式文件系统存储单元的启动方法、装置及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |