主要内容

记录、验证和调试图

在 Stateflow® 中,您可以记录数据和状态以了解它们在仿真期间何时以及如何变化。您可以在状态或转移上添加断点以暂停执行过程。通过结合使用这些方法,您可以验证和调试图逻辑。

在此示例中,您通过记录图的状态活动和数据值来识别可充电电池模型中的设计问题。然后,您使用断点来识别发生设计问题的状态和时间步。

打开模型

要构建模型,请按照教程上一步的说明进行操作。或者,从 MATLAB® 命令提示符打开 sfGetStartedBattery 模型。

  1. 在 MATLAB 命令提示符下,输入:

    openExample("sfGetStartedBattery")

    您可以通过切换 Manual Switch 模块对电池充电或放电。

  2. 双击 Chart 模块进入 Stateflow 编辑器。

    状态 ChargeDischarge 表示电池系统的工作模式。输入 isCharging 确定激活状态。数据 sentPowercharge 表示电池的输出瓦数和电量水平。

记录状态和数据

该电池系统有以下需求:

  • isCharging 为 true 时,对电池充电。当 isCharging 为 false 时,对电池放电。

  • 电池的电量百分比必须保持在 100% 和 0% 之间。

通过将图的激活状态和 charge 输入的值记录到仿真数据检查器来验证需求。

  1. 要记录图的激活状态,请在仿真选项卡中的准备部分,点击记录激活状态。记录标记 出现在画布的左下角。

  2. 符号窗格中,右键点击 charge 并点击检查。属性检查器将打开。

  3. 在属性检查器中,展开记录部分并选择记录信号数据

  4. 返回到 Simulink® 编辑器。

  5. 右键点击从 Manual Switch 模块到图的信号线并点击记录所选信号

  6. 要对模型进行仿真,请在仿真选项卡中点击运行。模型会进行仿真,直到您按停止

  7. 要转移到 Discharge 状态,请双击 Manual Switch 模块。等待几秒并再次切换 Manual Switch 模块。重复几次。在最后切换时,将 Manual Switch 模块返回到 0

  8. 仿真选项卡中,点击停止以结束仿真。

  9. 仿真选项卡中的审核结果部分,点击数据检查器

  10. 在仿真数据检查器中,点击“可视化和布局”。在基本布局部分中,点击 2x1 布局

  11. 要显示图的激活状态,请点击顶部图。然后,在检查选项卡中,展开 Stateflow 部分并选择 Battery:ActiveChild

  12. 要显示 Manual Switch 模块的输出,请点击底部图。然后,在检查选项卡中,展开信号部分并选择 Manual Switch:1

    当您切换 Manual Switch 模块时,图在 ChargeDischarge 之间按预期转移。

  13. 要显示 charge 的值,请点击底部图。然后,在检查选项卡中,选择 charge 并清除 Manual Switch:1

    电池的充电量超过 100% 或低于 0%,这不符合要求。

设置断点

在状态和转移上设置断点以识别发生设计问题的时间步。

  1. 在图中,右键点击 Discharge 状态并点击设置断点。红色圆形断点标记出现在状态上。默认情况下,状态上的断点会在图进入状态或保持在该状态时触发。

  2. 要禁止断点在图进入状态时触发,请点击断点标记。在 Discharge 断点对话框中,清除状态 entry 时触发器。

  3. 右键点击从 ChargeDischarge 的转移并点击设置断点。断点在图沿转移移动时触发。

  4. 调试选项卡中,点击断点列表

    断点列表窗格中,您可以启用或禁用断点并更改它们的触发条件。

  5. 指定 Discharge 断点仅在电池电量为负时触发。在 Discharge 状态的表行中,双击条件列并输入 charge<0

  6. 对模型进行仿真。仿真在 ChargeDischarge 之间的转移上暂停。

  7. 要继续仿真,请在仿真选项卡中,点击继续。仿真在 charge 变为负的时间步暂停。

  8. 再次点击继续。由于 charge 仍为负,Discharge 断点在下一时间步触发。

  9. 停止仿真。

  10. 要删除断点,请右键点击每个断点标记并选择清除断点

在教程的下一步,您将通过添加嵌套工作模式来修复设计问题,在这些工作模式下,电池在达到特定电量水平时会减慢或停止充电或放电。

另请参阅

主题