Main Content

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

检测整数溢出和除以零错误

以下部分介绍如何分析 sldvdemo_cruise_control_fxp_fixed模型中的整数溢出和除以零错误。

分析模型

打开并检查模型是否存在整数溢出和除以零的错误:

1.打开sldvdemo_cruise_control_fxp_fixed模型。

open_system('sldvdemo_cruise_control_fxp_fixed');

2.在 Design Verifier 选项卡的准备部分中,从模式设置下拉菜单中点击设置

3.在配置参数对话框中,选择Design Verifier > Design Error Detection

4.在设计错误检测窗格中,选择:

  • 整数溢出

  • 除以零

5.在配置参数对话框的诊断 > 数据有效性窗格中,将信号 > 溢出时换行信号 > 溢出时饱和参数 > 检测溢出设置为错误。

6.单击“OK”保存这些设置并关闭“配置参数”对话框。

7.在模式部分中,选择设计错误检测

8.单击检测设计错误

分析完成后:

  • 该软件通过分析结果突出显示模型。

  • Simulink® Design Verifier™ 结果对话框打开并显示分析摘要。

查看分析结果

查看模型结果

通过识别可能的信号值,得出的范围可以帮助您了解错误的来源,正如您可以通过以下步骤看到的那样:

1.在 sldvdemo_cruise_control_fxp_fixed模型的顶层,点击定点控制器子系统。

Simulink® Design Verifier™ 结果窗口显示根据分析计算得出的输出端口可能信号值的范围:

  • 输出端口 1(节流阀)的值范围从 -2.6101 到 2.6096。

  • 输出端口 2(目标)的值范围是 0 至 255.9960。

fp_controller_sldv_results.png

2.单击sldvdemo_cruise_control_fxp_fixed模型的Outport模块以查看相同的信号绑定值。

3.打开定点控制器子系统。

该子系统中的两个对象以红色勾勒出来。PI 控制器子系统以绿色轮廓表示。

4.单击红色轮廓的“Sum”模块,它为 PI 控制器子系统提供错误输入。

sum_block_red.png

该 Sum模块可能会产生溢出错误。分析发现了一个测试用例,该用例可能导致 Sum模块的输出计算超出范围 [-128..127.9960]。

sum_overflow_sldv_results.png

5.为了更全面地理解此错误,点击为 Sum模块提供输入的两个模块。在 Simulink® Design Verifier™ 结果窗口中,查看其派生范围:

  • 总线模块的第三个输出端口的范围是 [0..256]。

  • Switch模块的输出端口范围是 [0..256]。

您可以看到,这些信号范围的总和运算可以计算出超出 Sum模块输出端口范围 [-128..128] 的值。

分析报告了 Sum模块上的溢出错误。分析不会传播这个错误,并假设 Sum模块的输出在任何后续计算的有效范围内。

6.单击绿色轮廓的 PI 控制器子系统。PI 控制器子系统中的任何模块都不能产生溢出或除以零的错误。当软件分析 PI 控制器子系统时,它会忽略来自 Sum模块的溢出错误并假定子系统的输入是有效的。

保持sldvdemo_cruise_control_fxp_fixed模型开放。在下一部分中,您将创建框架模型来查看生成 Sum模块溢出错误的测试用例。

审核框架模型

要查看演示错误的测试用例,请从 Simulink® Design Verifier™ 结果窗口生成框架模型:

1.在 sldvdemo_cruise_control_fxp_fixed模型中,打开定点控制器子系统。

2.单击红色轮廓的“Sum”模块,它为 PI 控制器子系统提供错误输入。

Simulink® Design Verifier™ 结果窗口显示发生溢出错误的信息。

3.在 Simulink® Design Verifier™ 结果窗口中,点击查看反例

该软件创建一个包含测试用例的框架模型,该测试用例具有导致此溢出错误的信号值。

框架模型中,打开信号生成器对话框,并显示测试用例2。

4.点击开始仿真按钮,使用该测试用例对模型仿真。

正如预期的那样,由于定点控制器子系统中的 Sum模块出现溢出错误,仿真失败。

有关更多信息,请参阅 管理Simulink Design Verifier框架模型

查看分析报告

要查看包含有关 sldvdemo_cruise_control_fxp_fixed模型的分析报告的详细信息的 HTML 报告:

1.在 Simulink® Design Verifier™ 结果窗口中,要重新显示结果摘要,点击返回摘要

2.点击生成详细的分析报告

该软件生成一份详细的分析报告,并在浏览器中打开。

对于 sldvdemo_cruise_control_fxp_fixed模型,报告的设计错误检测目标状态章节提供了两类详细结果:

  1. 目标有效 — 未产生错误的模型对象

  2. 用反例证伪的目标 —测试用例产生错误的模型对象

具有决策或条件结果的模型对象会受到死逻辑检测。有关具有决策或条件目标的模型对象完整列表的更多信息,请参阅 接受覆盖的模型对象 (Simulink Coverage)

有关更多信息,请参阅 审查结果

另请参阅

检测整数溢出错误

检测具有复杂输入的模型中的整数溢出