死逻辑检测
在仿真模型之前,使用死逻辑检测来分析模型中的死逻辑。在Simulink® Design Verifier™中,死逻辑的设计错误检测包含两个分析选项:
死逻辑(部分):如果您选择此选项,Simulink Design Verifier 将分析您的模型而不进行任何近似,例如浮点的有理近似或 while 循环近似。有关更多信息,请参阅 近似值在模型分析中的作用 。使用此选项,Simulink Design Verifier不会报告活动逻辑或未确定的目标,并且可能无法识别模型中的一些死逻辑。
此选项适用于:
模型顾问。参见 使用模型顾问检查设计错误 。
配置参数对话框,位于Design Verifier > 设计错误检测窗格。
运行详尽的分析:使用此选项,Simulink Design Verifier 除了报告死逻辑外,还会报告活动逻辑以及未确定的目标。在某些情况下,此选项可能会识别或找到额外的死逻辑。分析可能使用近似值并进行相应报告。
该选项在“配置参数”对话框的Design Verifier > 设计错误检测窗格中可用。
运行死逻辑部分检查
如果您没有使用 Model Advisor,要检测死逻辑:
在 Design Verifier 选项卡的 模式 部分中,选择 设计错误检测 。
点击 Error Detection Settings 。
在配置参数对话框中,在Design Verifier > 设计错误检测窗格上:
要应用这些设置,点击OK并关闭配置参数窗口。
点击 检测设计错误 。
对死逻辑进行详尽分析
运行死逻辑分析并查看结果
此示例显示如何检测sldvSlicerdemo_dead_logic
示例模型中的死逻辑。死逻辑检测可以发现模型中无法达到的目标,从而导致模型元素保持非活动。
打开
sldvSlicerdemo_dead_logic
模型。openExample('slcheck/AnalyzeTheDeadLogicExample',... 'supportingFile','sldvSlicerdemo_dead_logic');
在 Design Verifier 选项卡的 模式 部分中,选择 设计错误检测 。
点击 Error Detection Settings 。
在配置参数对话框中,在Design Verifier > 设计错误检测窗格上:
点击 检测设计错误 。
该软件分析模型中的死逻辑并在结果摘要窗口中显示结果。结果表明,
32
目标中的10
被发现是死逻辑。点击 在模型上突出显示分析结果 。死逻辑模型元素以红色突出显示。
打开
Controller
subsystem,然后点击以红色突出显示的OR模块。结果检查器显示死逻辑的摘要。set
输入等于1
,所以OR的input port 1
模块只能为 true。该状态暗示input port 1
错误条件是一个死逻辑。类似地,input port 2
是unreachable
,因为目标从未执行并且是死逻辑。要查看详细的分析报告,请在“结果摘要”窗口中点击“HTML”。
该报告显示模型中所有死逻辑结果的摘要。
死逻辑
软件将详细的分析结果存储在管理 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;