一种车载CAN总线网络报文异常检测方法技术

技术编号:39162990 阅读:26 留言:0更新日期:2023-10-23 15:03
本发明专利技术公开了一种车载CAN总线网络报文异常检测方法,属于车载信息检测领域,方法包括以下步骤:步骤一:通过Spy3接口实时读取当前车载CAN总线数据报文,并初始化;步骤二:对读取到的报文进行处理,通过比较读取到的报文ID与当前已处理过的所有报文ID是否相同来判断当前ID是否为首次出现的ID,本发明专利技术克服了传统检测方法性能低下、消耗硬件资源以及成本高等不足之处,本发明专利技术实时分析总线上的报文特征,报文接收完毕即统计完毕;报文接收过程中计算量小,不影响报文接收的实时性;算法复杂度低;对操作资源占用少。对操作资源占用少。对操作资源占用少。

【技术实现步骤摘要】
一种车载CAN总线网络报文异常检测方法


[0001]本专利技术属于车载信息检测领域,具体涉及一种车载CAN总线网络报文异常检测方法。

技术介绍

[0002]本专利技术主要针对汽车CAN总线网络信号周期发送的异常检测技术。近年来汽车中的CAN总线信号越来越多,CAN总线负载率越来越大,而在整车对CAN信号发送的实时性要求也越来越高,CAN信号在车载功能占比也越来越大,CAN网络信号发送的周期必须符合要求,因此拥有精准的CAN信号周期算法检测越来越重要。
[0003]目前常用的CAN信号周期异常检测有以下几种:1)基于统计方法的异常检测算法:通过计算一个时间窗口内CAN总线上不同ID的报文频率,得到总线上的信息熵;2)基于报文间隔的异常检测算法:依据在正常情况下一些 ECU 会周期性的发送报文这一特点,通过检测相邻两条消息的时间间隔来判断异常,如果两条连续的同 ID 报文的时间间隔小于阈值,就判断为异常;3)基于频率的异常检测算法:通过计算一个滑动时间窗内报文频率,与历史平均记录进行比较来报告异常。
[0004]以上方式都存在一些弊端,方法1)只有在大量报文异常时总线上的信息熵才会引起变化;方法2)没有考虑到非周期报文对报文间隔值的影响,而且不能检测非周期报文的异常。方法3)不能定位异常报文。

技术实现思路

[0005]本专利技术根据CAN总线网络报文的特征,提出一种车载CAN总线网络报文异常检测方法,目的在于克服上述现有技术中针对传统检测方法性能低下、消耗硬件资源以及成本高等不足之处,提供一种易于实现、低成本、高性能以及高准确率的汽车CAN总线网络报文异常检测算法,本专利技术的技术方案如下:一种车载CAN总线网络报文异常检测方法,方法包括以下步骤:步骤一:实时读取当前车载CAN总线数据报文,并初始化;步骤二:对读取到的报文进行处理,通过比较读取到的报文的ID与当前已处理过的所有报文ID是否相同来判断当前ID是否为首次出现的ID。如果该ID是首次出现,则需要记录下该ID首次出现的时间(即Init_Time),并将Max_Time初始化为0、Min_Time初始化为正无穷大。对于CAN总线上读取到的报文,一般包括ID标识符,用于区分不同类型的报文;Data数据域,包含实际传输的数据信息;DLC数据长度码,表示Data中实际传输数据所占用的字节数。处理当前ID是否为首次出现的目的在于记录每个ID首次出现的时间,方便后续计算Diff_Time时能够准确地计算每个ID之间的时间间隔。这样做便于检测和排除故障,并提高系统稳定性和可靠性。
[0006]优选地,步骤一包括:以ID为标识符,并初始化总ID的个数Count1为0,本步骤的目的是初始化总ID的个数为0,即在开始时将计数器归零。这是一个重要的步骤,因为在后续的操作中需要统计和管理CAN报文中不同ID的数量,以便进行异常检测和处理。通过将计数器初始化为0,可以确保每次开始新的统计时都从空白状态开始,并避免出现错误的计数结果;建立一个用于存储CAN报文中出现的不同ID的数组Single_ID,定义数组Single_ID,不限制其大小;同一个ID出现的时间差计为Diff_Time;定义Diff_Time的目的是记录CAN报文中同一个ID出现的时间差,即两个相邻相同ID的报文之间的时间间隔。通过计算Diff_Time,可以了解CAN总线上数据传输的速率和延迟情况,以及检测可能存在的通信异常或故障。例如,如果同一个ID的报文出现时间间隔较长,则可能表示某个节点发送数据时出现了问题或总线负载过高导致通信速度变慢。因此,通过记录并分析Diff_Time可以对CAN网络进行实时监测和故障排除。
[0007]计同一个ID出现的时间间隔最大值为Max_Time = 0,最小值为Min_Time = +∞,记ID首次出现的时间为Init_Time。将同一个ID出现的时间间隔的最大值初始化为0,最小值初始化为正无穷大,是为了在后续计算Diff_Time时能够准确记录每个ID的时间间隔情况。同时,记ID首次出现的时间也可以提供更精确的时间参考,以便进行实时监测和故障排除。
[0008]如果不对Max_Time和Min_Time进行初始化,则第一次计算Diff_Time可能会得到错误的结果。如果Max_Time未被初始化,而某个ID首次出现之前已经有其他ID出现过,则第一次计算该ID的Diff_Time时可能会得到负数。同样地,如果Min_Time未被初始化,则第一次计算Diff_Time时可能会得到比实际间隔时间更短的结果。因此,在CAN总线上进行数据传输分析时,对这些变量进行正确的初始化非常重要。
[0009]优选地,步骤二包括:实时判断当前ID是否为首次出现的ID;判断当前ID是否为第n次出现,其中n≥2,若是则将当前出现时间Temp_Time与上一次出现该ID的时间做差暂存于Diff_Time;否则将ID号加入数组Single_ID中,Count1和Count2都加1,记录当前ID首次出现的时间Init_Time;将该ID当前时间间隔值Diff_Time与该ID出现的时间间隔最大值Max_Time、时间间隔最小值Min_Time比较,判断是否Diff_Time≥Max_Time;计算ID的平均周期;判断ID的平均周期是否在该ID的标准周期误差范围内,将计算出的平均周期Avg_Time与该ID的标准周期进行比较。
[0010]优选地,实时判断当前ID是否为首次出现的ID采用以下方法:建立一个ID列表,记录已经出现过的所有ID;每当接收到一个新的CAN报文时,先在ID列表中查找该报文的ID是否已经存在;如果该ID不存在于列表中,则说明当前ID是首次出现的,将其加入到Single_ID列表中;如果该ID已经存在于列表中,则不是首次出现。
[0011]优选地,判断是否Diff_Time≥Max_Time,若是则将该ID当前时间间隔值Diff_
Time赋值给时间间隔最大值Max_Time = Diff_Time,并记录当前ID对应的Count1的值;否则Diff_Time<Min_Time,则将该ID当前时间间隔值Diff_Time赋值给时间间隔最小值Min_Time = Diff_Time,并记录当前ID对应的Count1的值。
[0012]优选地,计算ID的平均周期包括:某ID最后一次出现的Temp_time减去初始时间Init_Time并将其除以该ID出现次数Count2,得到该ID的出现间隔时间,即可得到该ID的平均周期Avg_Time。
[0013]优选地,将计算出的平均周期Avg_Time与该ID的标准周期进行比较,如果平均周期在其误差范围内,则认为该ID检测无误并结束检测;否则判断为异常并记录该异常ID的最大时间间隔Max_Time和最小时间间隔Min_Time对应的ID序列,即当时Count1的值,定位该异常ID出现的位置,检测结束。
[0014]优选地,如果当前ID为首次出现的ID,则将其加入数组Single本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种车载CAN总线网络报文异常检测方法,其特征在于,方法包括以下步骤:步骤一:实时读取当前车载CAN总线数据报文,并初始化;步骤二:对读取到的报文进行处理,通过比较读取到的报文ID与当前已处理过的所有报文ID是否相同来判断当前ID是否为首次出现的ID。2.根据权利要求1所述的一种车载CAN总线网络报文异常检测方法,其特征在于,步骤一包括:以ID为标识符,并初始化总ID的个数Count1为0;建立一个用于存储CAN报文中出现的不同ID的数组Single_ID,定义数组Single_ID,不限制其大小;同一个ID出现的时间差计为Diff_Time;计同一个ID出现的时间间隔最大值为Max_Time = 0,最小值为Min_Time = +∞,记ID首次出现的时间为Init_Time。3.根据权利要求1所述的一种车载CAN总线网络报文异常检测方法,其特征在于,步骤二包括:实时判断当前ID是否为首次出现的ID;判断当前ID是否为第n次出现,其中n≥2,若是则将当前出现时间Temp_Time与上一次出现该ID的时间做差暂存于Diff_Time;否则将ID号加入数组Single_ID中,Count1和Count2都加1,记录当前ID首次出现的时间Init_Time;将该ID当前时间间隔值Diff_Time与该ID出现的时间间隔最大值Max_Time、时间间隔最小值Min_Time比较,判断是否Diff_Time≥Max_Time;计算ID的平均周期;判断ID的平均周期是否在该ID的周期误差范围内,将计算出的平均周期Avg_Time与该ID的标准周期进行比较。4.根据权利要求3所述的一种车载CAN总线网络报文异常检测方法,其特征在于,实时判断当前ID是否为首次出现的ID采用以下方法:建立一个ID列表,记录已经出现过的所有ID;每当接收到一个新的CAN报文时,先在ID列表中查找该报文的ID是否已经存在;如果该ID不存在于列表中,则说明当前ID是首次出现的,将其加入到Single_ID列表中;如果该ID已经存在于列表中,则不是首次出现。5.根据权利要求3所述的一种车载CAN...

【专利技术属性】
技术研发人员:甯聆怡叶晓昶
申请(专利权)人:延锋伟世通电子科技南京有限公司
类型:发明
国别省市:

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

1