Main Content

本页采用了机器翻译。点击此处可查看英文原文。

死逻辑检测

在仿真模型之前,使用死逻辑检测来分析模型中的死逻辑。在Simulink® Design Verifier™中,死逻辑的设计错误检测包含两个分析选项:

  • 死逻辑(部分):如果您选择此选项,Simulink Design Verifier 将分析您的模型而不进行任何近似,例如浮点的有理近似或 while 循环近似。有关更多信息,请参阅 近似值在模型分析中的作用 。使用此选项,Simulink Design Verifier不会报告活动逻辑或未确定的目标,并且可能无法识别模型中的一些死逻辑。

    此选项适用于:

  • 运行详尽的分析:使用此选项,Simulink Design Verifier 除了报告死逻辑外,还会报告活动逻辑以及未确定的目标。在某些情况下,此选项可能会识别或找到额外的死逻辑。分析可能使用近似值并进行相应报告。

    该选项在“配置参数”对话框的Design Verifier > 设计错误检测窗格中可用。

运行死逻辑部分检查

如果您没有使用 Model Advisor,要检测死逻辑:

  1. Design Verifier 选项卡的 模式 部分中,选择 设计错误检测

  2. 点击 Error Detection Settings

  3. 在配置参数对话框中,在Design Verifier > 设计错误检测窗格上:

    1. 启用 死逻辑(部分) 选项。

    2. 如果选择了 运行详尽分析 选项,请清除该选项。

    3. 要分析的覆盖目标 设置为 MCDC 。下拉菜单中可用的选项有 决策条件决策MCDC

  4. 要应用这些设置,点击OK并关闭配置参数窗口。

  5. 点击 检测设计错误

对死逻辑进行详尽分析

  1. Design Verifier 选项卡的 模式 部分中,选择 设计错误检测

  2. 点击 Error Detection Settings

  3. 在配置参数对话框中,在Design Verifier > 设计错误检测窗格上:

    1. 启用 死逻辑(部分) 选项。

    2. 如果选择了 运行详尽分析 选项,请清除该选项。

    3. 要分析的覆盖目标 设置为 MCDC 。下拉菜单中可用的选项有 决策条件决策MCDC

  4. 要应用这些设置,点击“OK”并关闭“配置参数”对话框。

  5. 点击 检测设计错误

运行死逻辑分析并查看结果

此示例显示如何检测sldvSlicerdemo_dead_logic示例模型中的死逻辑。死逻辑检测可以发现模型中无法达到的目标,从而导致模型元素保持非活动。

  1. 打开sldvSlicerdemo_dead_logic模型。

    openExample('slcheck/AnalyzeTheDeadLogicExample',...
    'supportingFile','sldvSlicerdemo_dead_logic');
  2. Design Verifier 选项卡的 模式 部分中,选择 设计错误检测

  3. 点击 Error Detection Settings

  4. 在配置参数对话框中,在Design Verifier > 设计错误检测窗格上:

    1. 启用 死逻辑(部分) 选项。

    2. 如果选择了 运行详尽分析 选项,请清除该选项。

    3. 要分析的覆盖目标 设置为 MCDC 。下拉菜单中可用的选项有 决策条件决策MCDC

  5. 点击 检测设计错误

    该软件分析模型中的死逻辑并在结果摘要窗口中显示结果。结果表明,32目标中的10被发现是死逻辑。

    Results summary window that shows design error detection analysis results.

  6. 点击 在模型上突出显示分析结果 。死逻辑模型元素以红色突出显示。

  7. 打开Controller subsystem,然后点击以红色突出显示的OR模块。结果检查器显示死逻辑的摘要。

    set输入等于1,所以ORinput port 1模块只能为 true。该状态暗示 input port 1 错误条件是一个死逻辑。类似地,input port 2unreachable,因为目标从未执行并且是死逻辑。

    Results for OR block in the Result Inspector showing dead logic.

  8. 要查看详细的分析报告,请在“结果摘要”窗口中点击“HTML”。

    该报告显示模型中所有死逻辑结果的摘要。

    死逻辑

    Report for dead logic in the model that shows the type of objective, model item, and description.

    软件将详细的分析结果存储在管理 Simulink Design Verifier 数据文件中的DeadLogic field中。您可以使用数据文件进一步分析结果。

建议:

您可以按照以下步骤使用 Model Slicer 来查找可能对特定模块产生影响的参数:

a.使用 Model Slicer 创建 SLSlicerAPI.ParameterDependence 对象。

slicerObj = slslicer('sldvSlicerdemo_dead_logic');
pd = slicerObj.parameterDependence;

b.找到影响离散时间积分器模块的参数。

param = parametersAffectingBlock(pd, 'sldvSlicerdemo_dead_logic/Controller/PI Controller/Discrete-Time Integrator');

上图显示了函数 parametersAffectingBlock 返回的参数,这些参数对 Discrete-Time Integrator模块有影响。函数返回的参数可以考虑进行调整。

c.执行清理以退出模型的编译状态。

slicerObj.terminate;

相关主题