主要内容

利用诊断故障注入模拟和验证AUTOSAR组件行为

这个例子展示了如何模拟和验证在Simulink®中建模的AUTOSAR组件的行为,这些组件包含对AUTOSAR诊断事件管理器(Dem)的调用。您可以通过覆盖特定事件的诊断状态来获得快速测试覆盖率,或者通过注入瞬时事件故障来验证组件恢复。

覆盖AUTOSAR诊断状态以获得覆盖

组件模型经常调用AUTOSAR诊断事件管理器(Dem),将局部错误传达给系统的其余部分。它们还可以通过调用getEventStatus来查询其他系统的诊断状态。

为了演示如何通过覆盖事件状态来模拟和验证行为,给出了一个油门位置监视器组件示例。该组件包含对Diagnostic Event Manager的四个调用,用于查询四个特定事件是否在上一次评估中失败。这些事件的状态决定了主要和次要传感器输入是否可以传递到系统的其余部分。如果两个传感器都报告了事件故障,那么一个默认值将作为传感器输入传递,setEventStatus调用将向系统报告一般故障。

截图来自2021年11月12日13月52日23.png

为了验证该组件是否按设计的方式工作,下面显示了一个能够执行该模型分支的测试工具模型。在测试工具中,值1和2区分两个传感器输入,诊断服务组件块为对GetEventFailed和SetEventStatus的调用提供模拟。然后添加Dem状态覆盖块,以覆盖每个事件的UDS状态字节的Test Failed位。

open_system (“autosar_bsw_override_test”);

截图来自2018-11-12 2015-12-45 .png

要更直观地了解测试工具中示例组件的测试条件和覆盖率,可以从Apps库中使用覆盖分析仪应用程序。

截图来自2021年11月12日13月54日26.png

下面的视图显示了移除Dem Status Override块时组件模型的测试覆盖率。假设GetEventFailed调用在没有外部输入的情况下返回false,您无法在组件中的Switch块上实现完全的决策覆盖。

截图来自2018-11-12 2015-29-06.png

当在利用中使用Dem Status Override块时,您就能够获得组件的完全覆盖。

截图来自2021年11月12日15月29日54.png

这个例子展示了如何通过使用Dem Status Override块获得测试覆盖率。虽然这个特定的示例的范围很窄,并且主要关注Test Failed位,但是您可以使用Dem Status Override块配置统一诊断服务(UDS)状态字节的每个位,以创建任何组合。

DemStatusDialog.png

通常,您可以使用Dem Status Override块手动覆盖UDS状态字节的位,或者让位独立模拟。如果您选择对话框配置一个位,你就可以覆盖那个位的状态。状态位对于setEventStatus调用的变化以及事件可用性和操作周期变化的影响是健壮的。此外,功能抑制(Function Inhibition, FiM)等下游服务会相应地响应被覆盖的状态。如果您选择输入端口,您允许某些状态位根据连接的输入信号更新,其中值大于零的位打开。此功能允许组件覆盖状态的某些位,同时允许其他位继续独立模拟。

注入瞬态事件以验证组件恢复

在AUTOSAR中,经常有组件管理系统也负责监视它们自己的状态。在这样的系统中,能够测试这样的组件是否可以从故障中恢复到可以再次报告成功的程度是很有用的。对于这种类型的测试,上例中使用的Dem Status Override块不适合,因为它阻止被测试组件再次报告成功的状态。相反,可以使用一个Dem Status Inject块来创建这种类型的测试条件。

为了演示如何注入一个瞬态事件来验证组件恢复,给出了一个再生粒子滤波器的示例组件。在这个组件中,过滤器的状态存储在Delay块的状态中。在模拟过程中,滤波器在20-80%的名义利用率范围内增量增加。这种使用情况将被监视并报告给诊断服务。并给出了一种具有代表性的再生模式。当再生被启用时,过滤器的利用率迅速下降。

DemInjectFilter.png

在这个组件中,诊断服务测试失败位也会被查询。当检测到上升边缘时,表明过滤器已达到其阈值利用率,组件通过设置isRegenerating数据存储真正的

DemInjectMonitor.png

为了验证该组件的自我恢复,创建了所示的测试束模型。具体来说,您希望验证过滤器是否保持在利用率的名义范围内,并且在发生诊断事件时,它是否正确地进入和退出再生周期。当组件进行模拟时,预期它会根据需要触发自己的诊断事件,在再生周期和名义使用周期之间不断交替。您还需要测试组件是否能够在从运行时环境(RTE)接收到诊断事件时触发再生周期。

测试线束显示组件过滤器的利用率,仪表显示其仪表盘。诊断服务组件块为对诊断事件管理器的调用提供模拟。当线束模拟组件模型时,仪表显示过滤器逐渐增加到80%,然后快速降低到20%,因为过滤器是再生的,然后重复循环。

要验证再生可以由RTE提供的诊断事件触发,您可以使用Dem状态注入块。已指定要使用的块EventId 1,它与诊断服务组件中定义的组件中的客户机端口相匹配。故障类型已设置为事件失败设置测试失败当事件被注入时,位为true。在测试工具模型中,可以通过使用仪表板按钮来触发故障注入。或者,您可以通过为自动化测试配置提供输入信号源来提供此故障。测试束可以模拟组件,以显示其对故障注入的响应。您可以通过使用仪表板按钮看到何时注入了故障,因为您可以看到仪表下降,即使它没有达到上阈值,以显示组件模型已进入再生周期。此示例模型被配置为无限期运行,因此您必须单击停止结束模拟。

open_system (“autosar_bsw_inject_test”);

DemInjectModel.png

这个例子展示了如何使用Dem Status Inject块测试组件恢复。虽然这个特定的示例的范围很窄,并且主要关注Test Failed位,但是您可以使用Dem Status Inject块配置统一诊断服务(UDS)状态字节的每个位,以创建任何组合。

DemInjectDialog.png

通常,您可以使用Dem Status Inject块手动覆盖UDS状态字节的位。然后,该块与模型中的其他块一起模拟并更新其状态,以显示恢复。下游服务,如功能抑制(FiM),在整个模拟过程中相应地响应此状态。

另请参阅

|

相关的例子

更多关于

Baidu
map