记录、验证和调试图
在 Stateflow® 中,您可以记录数据和状态以了解它们在仿真期间何时以及如何变化。您可以在状态或转移上添加断点以暂停执行过程。通过结合使用这些方法,您可以验证和调试图逻辑。
在此示例中,您通过记录图的状态活动和数据值来识别可充电电池模型中的设计问题。然后,您使用断点来识别发生设计问题的状态和时间步。
打开模型
要构建模型,请按照教程上一步的说明进行操作。或者,从 MATLAB® 命令提示符打开 sfGetStartedBattery 模型。
在 MATLAB 命令提示符下,输入:
openExample("sfGetStartedBattery")
您可以通过切换 Manual Switch 模块对电池充电或放电。
双击 Chart 模块进入 Stateflow 编辑器。

状态
Charge和Discharge表示电池系统的工作模式。输入isCharging确定激活状态。数据sentPower和charge表示电池的输出瓦数和电量水平。
记录状态和数据
该电池系统有以下需求:
当
isCharging为 true 时,对电池充电。当isCharging为 false 时,对电池放电。电池的电量百分比必须保持在 100% 和 0% 之间。
通过将图的激活状态和 charge 输入的值记录到仿真数据检查器来验证需求。
要记录图的激活状态,请在仿真选项卡中的准备部分,点击记录激活状态。记录标记
出现在画布的左下角。在符号窗格中,右键点击
charge并点击检查。属性检查器将打开。在属性检查器中,展开记录部分并选择记录信号数据。
返回到 Simulink® 编辑器。
右键点击从 Manual Switch 模块到图的信号线并点击记录所选信号。
要对模型进行仿真,请在仿真选项卡中点击运行。模型会进行仿真,直到您按停止。
要转移到
Discharge状态,请双击 Manual Switch 模块。等待几秒并再次切换 Manual Switch 模块。重复几次。在最后切换时,将 Manual Switch 模块返回到0。在仿真选项卡中,点击停止以结束仿真。
在仿真选项卡中的审核结果部分,点击数据检查器。
在仿真数据检查器中,点击“可视化和布局”
。在基本布局部分中,点击 2x1布局
。要显示图的激活状态,请点击顶部图。然后,在检查选项卡中,展开 Stateflow 部分并选择
Battery:ActiveChild。要显示 Manual Switch 模块的输出,请点击底部图。然后,在检查选项卡中,展开信号部分并选择
Manual Switch:1。
当您切换 Manual Switch 模块时,图在
Charge和Discharge之间按预期转移。要显示
charge的值,请点击底部图。然后,在检查选项卡中,选择charge并清除Manual Switch:1。
电池的充电量超过 100% 或低于 0%,这不符合要求。
设置断点
在状态和转移上设置断点以识别发生设计问题的时间步。
在图中,右键点击
Discharge状态并点击设置断点。红色圆形断点标记出现在状态上。默认情况下,状态上的断点会在图进入状态或保持在该状态时触发。要禁止断点在图进入状态时触发,请点击断点标记。在 Discharge 断点对话框中,清除状态 entry 时触发器。
右键点击从
Charge到Discharge的转移并点击设置断点。断点在图沿转移移动时触发。在调试选项卡中,点击断点列表。
在断点列表窗格中,您可以启用或禁用断点并更改它们的触发条件。
指定
Discharge断点仅在电池电量为负时触发。在Discharge状态的表行中,双击条件列并输入charge<0。
对模型进行仿真。仿真在
Charge和Discharge之间的转移上暂停。
要继续仿真,请在仿真选项卡中,点击继续。仿真在
charge变为负的时间步暂停。
再次点击继续。由于
charge仍为负,Discharge断点在下一时间步触发。停止仿真。
要删除断点,请右键点击每个断点标记并选择清除断点。
在教程的下一步,您将通过添加嵌套工作模式来修复设计问题,在这些工作模式下,电池在达到特定电量水平时会减慢或停止充电或放电。