管理需求和高级模型检查
此示例展示了如何通过识别缺失的需求链接、运行标准和自定义模型检查以及执行设计错误检测分析来识别模型合规性中的潜在差距。
在此示例中,您使用:
Requirements Toolbox™ 管理 Simulink® 环境中的需求。
Simulink® Check™ 以确保符合建模标准。
Simulink® Design Verifier™ 确保模型没有运行时错误。
示例模型包含自适应巡航控制算法,该算法需要集成到其余控制系统软件中。为此,您必须确保算法满足您的需求、符合建模标准并且没有错误。
在 Simulink 中管理需求
您可以使用 Requirements Toolbox 在 Simulink 中查看和创作需求,并建立需求、Simulink 模型、MATLAB® 代码和测试用例之间的可追溯性,以了解需求变更的影响。如果您的需求在外部工具中,则需要将需求变更导入到 MATLAB 中。在此示例中,您使用 Requirements Toolbox 处理已导入 MATLAB 的需求。
在 Simulink 中查看需求
您可以使用 Requirements Toolbox 在 Simulink 画布中直接使用名为“需求透视”的视图查看需求可追溯性数据。
打开工程。
prj = openProject("advancedChecksProject");打开模型。
open_system("CruiseControl_Pod");要打开需求透视,点击 Simulink 画布右下角的横幅图标。

将打开一个包含可用视角的画廊。点击需求。

需求透视是模型需求可追溯性的视图。需求透视显示:
与需求相关的模型元素的徽章图标
画布底部的需求窗格
属性检查器窗格,显示需求可追溯性信息
解决缺失需求链接
名为 Brake 的 Inport 模块缺少需求链接。

在需求窗格中,点击箭头展开模型需求和索引为 1 的需求集。点击并将索引为 1.5: Requirement #6: Vehicle Brake Input 的行拖动到 Inport 模块 Brake。

需求徽章出现在模块上。

您还可以使用需求注解查看模型本身的需求可追溯性数据。点击 Brake 模块上的需求徽章,然后点击显示。

父需求的需求注解出现在 Simulink 画布上。当您点击注解时,需求将在属性检查器窗格中打开。

您还可以通过点击 Simulink 工具条中的需求编辑器按钮,在需求编辑器中查看完整的需求集。

在需求编辑器中,您可以通过点击工具条中的显示需求来查看设置的需求。

您还可以通过点击显示链接来打开相关链接集来查看链接。

生成可追溯性矩阵
您可以通过创建可追溯性矩阵来识别模型中其他缺失的需求链接。在需求编辑器中,点击可追溯性矩阵。

要在两个工件之间创建可追溯性矩阵,点击添加。

将左设置为 CruiseControl.slreqx,将上设置为 CruiseControl_Pod.slx,然后点击生成矩阵。

您可以使用可追溯性矩阵进一步分析可追溯性数据。

有关如何使用可追溯性矩阵的更多信息,请参阅使用可追溯性矩阵跟踪需求链接 (Requirements Toolbox)。
您可以使用 slreq.generateTraceabilityDiagram (Requirements Toolbox) 以图形方式直观地展现需求和其他工件的可追溯性结构体。在需求编辑器中,展开索引为 3 的需求,并选择索引为 3.4 的需求,目标速度将限制在 20 到 90 英里/小时之间。点击可追溯性图。


有关使用可追溯性图的更多信息,请参阅 使用可追溯性图可视化链接 (Requirements Toolbox) 和 评估分配和影响 (Requirements Toolbox)。
检查模型是否符合标准
设计汽车通用的软件需要符合行业标准。您可以使用 Simulink Check 来验证您的模型是否符合这些标准。
运行行业标准检查
您可以使用 Simulink Check 来启用编辑时检查,该检查在您编辑模型时在后台运行。Simulink Check 实时识别问题,帮助您在模型设计过程早期发现问题。您可以使用模型顾问启用编辑时检查。
关闭 CruiseControl_Pod 模型,然后打开 CruiseControl_Model_Checks 模型。
close_system("CruiseControl_Pod",0); open_system("CruiseControl_Model_Checks");
要启用编辑时检查,请在建模选项卡上点击模型顾问> 编辑时检查。

“配置参数”对话框打开并显示模型顾问窗格。选择编辑时检查并点击确定。

启用编辑时检查后,检查结果将出现在模型画布上。在 Stateflow 图中,某些状态带有黄色阴影,表示存在问题。例如,指向 ON 状态,然后指向黄色警告图标,查看编辑时检查标记的问题的简短描述。

点击警告图标可查看有关该问题的更多详细信息以及解决问题的建议操作。

通过在 en 或 entry 和动作之间添加新行来清除 ON、Accel 和 Coast 图中的检查问题。添加新行后,黄色阴影消失。

运行自定义检查
您还可以使用 Simulink Check 添加自定义模型检查,当您想要满足默认情况下未包含的其他标准时,这会很有帮助。您可以使用模型顾问 API 和 sl_customization.m 文件添加自定义检查。
在此示例中,您使用模型顾问运行三个自定义检查。自定义检查在 sl_customization.m 中定义,并包含在示例工程中。您可以将 sl_customization.m 文件用于各种目的,例如更改模块字体、模块颜色或 Simulink 窗口颜色。
关闭模型并清理工作区。
close_system("CruiseControl_Model_Checks",0);
clear刷新模型顾问自定义。
Advisor.Manager.refresh_customizations;
打开 CruiseControl_Model_Checks 模型。
open_system("CruiseControl_Model_Checks");要打开模型顾问,请在建模选项卡中点击模型顾问 > 模型顾问。

在系统选择器窗口中,选择 CruiseControl_Model_Checks 并点击确定。

在“模型顾问”窗口的检查选择器窗格中,展开按产品文件夹以查看基于产品的检查。展开自定义检查文件夹。

此示例工程包含三个自定义检查。要运行这些检查,请选择自定义检查文件夹,然后点击运行检查。

检查完成后,结果将显示在“模型顾问”窗口中。

其中一项检查通过,一项检查失败,一项检查出现警告。点击失败的自定义检查检查 Simulink 模块字体以查看结果的更多详细信息。

此项检查确保所有模块均使用 16 点 Tahoma 字体。结果显示使用不同字体的模块。您可以通过点击模块模块使用 Simulink 工具条中的格式选项卡更改字体和字体大小,将模型中的模块字体和字体大小更改为 Tahoma,从而清除这些检查失败。
有关编写自定义编辑时检查的更多信息,请参阅 ModelAdvisor.EdittimeCheck 类和 Define Edit-Time Checks to Comply with Conditions That You Specify with the Model Advisor。
检查模型是否存在设计错误
Simulink Design Verifier 是一种使用形式化方法检测错误的静态分析工具。它可以检查几种类型的设计错误,包括除以零、整数溢出和死逻辑。在此示例中,您将分析模型中的除以零误差。当除法运算的分母中使用零时,就会发生除以零的情况,这会导致运行时错误。在传统的基于仿真的测试中,创建能够揭示除以零错误的测试可能非常困难。
启用设计错误检测模式
在 Simulink Design Verifier 中除以零检测
关闭模型并清理工作区。
bdclose all
clear打开 CruiseControl_DivByZero 模型。
open_system("CruiseControl_DivByZero")在 App 选项卡中的模型验证、确认和测试下,点击 Design Verifier。在模式部分,确保设计错误检测模式已启用。

要打开错误检测设置,请在 Design Verifier 选项卡上点击错误检测设置 > 错误检测设置。

选择除以零并点击 App。

在分析中使用参数
该模型有几个可调参数,每个参数都有自己的范围。建议在分析中包含参数范围,因为参数值的无意更改可能会导致运行时错误。当您设置参数范围时,Simulink Design Verifier 会将该参数视为具有其自身范围的信号,而不是常数。
在“配置参数”对话框左侧窗格中的 Design Verifier 下,点击参数和变体。参数表默认启用。Simulink Design Verifier 在分析时使用指定的参数配置。要查找模型中定义的新参数,或查看列出的参数的更多详细信息,点击查找参数。

当您点击查找参数时,表中会填充模型中可调的参数。点击确定。
运行分析检查设计错误
在 Simulink 工具条中的 Design Verifier 选项卡上,点击检测设计错误。

分析结果
分析完成后,将打开“Simulink Design Verifier 结果摘要”窗口。

Simulink Design Verifier 发现两个可能出现除以零的情况,并将它们报告为伪造的目标。由于模型包含两个除法运算,Simulink® Design Verifier™ 确定了两个伪造的目标。
点击在模型上突出显示分析结果以突出显示模型中的结果。Compute target speed Stateflow 图以红色突出显示。

双击 Compute target speed Stateflow 图。图中,ON 状态中有两个转移以红色突出显示。

设计错误与两个转移都使用的 holdrate 参数有关。要了解有关 Simulink Design Verifier 如何在分析中使用此参数的更多信息,请参阅详细报告。在 Simulink Design Verifier 结果摘要窗口的详细分析报告旁边,点击 HTML。

在 HTML 报告中,点击目录中的设计错误链接。

查看第 5 节中的第一个设计错误。

Simulink Design Verifier 创建了一个测试用例,展示了如何发生除以零的情况。测试用例中将 holdrate 的值设置为 0,因为范围表中 holdrate 参数的最小值为 0。通过将最小值更改为 1 来解决该问题。
holdrate.Min = 1;
保存模型,然后导航到“配置参数”对话框中的参数和变体窗格。要告诉 Simulink Design Verifier 查找 holdrate 的新参数值,请选择 holdrate 行并点击清除。


要更新参数表并获取 holdrate 的新最小值,点击查找参数。

现在通过点击检测设计错误重新运行设计错误检测分析。除以零已不再可能。

另请参阅
slreq.generateTraceabilityDiagram (Requirements Toolbox) | ModelAdvisor.EdittimeCheck
主题
- 使用可追溯性图可视化链接 (Requirements Toolbox)
- 评估分配和影响 (Requirements Toolbox)
- Check Model Compliance Using Edit-Time Checking
- 定义自定义模型顾问检查
- Define Edit-Time Checks to Comply with Conditions That You Specify with the Model Advisor
- 死逻辑检测