掌桥专利:专业的专利平台
掌桥专利
首页

故障检测方法、装置、设备及存储介质

文献发布时间:2023-06-19 19:28:50


故障检测方法、装置、设备及存储介质

技术领域

本发明涉及检测技术领域,更具体地说,涉及一种故障检测方法、装置、设备及存储介质。

背景技术

汽车是一个庞大且复杂的系统,随着汽车智能化、电动化的发展,车辆上的电子控制单元数量不断增加,且功能也愈加复杂。对于整个车辆来说,其中任何一个电子控制单元甚至一个电子控制单元中的某个应用程序发生故障或失效,都可能导致不可挽回的危害与损失。因此,如何检测电子控制单元中的应用程序的执行是否出现故障成为亟待解决的技术问题。

发明内容

本发明的目的是提供一种故障检测方法、装置、设备及存储介质,以检测电子控制单元中的应用程序的执行是否出现故障。包括如下技术方案:

一种故障检测方法,包括:

获得目标应用程序运行过程中上报的检查点ID;所述目标应用程序中设置有多个检查点,所述目标应用程序在运行到任一检查点所在位置时上报所述任一检查点的ID;

基于所述任一检查点的ID,获得所述任一检查点对应的上报关系和/或上报次数;其中,所述上报关系包括所述任一检查点与对应的目标检查点之间的上报时间间隔,和/或,所述任一检查点与所述目标检查点之间的上报时序,所述上报次数为所述任一检查点在预设时长内的上报次数;

根据所述目标应用程序上报的各个检查点对应的上报关系和/或上报次数,确定所述目标应用程序的状态;

若所述目标应用程序的状态为目标状态,确定所述目标应用程序出现故障;所述目标状态为停止状态或失败状态。

上述方法,可选的,所述目标应用程序包括多个子模块;所述根据所述目标应用程序上报的各个检查点对应的上报关系和/或上报次数,确定所述目标应用程序的状态,包括:

根据同一子模块的各个检查点对应的上报关系和/或上报次数,确定所述同一子模块的状态;

根据所述目标应用程序中的各个子模块的状态确定所述目标应用程序的状态。

上述方法,可选的,所述根据同一子模块的各个检查点对应的上报关系和/或上报次数,确定所述同一子模块的状态,包括:

如果所述任一检查点属于第一类检查点,若所述任一检查点在所述预设时长内的上报次数在目标范围内,确定所述任一检查点对应的周期检测结果为正确,否则确定所述周期检测结果为不正确;所述目标范围的下限为预期报告次数与容差下限的差值,所述目标范围的上限为所述预期报告次数与容差上限的和值;

如果所述任一检查点属于第二类检查点,若所述任一检查点与所述目标检查点之间的上报时间间隔大于或等于时间间隔下限,且小于或等于时间间隔上限,确定所述任一检查点对应的执行时间检测结果为正确,否则确定所述执行时间检测结果为不正确;

如果所述任一检查点属于第三类检查点,若所述任一检查点与所述目标检查点之间的上报时序为预设的所述任一检查点与所述目标检查点之间的目标上报时序,确定所述任一检查点对应的逻辑检测结果为正确,否则确定所述逻辑检测结果为不正确;

根据所述同一子模块的各个检查点对应的检测结果,以及预置的第一状态机,确定所述同一子模块的状态。

上述方法,可选的,如果所述任一检查点属于所述第二类检查点,所述方法还包括:

如果所述任一检查点是所述目标应用程序连续第二次上报的检查点,确定所述任一检查点对应的执行时间检测结果为不正确;

如果所述任一检查点属于源检查点,若在经历所述时间间隔上限时仍未接收到所述任一检查点对应的目的检查点,确定经历所述时间间隔上限时的执行时间检测结果为不正确。

上述方法,可选的,所述根据所述目标应用程序中的各个子模块的状态确定所述目标应用程序的状态,包括:

将第二状态机中以所述目标应用程序的当前状态作为源状态的转换路径确定为候选转换路径;

根据所述目标应用程序中的各个子模块的状态,在各个候选转换路径对应的转换条件中,查找所述各个子模块的状态满足的第一目标转换条件;

将所述目标应用程序的状态更新为所述第一目标转换条件对应的候选转换路径的目的状态;

所述第二状态机中配置了所述目标应用程序的各个状态之间的转换路径和转换条件。

上述方法,可选的,所述目标应用程序所属的电子控制单元包括多个应用程序,每个应用程序包括多个子模块;所述方法还包括:

将第二状态机中以所述电子控制单元的当前状态作为源状态的转换路径确定为候选转换路径;

根据所述电子控制单元中的各个应用程序包含的各子模块的状态,在各个候选转换路径对应的转换条件中,查找所述各个应用程序包含的各子模块的状态满足的第二目标转换条件;

将所述电子控制单元的状态更新为所述第二目标转换条件对应的候选转换路径的目的状态;

所述第二状态机中配置了所述电子控制单元的各个状态之间的转换路径和转换条件。

上述方法,可选的,还包括:

确定所述目标应用程序出现故障后,对所述目标应用程序执行恢复操作。

一种故障检测装置,包括:

第一获得模块,用于获得目标应用程序运行过程中上报的检查点ID;所述目标应用程序中设置有多个检查点,所述目标应用程序在运行到任一检查点所在位置时上报所述任一检查点的ID;

第二获得模块,用于基于所述任一检查点的ID,获得所述任一检查点对应的上报关系和/或上报次数;其中,所述上报关系包括所述任一检查点与对应的目标检查点之间的上报时间间隔,和/或,所述任一检查点与所述目标检查点之间的上报时序,所述上报次数为所述任一检查点在预设时长内的上报次数;

第一确定模块,用于根据所述目标应用程序上报的各个检查点对应的上报关系和/或上报次数,确定所述目标应用程序的状态;

第二确定模块,用于若所述目标应用程序的状态为目标状态,确定所述目标应用程序出现故障;所述目标状态为停止状态或失败状态。

一种电子设备,包括:

存储器,用于存储程序;

处理器,用于调用并执行所述存储器中的所述程序,通过执行所述程序实现如上任一项所述的故障检测方法的各个步骤。

一种可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,实现如上任一项所述的故障检测方法的各个步骤。

通过以上方案可知,本发明提供的一种故障检测方法、装置、设备及存储介质,获得目标应用程序运行过程中上报的检查点ID;目标应用程序中设置有多个检查点,目标应用程序在运行到任一检查点所在位置时上报该任一检查点的ID;基于任一检查点的ID,获得任一检查点对应的上报关系和/或上报次数;其中,上报关系包括上述任一检查点与对应的目标检查点之间的上报时间间隔,和/或,上报时序,上报次数为上述任一检查点在预设时长内的上报次数;根据目标应用程序上报的各个检查点对应的上报关系和/或上报次数,确定目标应用程序的状态;若目标应用程序的状态为目标状态(停止状态或失败状态),确定目标应用程序出现故障。本发明在目标应用程序中设置若干检查点,由目标应用程序在运行过程中上报检查点,根据目标应用程序上报的各个检查点对应的上报关系和/或上报次数确定目标应用程序的状态,当目标应用程序的状态为目标状态时,确定目标应用程序故障,实现了对应用程序的执行过程是否出现错误的实时监测,保证能够即时发现故障。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的故障检测方法的一种实现流程图;

图2为本发明实施例提供的根据目标应用程序上报的各个检查点对应的上报关系和/或上报次数,确定目标应用程序的状态的一种实现流程图;

图3为本发明实施例提供的某个子模块中多个检查点之间的目标上报时序的示例图;

图4为本发明实施例提供的第一状态机的一种示例图;

图5为本发明实施例提供的第二状态机的一种示例图;

图6为本发明实施例提供的故障检测装置的一种结构示意图;

图7为本发明实施例提供的电子设备的硬件结构框图。

说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的部分,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示的以外的顺序实施。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

对于汽车中的电子控制单元来说,引起故障的原因主要是两个方面:应用程序故障和硬件故障,本发明方案主要是针对应用程序故障而提出。本发明提供的故障检测方法、装置、设备及存储介质可以用于自动驾驶车辆,智能座舱等自动驾驶设备中,也可以用于车辆的动态控制和涉及到安全工程领域的主动安全系统中。

请参阅图1,为本发明实施例提供的故障检测方法的一种实现流程图,可以包括:

步骤S101:获得目标应用程序运行过程中上报的检查点ID。

目标应用程序可以为汽车上的任一电子控制单元中的任一应用程序。目标应用程序中设置有多个检查点,目标应用程序在运行到任一检查点所在位置时上报该任一检查点的ID。不同位置的检查点用不同的标识(ID)表征,作为示例,不同位置的检查点可以用不同的数字编码表征,即不同位置的检查点的ID取值为不同的编号。

本发明研究发现,一些应用程序的某个片段(该片段可能是整个应用程序,也可能是应用程序的一部分)是周期性运行的,因此对于需要周期性运行的程序片段,对其在给定的时长内的执行次数是有要求的。基于此,对于需要周期性运行的程序片段,可以将该程序片段的目标位置(可以是该程序片段的任一位置,比如,开始位置或结束位置或中间的某个位置)作为一个检查点(为便于区分,记为第一类检查点),为了识别该第一类检查点,在需要周期性运行的程序片段的目标位置添加一个检查点ID,为便于区分,记为ID1-i,表示应用程序中第i(i为大于0的正整数)个第一类检查点。

除了周期性运行的程序片段,应用程序中也会存在非周期性执行的程序片段(该片段可能是整个应用程序,也可能是应用程序的一部分),对这类程序片段,虽然没有对其在预设时长内的执行次数有要求,但对其执行时长会有要求。基于此,可以将这类非周期性执行的程序片段的开始位置和结束位置分别作为一个检查点(为便于区分,记为第二类检查点),为了识别第二类检查点,在这类非周期性执行的程序片段的开始位置添加一个第二类检查点ID,为便于区分,记为ID2-i,表示应用程序中第i(i为大于0的正整数)个第二类检查点,在这类非周期性执行的程序片段的结束位置添加一个第二类检查点,为便于区分,记为ID2-j,表示应用程序中第j(j为大于0的正整数)个第二类检查点,这两个位置的检查点的ID不同,即i≠j。为便于区分,将位于程序片段的开始位置的检查点记为源检查点,将位于程序片段的结束位置的检查点记为目的检查点。

以上是为了判断程序片段的执行时间是否正确而设置的检查点,除了对程序片段的执行时间是否正确进行判断之外,还需要对程序片段的执行逻辑是否正确进行判断。基于此,需要设置一组检查点,以及检查点之间的跳转关系。这一组检查点包括初始检查点、结束检查点,以及位于初始检查点和结束检查点之间的中转检查点,其中,初始检查点表征程序片段的入口点,结束检查点表征程序片段的结束点;中转检查点是程序片段执行过程中基于转换关系跳转到的检查点。基于此,可以在上述一组检查点中的每个检查点处分别设置一个检查点(为便于区分,记为第三类检查点)ID,任一个第三类检查点的ID可以记为ID3-i,表示应用程序中的第i(i为大于0的正整数)个第三类检查点。

由于程序片段中的同一位置可能会用于多种检测,因此,如果同一位置针对每类检查点均设置一个检查点ID,该同一位置可能会设置多个检查点ID,导致目标应用程序需要上报的数据量较多,为了降低目标应用程序上报的数据量,可以将同一位置用于多种检查的多个检查点ID融合为一个检查点ID,比如,如果某个位置需要设置第一类检查点和第二类检查点,则该某个位置处的检查点ID可以记为:ID1.2-i,表示应用程序中第i个作为第一类检查点和第二类检查点的检查点;再比如,如果某个位置需要设置第一类检查点、第二类检查点和第三类检查点,则该某个位置处的检查点ID可以记为:ID1.2.3-i,表示应用程序中第i个作为第一类检查点、第二类检查点和第三类检查点的检查点。基于此,IDa-i,表示应用程序中第i个仅作为第a(a=1,2,3)类检查点的检查点。

目标应用程序运行到任一检查点所在位置时,就将该任一检查点的ID上报给本发明的故障检测装置,该故障检测装置可以通过一个进程(为便于描述,记为守护进程)实现。

步骤S102:基于上述任一检查点的ID,获得上述任一检查点对应的上报关系和/或上报次数;其中,上报关系为上述任一检查点与对应的目标检查点之间的上报关系,上报次数为上述任一检查点在预设时长内的上报次数。

守护进程可以针对每个第一类检查点均设置一个第一计数器和一个第一计时器,第一计数器和第一计时器的初始值均为零。守护进程接收到上述任一检查点的ID时,如果上述任一检查点的ID表征上述任一检查点属于第一类检查点,且是第一计时器初始化后首次接收到的,则将第一计数器的计数加1,并通过第一计时器计时,后续在第一计时器的计时时长到达预设时长之前每接收到一次上述任一检查点的ID,将第一计数器的计数加1,当第一计时器到达预设时长时,将第一计数器的计数结果确定为上述任一检查点在预设时长内的上报次数,另外,将第一计数器和第一计时器初始化,以便对上述任一检查点进行下一次的监测。

守护进程可以针对每个第二类检查点设置一第二计时器,第二计时器的初始值为零。守护进程接收到上述任一检查点的ID时,如果上述任一检查点的ID表征上述任一检查点属于第二类检查点,如果上述任一检查点属于源检查点,则触发第二计时器开始计时,以便获得上述任一检查点与对应的目标检查点(此时,目标检查点为与源检查点对应的目的检查点)之间的上报关系,如果上述任一检查点属于已上报的源检查点对应的目的检查点,则将第二计时器的计时结果确定为上述任一检查点与对应的目标检查点(此时,目标检查点为与目的检查点对应的已上报的源检查点)之间的上报关系。也就是说,如果上述任一检查点属于源检查点,则上述任一检查点对应的目标检查点就是源检查点对应的目的检查点;如果上述任一检查点属于目的检查点,则上述任一检查点对应的目标检查点就是目的检查点对应的源检查点。比如,假设检查点ID2-1为程序片段A的起始位置的检查点的ID,检查点ID2-2为程序片段A的结束位置的检查点ID,则ID2-1表征的第二类检查点为源检查点,ID2-2表征的第二类检查点为目的检查点。当接收到目标应用程序上报的ID2-1时,ID2-1表征的第二类检查点对应的目标检查点为ID2-2表征的第二类检查点;同理,当接收到目标应用程序上报的ID2-2时,ID2-2表征的第二类检查点对应的目标检查点为ID2-1表征的第二类检查点。

守护进程接收到上述任一检查点的ID时,如果上述任一检查点的ID表征上述任一检查点属于第三类检查点,则上述任一检查点对应的目标检查点为以上述任一检查点为目的检查点的第三类检查点。其中,如果上述任一检查点为初始检查点,则上述任一检查点对应的目标检查点为空,也就是说,初始检查点应该是目标应用程序上报的第一个第三类检查点。

可选的,上述任一检查点与对应的目标检查点之间的上报关系可以包括如下至少一项:

上述任一检查点与目标检查点之间的上报时间间隔;

上述任一检查点与目标检查点之间的上报时序,即上述任一检查点与目标检查点上报的先后顺序。

步骤S103:根据目标应用程序上报的各个检查点对应的上报关系和/或上报次数,确定目标应用程序的状态。

本发明实施例中,为目标应用程序配置了多种状态,可以包括但不限于以下几种:正常(OK)状态、未激活(DEACTIVATED)状态(表示目标应用程序还未开启检测功能)、失败(EXPIRED)状态(表示目标应用程序出现了不可恢复的问题)、错误(FAILED)状态(表示目标应用程序出现的问题可能是偶发性问题,后续可能不会再出现这个问题)、停止(STOPPED)状态。

本发明实施例是根据目标应用程序上报的各个检查点对应的上报关系和/或上报次数,确定目标应用程序的状态属于上述几种状态中的哪种状态。

目标应用程序上报的各个检查点对应的上报关系的不同和/或上报次数的不同,可能会导致目标应用程序的状态不同。

步骤S104:若目标应用程序的状态为目标状态,确定目标应用程序出现故障。

本发明实施例中,目标应用程序的几种状态中哪种状态作为目标状态是可配置的。

可选的,当目标应用程序的状态为停止状态(即将停止状态作为目标状态)时,确定目标应用程序出现故障。

可选的,当目标应用程序的状态为失败状态(即将失败状态作为目标状态)时,确定目标应用程序出现故障。

本发明实施例提供的故障检测方法,在目标应用程序中设置若干检查点,由目标应用程序在运行过程中上报检查点,根据目标应用程序上报的各个检查点对应的上报关系和/或上报次数确定目标应用程序的状态,当目标应用程序的状态为目标状态时,确定目标应用程序故障,实现了对应用程序的执行过程是否出现错误的实时监测,保证能够即时发现故障,进而可以及时对故障进行处理。

在一可选的实施例中,目标应用程序通常包括多个子模块,每个子模块为目标应用程序的一部分。基于此,上述根据目标应用程序上报的各个检查点对应的上报关系和/或上报次数,确定目标应用程序的状态的一种实现流程图如图2所示,可以包括:

步骤S201:根据同一子模块的各个检查点对应的上报关系和/或上报次数,确定同一子模块的状态。

本发明针对每个子模块分别设置若干检查点,每个子模块中设置有上述三类检查点中的至少一类检查点。

本发明还为子模块配置了多种状态,子模块对应的状态可以包括但不限于:正常(OK)状态、未激活(DEACTIVATED)状态(表示子模块还未开启检测功能)、失败(EXPIRED)状态(表示子模块出现了不可恢复的问题)、错误(FAILED)状态(表示子模块出现的问题可能是偶发性问题,后续可能不会再出现这个问题)。

本发明根据同一子模块的各个检查点对应的上报关系和/或上报次数,确定同一子模块的状态属于上述几种状态中的哪种状态。

目标应用程序上报的同一子模块的各个检查点对应的上报关系的不同和/或上报次数的不同,可能会导致同一子模块的状态不同。

步骤S202:根据目标应用程序中的各个子模块的状态确定目标应用程序的状态。

目标应用程序中的子模块的不同状态,可能会导致目标应用程序的状态的不同。

在一可选的实施例中,上述根据同一子模块的各个检查点对应的上报关系和/或上报次数,确定同一子模块的状态的一种实现方式可以为:

如果上述任一检查点属于第一类检查点,根据预期报告次数,以及上述任一检查点在预设时长内的上报次数,确定上述任一检查点对应的周期检测结果。该周期检测结果为正确或错误,其中,正确表示上述任一检查点在预设时长内的上报次数是正确的,错误表示上述任一检查点在预设时长内的上报次数是不正确的。也就是说,该周期检测结果表征上述任一检查点在预设时长内的上报次数是否正确。

可选的,如果上述任一检查点在预设时长内的上报次数在目标范围内,确定上述任一检查点在预设时长内的上报次数正确,否则,确定上述任一检查点在预设时长内的上报次数不正确。其中,目标范围为:[预期报告次数-容差下限,预期报告次数+容差上限],容差上限和容差下限均大于或等于零,容差上限和容差下限可以相等,也可以不等。也就是说,如果上述任一检查点在预设时长内的上报次数大于或等于预期报告次数与容差下限的差值,且上述任一检查点在预设时长内的上报次数小于或等于预期报告次数与容差上限的和值,确定上述任一检查点在预设时长内的上报次数正确(即周期检测结果为正确),否则,确定上述任一检查点在预设时长内的上报次数不正确(即周期检测结果为错误)。

如果上述任一检查点属于第二类检查点,根据目标时间间隔,以及上述任一检查点与上述目标检查点之间的上报时间间隔,确定上述任一检查点对应的执行时间检测结果。该执行时间检测结果为正确或错误,其中,正确表示位于上述任一检查点和上述目标检查节点之间的程序片段的执行时间是正确的,错误表示位于上述任一检查点和上述目标检查节点之间的程序片段的执行时间是不正确的。也就是说,该执行时间检测结果表征位于上述任一检查点和上述目标检查节点之间的程序的执行时间是否正确。

可选的,目标时间间隔包括时间间隔下限和时间间隔上限,如果上述任一检查点与上述目标检查点之间的上报时间间隔大于或等于时间间隔下限,且上述任一检查点与上述目标检查点之间的上报时间间隔小于或等于时间间隔上限,确定位于上述任一检查点和上述目标检查节点之间的程序的执行时间是正确的(即执行时间检测结果为正确),否则确定位于上述任一检查点和上述目标检查节点之间的程序的执行时间是不正确的(即执行时间检测结果为错误)。进一步的,如果上述任一检查点是所述目标应用程序连续第二次上报的检查点,即,目标应用程序连续两次上报同一第二类检查点,确定上述任一检查点对应的执行时间检测结果为不正确(即执行时间检测结果为错误)。进一步的,如果上述任一检查点属于源检查点,且在经历上述时间间隔上限时仍未接收到上述任一检查点对应的目的检查点,确定经历上述时间间隔上限时的执行时间检测结果为不正确(即执行时间检测结果为错误)。

如果上述任一检查点属于第三类检查点,根据预设的检查点之间的目标上报时序,以及上述任一检查点与目标检查点之间的上报时序,确定上述任一检查点对应的逻辑检测结果。该逻辑检测结果为正确或错误,其中,正确表示上述任一检查点与目标检查节点之间的上报时序是正确的,错误表示上述任一检查点与目标检查节点之间的上报时序是不正确的。也就是说,该逻辑检测结果表征上述任一检查点与目标检查节点之间的上报时序是否正确。

可选的,如果上述任一检查点与目标检查点之间的上报时序为预设的上述任一检查点与目标检查点之间的目标上报时序,确定上述任一检查点与目标检查节点之间的上报时序正确(即逻辑检测结果为正确),否则,确定上述任一检查点与目标检查节点之间的上报时序不正确(即逻辑检测结果为错误)。

如图3所示,为本发明实施例提供的某个子模块中多个检查点之间的目标上报时序的示例图。该示例中,第一检查点表示初始检查点,即子模块的入口点,第七检查点表示结束检查点,即子模块的结束点;其它由箭头连接的两个检查点表示这两个检查点之间存在跳转关系,即子模块的程序执行过程中的时序关系,箭头起始点表示源检查点,箭头终点表示目的检查点。基于此,目标应用程序每报告一次上述某个子模块的一个检查点,基于图3所示的上报时序图进行一次逻辑检测。

具体的,如果目标应用程序从来没有报告过上述某个子模块的任一检查点,那么目标应用程序上报的上述某个子模块的第一个检查点必须是初始检查点,即第一检查点,若目标应用程序上报上述某个子模块的第一个检查点不是第一检查点,则目标应用程序上报的上述某个子模块的第一个检查点对应的逻辑检测结果为错误,即目标应用程序上报的上述某个子模块的第一个检查点与目标检查节点之间的上报时序是不正确,若目标应用程序上报上述某个子模块的第一个检查点是第一检查点,则目标应用程序上报的上述某个子模块的第一个检查点对应的逻辑检测结果为正确,即目标应用程序上报的上述某个子模块的第一个检查点与目标检查节点之间的上报时序是正确的。当目标应用程序上报了上述某个子模块的第一检查点后,接下来目标应用程序上报的上述某个子模块的每个检查点都必须是上一个源检查点的目的检查点,例如,上一个源检查点是第三检查点,那么,接下来目标应用程序上报的上述某个子模块的检查点必须是第四检查点或第五检查点,若上报的检点的顺序不对,则逻辑检测结果为不正确,否则,逻辑检测结果为正确。当目标应用应用程序报告了第七检查点之后,如果目标应用应用程序上报的第七检查点的检测结果为正确,则认为上述某个子模块的此次逻辑检测结束,接下来目标应用程序再次上报上述某个子模块的检查点时,必须是第一检查点,否则上报的检查点对应的逻辑检测结果为错误。

根据同一子模块的各个检查点对应的检测结果,以及预置的第一状态机,确定同一子模块的状态。也就是说,根据同一子模块中的第一类检查点对应的周期检查结果,第二类检查点对应的时间范围检测结果,第三类检查点对应的逻辑检测结果,以及预置的第一状态机,确定同一子模块的状态。

目标应用程序每报告一次检查点,确定该检查点对应的检测结果,结合上述同一子模块的已上报的其它检查点的对应的检测结果,参考第一状态机来确定同一子模块的状态。其中,目标应用程序每报告一次检查点,如果该检查点是第一类检查点,且第一类检查点对应的计时时长还未达到预设时长,则该检查点对应的检测结果为上一次第一类检查点对应的计时时长达到预设时长时确定的检测结果,否则,该检查点对应的检测结果为根据当前的上报结果确定的检测结果。

如图4所示,为本发明实施例提供的第一状态机的一种示例图。由于第一状态机仅用于子模块的状态的判断,因此,第一状态机也可以称之为局部状态机,子模块的各个状态可以称之为局部状态。图4中,箭头上的编号可以称为路径编号,箭头的起始点表示源状态,箭头终点表示目的状态,每个箭头上的编号表征从箭头连接的源状态到目的状态的转换条件。每个箭头及其连接的源状态和目的状态构成一条转换路径。第一状态机配置了子模块的各个状态之间的转换路径和转换条件。

可选的,本发明针对周期检测算法配置了参数“周期检测失败容差(该周期检测失败容差可以是系统默认值,也可以用户是根据实际需要设置的)”,以及第二计数器(初始值为零,用于进行错误计数),用于决定子模块的状态的转换路径。由于是对目标应用程序实时进行故障检测,因此,如果当前时刻已上报的任一第一类检查点的周期检测结果是错误,则第二计数器的错误计数加1,若当前时刻已上报的所有第一类检查点的周期检测结果都是正确,则错误计数减1,当错误计数大于上述周期检测失败容差时,将子模块的状态切换至失败状态。基于此,图4中各个路径编号对应的转换条件如表1所示:

表1

需要说明的是,由于各个检查点的检测结果是不断更新的,因此,表1中的一个周期检测结果对应已上报的一个第一类检查点,且每个周期检测结果都是该检测结果对应的第一类检查点的最新的周期检测结果;一个时间范围检测结果对应已上报的一个第二类检查点,且每个时间范围检测结果都是该时间范围检测结果对应的第二类检查点的最新的时间范围检测结果;一个逻辑检测结果对应已上报的一个第三类检查点,且每个逻辑检测结果是该逻辑检测结果对应的第三类检查点的最新的逻辑检测结果。

可选的,可以将第一状态机中以同一子模块的当前状态作为源状态的转换路径确定为候选转换路径;根据同一子模块中各个检查点的检测结果,在各个候选转换路径对应的转换条件中,查找同一子模块中各个检查点的检测结果所满足的第三目标转换条件;将同一子模块的状态更新为第三目标转换条件对应的候选转换路径的目的状态。

比如,假设某个子模块Mode的当前状态为正常,则以表1为例,以当前状态作为源状态的转换路径包括四个,分别为:正常-正常,正常-失败,正常-错误,正常-未激活。如果第三目标转换条件为编号3表征的转换条件,则将子模块Mode的状态更新为转换路径“正常-错误”的目的状态,即将子模块Mode的状态更新为错误;如果第三目标转换条件为编号1表征的转换条件,则将子模块Mode的状态更新为转换路径“正常-正常”的目的状态,即将子模块Mode的状态维持正常。

在一可选的实施例中,上述根据目标应用程序中的各个子模块的状态确定目标应用程序的状态的一种实现方式可以为:

根据目标应用程序中的各个子模块的状态,以及预置的第二状态机,确定目标应用程序的状态。

第二状态机也可以称为全局状态机,目标应用程序的各个状态也可以称为全局状态。

根据目标应用程序中的各个子模块的状态确定目标应用程序的状态的过程可以周期性执行,即每过指定时长,根据目标应用程序中的各个子模块的状态确定一次目标应用程序的状态。目标应用程序的状态确定周期(即指定时长)可以是默认值,也可以是用户根据实际需要设定的。

除了状态确定周期,还可以设置参数“失效容差”(可以是默认值,也可以是用户根据实际需要设定的)和第三计数器(初始值为零,用于延迟计数),主要用于延迟从失败状态到停止状态的时间,延迟时间可以以状态确定周期为单位。具体的,当目标应用程序的状态由非失败状态变为失败状态时,第三计数器加1,在目标应用程序的状态为失败状态的情况下,每经过一个状态确定周期,第三计数器加1,当第三计数器的计数结果大于失效容差时,目标应用程序的状态从失败状态切换为停止状态。

如图5所示,为本发明实施例提供的第二状态机的一种示例图。其中,箭头上的编号可以称为路径编号,箭头的起始点表示源状态,箭头终点表示目的状态,每个箭头上的编号表征从箭头连接的源状态到目的状态的转换条件。每个箭头及其连接的源状态和目的状态构成一条转换路径。第二状态机中配置了目标应用程序的各个状态之间的转换路径和转换条件。或者,第二状态机中配置了电子控制单元的各个状态之间的转换路径和转换条件。图5中各个路径编号对应的转换条件如表2所示:

表2

需要说明的是,由于各个子模块的状态是不断更新的,因此,表2中的局部状态均是指最新的局部状态。

可选的,可以将第二状态机中以目标应用程序的当前状态作为源状态的转换路径确定为候选转换路径;根据目标应用程序中的各个子模块的状态,在各个候选转换路径对应的转换条件中,查找各个子模块的状态满足的第一目标转换条件;将目标应用程序的状态更新为第一目标转换条件对应的候选转换路径的目的状态。

比如,假设目标应用程序的当前状态为错误,则以表2为例,以当前状态作为源状态的转换路径包括五个,分别为:错误-错误,错误-失败,错误-正常,错误-停止,错误-未激活。如果第一目标转换条件为编号6表征的转换条件,则将目标应用程序的状态更新为转换路径“错误-正常”的目的状态,即将目标应用程序的状态更新为正常;如果第一目标转换条件为编号7表征的转换条件,则将目标应用程序的状态更新为转换路径“错误-失败”的目的状态,即将目标应用程序的状态更新为失败。

通常,目标应用程序所属的电子控制单元会包括多个应用程序,每个应用程序包括多个子模块。本发明实施例提供的故障检测方法还可以包括:

根据目标应用程序所属的电子控制单元中的各个应用程序包含的各个子模块的状态,以及上述第二状态机,确定电子控制单元的状态。

可选的,可以将第二状态机中以电子控制单元的当前状态作为源状态的转换路径确定为候选转换路径;根据电子控制单元中的各个应用程序包含的各个子模块的状态,在各个候选转换路径对应的转换条件中,查找电子控制单元中的各个子模块的状态满足的第二目标转换条件;将电子控制单元的状态更新为第二目标转换条件对应的候选转换路径的目的状态。

比如,假设电子控制单元的当前状态为失败,则以表2为例,以当前状态作为源状态的转换路径包括三个,分别为:失败-失败,失败-停止,失败-未激活。如果第二目标转换条件为编号9表征的转换条件,则将电子控制单元的状态更新为转换路径“失败-失败”的目的状态,即电子控制单元的状态维持为失败;如果第二目标转换条件为编号10表征的转换条件,则将电子控制单元的状态更新为转换路径“失败-停止”的目的状态,即将电子控制单元的状态更新为停止。

进一步的,在确定目标应用程序出现故障后,还可以对目标应用程序执行恢复操作,以避免目标应用程序出现故障继续运行而造成的危害和损失。

具体如何恢复可以由用户自定义,即根据实际需求进行开发。作为示例,恢复操作可以包括但不限于:重启目标应用程序。

进一步的,在确定电子控制单元出现故障后,还可以对电子控制单元执行恢复操作,以避免电子控制单元出现故障继续运行而造成的危害和损失。

具体如何恢复可以由用户自定义,即根据实际需求进行开发。作为示例,恢复操作可以包括但不限于:重启电子控制单元。

与方法实施例相对应,本发明实施例还提供一种故障检测装置,本发明实施例提供的故障检测装置的一种结构示意图如图6所示,可以包括:

第一获得模块601,第二获得模块602,第一确定模块603和第二确定模块604;其中,

第一获得模块601用于获得目标应用程序运行过程中上报的检查点ID;所述目标应用程序中设置有多个检查点,所述目标应用程序在运行到任一检查点所在位置时上报所述任一检查点的ID;

第二获得模块602用于基于所述任一检查点的ID,获得所述任一检查点对应的上报关系和/或上报次数;其中,所述上报关系包括所述任一检查点与对应的目标检查点之间的上报时间间隔,和/或,所述任一检查点与所述目标检查点之间的上报时序,所述上报次数为所述任一检查点在预设时长内的上报次数;

第一确定模块603用于根据所述目标应用程序上报的各个检查点对应的上报关系和/或上报次数,确定所述目标应用程序的状态;

第二确定模块604用于若所述目标应用程序的状态为目标状态,确定所述目标应用程序出现故障;所述目标状态为停止状态或失败状态。

本发明实施例提供的故障检测装置,在目标应用程序中设置若干检查点,由目标应用程序在运行过程中上报检查点,根据目标应用程序上报的各个检查点对应的上报关系和/或上报次数确定目标应用程序的状态,当目标应用程序的状态为目标状态时,确定目标应用程序故障,实现了对应用程序的执行过程是否出现错误的实时监测,保证能够即时发现故障,进而可以及时对故障进行处理。

在一可选的实施例中,所述目标应用程序包括多个子模块;所述第一确定模块603用于:

根据同一子模块的各个检查点对应的上报关系和/或上报次数,确定所述同一子模块的状态;

根据所述目标应用程序中的各个子模块的状态确定所述目标应用程序的状态。

在一可选的实施例中,所述第一确定模块603根据同一子模块的各个检查点对应的上报关系和/或上报次数,确定所述同一子模块的状态时,用于:

如果所述任一检查点属于第一类检查点,若所述任一检查点在所述预设时长内的上报次数在目标范围内,确定所述任一检查点对应的周期检测结果为正确,否则确定所述周期检测结果为不正确;所述目标范围的下限为预期报告次数与容差下限的差值,所述目标范围的上限为所述预期报告次数与容差上限的和值;

如果所述任一检查点属于第二类检查点,若所述任一检查点与所述目标检查点之间的上报时间间隔大于或等于时间间隔下限,且小于或等于时间间隔上限,确定所述任一检查点对应的执行时间检测结果为正确,否则确定所述执行时间检测结果为不正确;

如果所述任一检查点属于第三类检查点,若所述任一检查点与所述目标检查点之间的上报时序为预设的所述任一检查点与所述目标检查点之间的目标上报时序,确定所述任一检查点对应的逻辑检测结果为正确,否则确定所述逻辑检测结果为不正确;

根据所述同一子模块的各个检查点对应的检测结果,以及预置的第一状态机,确定所述同一子模块的状态。

在一可选的实施例中,所述第一确定模块603还用于:

如果所述任一检查点是所述目标应用程序连续第二次上报的检查点,确定所述任一检查点对应的执行时间检测结果为不正确;

如果所述任一检查点属于源检查点,若在经历所述时间间隔上限时仍未接收到所述任一检查点对应的目的检查点,确定经历所述时间间隔上限时的执行时间检测结果为不正确。

在一可选的实施例中,所述第一状态机包括如下几种状态:

正常状态、未激活状态、失败状态、错误状态。

在一可选的实施例中,所述第一确定模块603根据所述目标应用程序中的各个子模块的状态确定所述目标应用程序的状态时,用于:

将第二状态机中以所述目标应用程序的当前状态作为源状态的转换路径确定为候选转换路径;

根据所述目标应用程序中的各个子模块的状态,在各个候选转换路径对应的转换条件中,查找所述各个子模块的状态满足的第一目标转换条件;

将所述目标应用程序的状态更新为所述第一目标转换条件对应的候选转换路径的目的状态;

所述第二状态机中配置了所述目标应用程序的各个状态之间的转换路径和转换条件。

在一可选的实施例中,所述第二状态机包括如下几种状态:

正常状态、未激活状态、失败状态、错误状态、停止状态;

其中,当所述目标应用程序处于停止状态或失败状态时,确定所述目标应用程序故障。

在一可选的实施例中,所述目标应用程序所属的电子控制单元包括多个应用程序,每个应用程序包括多个子模块;所述故障检测装置还包括第三确定模块,用于:

将第二状态机中以所述电子控制单元的当前状态作为源状态的转换路径确定为候选转换路径;

根据所述电子控制单元中的各个应用程序包含的各子模块的状态,在各个候选转换路径对应的转换条件中,查找所述各个应用程序包含的各子模块的状态满足的第二目标转换条件;

将所述电子控制单元的状态更新为所述第二目标转换条件对应的候选转换路径的目的状态;

所述第二状态机中配置了所述电子控制单元的各个状态之间的转换路径和转换条件。

在一可选的实施例中,所述故障检测装置还包括:

恢复模块,用于在确定所述目标应用程序出现故障后,对所述目标应用程序执行恢复操作。

所述恢复模块还可以用于:在确定所述目标应用程序所属的电子控制单元出现故障后,对电子控制单元执行恢复操作。

本发明实施例提供的故障检测装置可应用电子设备中。可选的,图7示出了电子设备的硬件结构框图,参照图7,电子设备的硬件结构可以包括:至少一个处理器1,至少一个通信接口2,至少一个存储器3和至少一个通信总线4;

在本发明实施例中,处理器1、通信接口2、存储器3、通信总线4的数量为至少一个,且处理器1、通信接口2、存储器3通过通信总线4完成相互间的通信;

处理器1可能是一个中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路等;

存储器3可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatilememory)等,例如至少一个磁盘存储器;

其中,存储器存储有程序,处理器可调用存储器存储的程序,所述程序用于:

获得目标应用程序运行过程中上报的检查点ID;所述目标应用程序中设置有多个检查点,所述目标应用程序在运行到任一检查点所在位置时上报所述任一检查点的ID;

基于所述任一检查点的ID,获得所述任一检查点对应的上报关系和/或上报次数;其中,所述上报关系包括所述任一检查点与对应的目标检查点之间的上报时间间隔,和/或,所述任一检查点与所述目标检查点之间的上报时序,所述上报次数为所述任一检查点在预设时长内的上报次数;

根据所述目标应用程序上报的各个检查点对应的上报关系和/或上报次数,确定所述目标应用程序的状态;

若所述目标应用程序的状态为目标状态,确定所述目标应用程序出现故障;所述目标状态为停止状态或失败状态。

可选的,所述程序的细化功能和扩展功能可参照上文描述。

本发明实施例还提供一种存储介质,该存储介质可存储有适于处理器执行的程序,所述程序用于:

获得目标应用程序运行过程中上报的检查点ID;所述目标应用程序中设置有多个检查点,所述目标应用程序在运行到任一检查点所在位置时上报所述任一检查点的ID;

基于所述任一检查点的ID,获得所述任一检查点对应的上报关系和/或上报次数;其中,所述上报关系包括所述任一检查点与对应的目标检查点之间的上报时间间隔,和/或,所述任一检查点与所述目标检查点之间的上报时序,所述上报次数为所述任一检查点在预设时长内的上报次数;

根据所述目标应用程序上报的各个检查点对应的上报关系和/或上报次数,确定所述目标应用程序的状态;

若所述目标应用程序的状态为目标状态,确定所述目标应用程序出现故障;所述目标状态为停止状态或失败状态。

可选的,所述程序的细化功能和扩展功能可参照上文描述。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

在本发明所提供的几个实施例中,应该理解到,所揭露的系统(若存在)、装置和方法,可以通过其它的方式实现。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

应当理解,本发明实施例中,从权、各个实施例、特征可以互相组合结合,都能实现解决前述技术问题。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

技术分类

06120115919928