Main Content

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

管理需求和高级模型检查

此示例展示了如何通过识别缺失的需求链接、运行标准和自定义模型检查以及执行设计错误检测分析来识别模型合规性中的潜在差距。

在此示例中,您使用:

示例模型包含自适应巡航控制算法,该算法需要集成到其余控制系统软件中。为此,您必须确保算法满足您的需求、符合建模标准并且没有错误。

在 Simulink 中管理需求

您可以使用 Requirements Toolbox 在 Simulink 中查看和创作需求,并建立需求、Simulink 模型、MATLAB ® 代码和测试用例之间的可追溯性,以了解需求变更的影响。如果您的需求在外部工具中,则需要将需求变更导入到 MATLAB 中。在此示例中,您使用 Requirements Toolbox 处理已导入 MATLAB 的需求。

在 Simulink 中查看需求

您可以使用 Requirements Toolbox 在 Simulink 画布中直接使用名为“需求视角”的视图查看需求可追溯性数据

打开工程。

prj = openProject("advancedChecksProject");

打开模型。

open_system("CruiseControl_Pod");

要打开需求视角,点击Simulink画布右下角的横幅图标。

simulinkCanvasBanner.png

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

enterRequirementsPerspective.png

需求视角是模型需求可追溯性的视图。需求视角显示:

  • 与需求相关的模型元素的徽章图标

  • 画布底部的需求窗格

  • 属性检查器窗格,显示需求可追溯性信息

解决缺失需求链接

名为 Brake 的 Inport模块缺少需求链接。

missingRequirementLink.png

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

clickAndDragRequirement.png

需求徽章出现在模块上。

requirementsBadgeAppears.png

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

requirementsBaseShowButton.png

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

requirementsAnnotation.png

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

requirementsEditorButton.png

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

showRequirementsButton.png

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

showLinksButton.png

生成可追溯性矩阵

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

traceabilityMatrixButton.png

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

traceabilityMatrixAdd.png

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

traceabilityMatrixSelectArtifacts.png

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

traceabilityMatrix.png

有关如何使用可追溯性矩阵的更多信息,请参阅使用可追溯性矩阵跟踪需求链接 (Requirements Toolbox)

您可以使用 slreq.generateTraceabilityDiagram (Requirements Toolbox) 以图形方式直观地展现需求和其他工件的可追溯性结构体。在需求编辑器中,展开索引为3的需求,并选择索引为3.4的需求,目标速度将限制在 20 到 90 英里/小时之间。单击可追溯性图

traceabilityDiagramButton.png

traceabilityDiagram.png

有关使用可追溯性图表的更多信息,请参阅 使用可追溯性图可视化链接 (Requirements Toolbox)评估分配和影响 (Requirements Toolbox)

检查模型是否符合标准

设计汽车通用的软件需要符合行业标准。您可以使用Simulink Check来验证您的模型是否符合这些标准。

运行行业标准检查

您可以使用 Simulink Check 来启用编辑时检查,该检查在您编辑模型时在后台运行。Simulink Check 实时识别问题,帮助您在模型设计过程早期发现问题。您可以使用 Model Advisor 启用编辑时检查。

关闭CruiseControl_Pod模型,然后打开CruiseControl_Model_Checks模型。

close_system("CruiseControl_Pod",0);
open_system("CruiseControl_Model_Checks");

要启用编辑时检查,请在建模选项卡上点击模型顾问> 编辑时检查

editTimeChecksButton.png

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

editTimeChecksParameter.png

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

checkFlagOnState.png

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

Edit-time check details state that there are missing line breaks between entry action, during action, and exit action in the states or missing line breaks after semicolons in statements. Suggested action is to add a new line after actions and semicolons.

通过在 en entry 与操作之间添加新行来清除 ON、AccelCoast 图表中的检查问题。添加新线条后,黄色阴影消失。

checksClearedFromStates.png

运行自定义检查

您还可以使用 Simulink Check 添加自定义模型检查,当您想要满足默认情况下未包含的其他标准时,这会很有帮助。您可以使用 Model Advisor API 和 sl_customization.m 文件添加自定义检查。

在此示例中,您使用 Model Advisor 运行三个自定义检查。自定义检查在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");

要打开模型顾问,请在建模选项卡中点击模型顾问 > 模型顾问

modelAdvisorButton.png

在系统选择器窗口中,选择 CruiseControl_Model_Checks 并点击OK

modelAdvisorSystemSelector.png

在 Model Advisor 窗口的检查选择器窗格中,展开按产品文件夹以查看基于产品的检查。展开自定义检查文件夹。

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

runCustomChecks.png

检查完成后,结果将显示在 Model Advisor 窗口中。

customCheckResults.png

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

blockFontCheckFailed.png

此项检查确保所有模块均使用 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。在模式部分,确保设计错误检测模式已启用。

designErrorDetectionButton.png

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

designErrorDetectionSettings.png

选择除以零并点击App

divisionByZeroParameter.png

在分析中使用参数

该模型有几个可调参数,每个参数都有自己的范围。建议在分析中包含参数范围,因为参数值的无意更改可能会导致运行时错误。当您设置参数范围时,Simulink Design Verifier 会将该参数视为具有其自身范围的信号,而不是常数。

在配置参数对话框左侧窗格中的Design Verifier下,点击Parameters and Variants。参数表默认启用。Simulink Design Verifier在分析时使用指定的参数配置。要查找模型中定义的新参数,或查看列出的参数的更多详细信息,点击查找参数

findParameters.png

当您点击查找参数时,表中会填充模型中可调的参数。点击确定

运行分析检查设计错误

在 Simulink 工具条中的Design Verifier选项卡上,点击检测设计错误

detectDesignErrorsButton.png

分析结果

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

designErrorDetectionResultsSummary.png

Simulink Design Verifier 发现两个可能出现除以零的情况,并将它们报告为伪造的目标。由于模型包含两个除法运算,Simulink® Design Verifier™ 确定了两个伪造的目标。

点击在模型上突出显示分析结果以突出显示模型中的结果。Compute target speed Stateflow 图表以红色突出显示。

designErrorDetectionModelHighlight.png

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

designErrorDetectionTransitionHighlight.png

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

resultsSummaryDetailedReport.png

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

designVerifierReportTOC.png

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

designVerifierReportTransition1.png

Simulink Design Verifier 创建了一个测试用例,展示了如何发生除以零的情况。测试用例中将 holdrate 的值设置为 0 ,因为范围表中 holdrate 参数的最小值为 0 。通过将最小值更改为 1 来解决该问题。

holdrate.Min = 1;

保存模型,然后导航到配置参数对话框中的参数和变体窗格。要告诉 Simulink Design Verifier 查找 holdrate 的新参数值,请选择 holdrate 行并点击清除

parametersClearButton.png

parametersHoldRateCleared.png

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

parametersHoldRateMin1.png

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

designVerifierResultsComplete.png

另请参阅

(Requirements Toolbox) |

相关主题