主要内容

本页翻译不是最新的。点击此处可查看最新英文版本。

使用结点连接转移

R2026a

您可以通过使用结点将多个转移连接到单个路径、分支路径或流程图。

在 Stateflow® 中,路径是将源连接到目标的一个或多个转移。您可以通过将每个转移连接到结点来创建一个具有多个转移的路径。结点是表示决策点的图形对象,在画布上显示为圆圈。例如,在以下图中,几个转移和结点形成从一个状态到另一个状态的单个路径。

一个状态或结点可以有多个入向或出向路径。如果一个状态或结点有多个出向路径,图会按照路径的计算顺序对其进行编号。

在此示例中,您使用结点在可充电电池系统模型中创建一个流程图。该流程图将电池系统的输出与所连接设备的需求匹配,而不超出电池的限制。

打开模型

要构建模型,请按照教程上一步的说明进行操作。或者,使用上面的打开模型按钮,打开 sfGetStartedFlowchart 模型。

双击 Chart 模块以进入 Battery 图。

状态 Charge 和 Discharge 表示电池系统的工作模式。每个状态都包含子状态,这些子状态表示电池充满或空时的充电和放电速率。输入 isCharging 确定激活状态。数据 sentPower 和 charge 表示电池的输出瓦数和电量水平。

创建流程图

在 Stateflow 中,流程图指其子级仅由结点和转移组成的图或状态。一个流程图中的所有路径必须终止于单个共享结点。您可以在图层次结构的任何级别创建一个流程图。

当前,当电池同时放电和被供电时,它始终输出相同的瓦数。在 Powered 状态中,创建一个流程图,将电池输出与所连接设备的需求匹配,而不超出最大值。

添加表示设备需求超过电池可提供功率的路径。

  1. 在 Discharge 状态中,删除 entry 动作。

  2. 在 Powered 状态中,删除 during 动作。

  3. 在 Powered 状态中,添加第一个结点。在选项板中,点击结点图标。将该结点置于 Powered 状态中。

  4. 在第一个结点右侧添加第二个结点。

  5. 在第二个结点下方添加第三个结点。

  6. 绘制从第一个结点到第二个结点的转移。添加条件 [deviceDemand>maxPower]。

  7. 绘制从第二个结点到第三个结点的转移。添加动作 {sentPower=maxPower;}。

添加表示功率需求在电池限制内的路径。

  1. 在第一个结点下方添加第四个结点。

  2. 绘制从第一个结点到第四个结点的转移。添加动作 {sentPower=deviceDemand;}。

  3. 创建从第三个结点到第四个结点的转移。

第一个结点上的数字表示计算顺序。标注为 [deviceDemand>maxPower] 的转移有顺序标签 1,表示首先计算它。标注为 {sentPower=deviceDemand;} 的转移有顺序标签 2,表示其次计算它。

终止结点是没有任何出向转移的结点。将两条路径都连接到一个共享终止结点。在到终止结点的转移中,按输出瓦数成比例减少电池电量。

  1. 在第四个结点下方添加第五个结点。

  2. 创建从第四个结点到第五个结点的转移。添加动作 {charge=charge-sentPower;}。

使用内部转移在处于激活状态的时间步计算

内部转移是 during 动作的图形等效项。当状态包含内部转移时,内部转移在处于激活状态的每个时间步都计算,但不在状态变为激活或变为非激活的时间步计算。如果一个状态同时包含内部转移和子状态之间的转移,则内部转移先计算。您可以通过绘制从一个状态的边缘转移到该状态内的对象来创建内部转移。

绘制从 Powered 状态的边缘到第一个结点的内部转移。

定义图数据

定义您在流程图中创建的数据。

  1. 在符号窗格中,在 maxPower 行中的类型下,点击图标并选择 Local Data。将值设置为 3.5。

  2. 在 deviceDemand 行中的类型下,点击图标并选择 Input Data。

  3. 在 charge 行中,将值设置为 100。

添加一个连接到 deviceDemand 输入端口的模块。

  1. 打开顶层模型。

  2. 添加 Sine Wave 模块。将输出端口连接到 Battery 图的 deviceDemand 端口。

  3. 指定正弦波从 0 开始并达到最大值 5。双击该模块打开模块对话框,然后将振幅和偏置参数设置为 2.5。将相位参数设置为 -pi/4。

  4. 右键点击从 Sine Wave 模块到 Battery 图的信号线并点击记录所选信号。对从 Battery 图到 Scope 模块的信号线重复此步骤。

对模型进行仿真

对模型进行仿真并观测结果。

  1. 要对模型进行仿真,请在仿真选项卡中点击运行。

  2. 要打开仿真数据检查器,请在仿真选项卡中,点击数据检查器。

  3. 在检查选项卡中,选择 Battery:1 和 Sine Wave:1。

电池的输出瓦数随着功率需求的升降而变化,最大值为 3.5。在仿真接近结束时,电池耗尽电力,输出瓦数降到 0。

电池系统按预期输出功率。但是,如果电池耗尽电力,系统无法继续工作。

在教程的下一步,您将添加不可充电的应急电池,以在主电池电量为空时维持基本功能。为了对电池的同时工作情形进行建模,您需要使用并行状态和事件。

另请参阅

主题