Ed Marquez,Mathworks
了解使用状态流的基础知识®通过一个例子。您将学习如何建模、模拟和测试监控控制器,确定建筑是否使用电池存储的能量或来自电网的能量。您还将了解如何从头构建状态图,使用条件转换连接状态,添加流程图决策逻辑,然后使用动画运行模拟以确保模型正确工作。
经过该示例后,您将了解StateFlow如何只是基于模型的设计的一部分,用于建模,模拟,测试和实现现实世界系统。
StateFlow是一个图形环境,允许您为主管控制,任务调度和故障管理应用程序设计和模拟决策逻辑。此视频将向您展示StateFlow的基础知识,并让您了解如何将其用来模拟决策逻辑。最后,我们将向您展示在旁边了解有关eventsflow的更多信息,并立即开始使用它。让我们开始。
Mathworks在马萨诸塞州的Natick的总部设有屋顶的太阳能电池板。这些太阳能电池板可以帮助降低我们的电力成本和对化石燃料的依赖。事实上,他们提供了大约8%的数学工作能源需求。
用电池配对太阳能电池板让我们收集太阳能,然后在我们想要的时候使用它。这些太阳能电池板产生的能量在每天都变化。这使得很难找到使用收集能量的最佳方式。
让我们假设我们的建筑使用200千瓦,面板将收取3兆瓦的电池。当它不是阳光充足时,这充当了建筑物的缓冲区。现在我们需要决定何时使用电网以及何时使用电池,以便我们减少电费。我们需要代表所有这些操作模式,并在其之间转换时做出决定。
幸运的是,我们有eventsflow,可以做到这一切。电力在全天的不同之处。如果我们可以使用它以避免最高价格,电池将节省最多的钱。
根据现在的时间,我们希望处于两种操作模式之一。我们可以用有限状态机把它表示成两个独立的状态。如果有足够的电量,我们要么用电网,要么用电池。如果电池耗尽了,我们就再用电网。任何时候只有一种操作模式是活动的。
我们将使用状态流程图模拟我们的有限状态机。硬件已经在Simulink中建模,因此我们可以加载模型并添加到它。金宝app该模型的输入数据是从太阳能电池板的瓦特每15分钟采样的瓦。我们有一年的数据。所以这是我们的模拟将是多长时间的。
我们将使用此数据来确定是否与我们的天气探测器阳光充足。我们还需要知道一天的时间。我们将根据电池电量进行决策。所以我们为电池提供了一个计划型号,我们通过范围监控存储的能量。
最后,我们将求解器设置为固定的步骤求解器以匹配我们的太阳能数据的采样率。您可以使用带有连续系统的状态流。但是对于这样的决策逻辑,通常会是离散的时间。
好了,这涵盖了所有已经建立的东西。但我们需要决定何时使用电池,何时使用电网。我们怎么做呢?我们可以通过添加一个状态流图来表示我们的决策逻辑来做到这一点。
我们将首先从StateFlow库拖动到模型中的图表块。现在让我们将信号连接到图表,以便我们可以在里面使用它们。由于我们的信号已经有了名称,我们可以将它们拖到图表块上。并且端口名称将设置为信号名称。
当我们将其他两个信号拖到图表上时,将添加两个端口。它开始得到一点拥挤,所以我们将调整图表块的大小。最后,我们将将此图表块重命名为构建管理器。现在我们已准备好建立我们的决策逻辑。内部我们可以使用我们刚刚连接的所有信号。
我们建筑内的能源系统可以在使用电网和电池之间切换。我们将用使用电网和使用电池两种状态来表示这两种运行模式。我们还需要通过添加一个默认转换来告诉statflow在模拟开始时进入哪个状态。
我们将通过从网格中绘制电源来启动。所以默认传输将进入使用网格状态。在我们收集了电池中的一些太阳能之后,我们应该考虑切换到使用电池状态。因此,我们将通过连接它们允许使用网格和使用电池状态的传输。
在statflow中,我们可以使用方括号来指定条件,使用花括号来指定操作。每隔15分钟,我们就要决定接下来的15分钟是用电网还是用电池。为了降低总能量成本,让我们尽可能先使用电池。
为了满足200千瓦的电力需求15分钟,储存能源必须大于50千瓦时。因此,我们将使用此条件来保护从使用网格状态到使用电池状态的转换。如果我们使用电池及其存储的能量降至50千瓦时,我们将再次使用该网格。
接下来,让我们指定状态操作。在statflow中,状态可以有不同的操作类型,包括进入、过程和退出操作。如果在进入某个状态的过程中发生了一些事情,则执行进入操作。在保持状态时执行动作。退出操作是在退出状态时执行的。
当进入使用电池状态时,我们将使用一个进入动作将电池使用率设置为200千瓦。当离开使用电池状态时,我们将使用退出操作将使用率设置为0。之后,我们将把利用率作为输出信号,用它的值在Simulink中调整电池的充电水平。金宝app
使用电池没有成本,因为它的能量来自太阳。另一方面,使用电网时,能源价格为每千瓦时0.20美元,意味着能源成本每15分钟上涨10美元。因此,我们应该在进入或保持在使用网格状态的入口和行动期间增加能源成本。另外,不要忘记为成本指定一个初始值为0。
好的,完成我们的第一个州过渡图。我们已经开始了一个非常好的开始,但有一些东西缺失。每千瓦时的0.20美元的能源价格仅适用于非高峰时段。对于高峰时段,能源价格为每千瓦时0.30美元。
那么我们如何适应时变的价格呢?为了追踪时间,我们只需要另一个状态转变图。我们已经知道如何在statflow中构建一个。这样,我们就可以很容易地知道基于使用时间的能源价格是多少。
现在我们有两个单独的任务,跟踪它是否是峰值时间或峰值时间和管理能源。要组织两者,我们将介绍两个叫做时间和能源经理的巨额架。使用状态层次结构有助于我们更好地组织,结构和管理状态流量的决策逻辑。
默认情况下,在任何给定级别上只能激活一个状态,这意味着状态流程图具有排他的分解。这就是为什么statflow警告我们没有默认转换的原因。但实际上,在这个层次上我们不需要。
我们希望追踪时间并同时管理能源。所以让我们将图表分解切换到并行。我们称之为这些并行状态。但实际上,事情必须以特定的顺序发生。StateFlow让我们为每个并行状态指定执行顺序,这有助于我们避免在我们的决策逻辑中含糊不清。
接下来,让我们检查这两个并行状态的执行顺序。为了能够计算能量成本,我们首先需要知道当前的时间。所以执行顺序是正确的。
现在我们正在跟踪使用时间,我们可以简单地遵循流程图以确定当前的能源成本。它目前在高峰时段吗?如果是,那么能源成本为15美元。如果不是,那么能源成本为10美元。
好,回到我们的状态流程图。让我们通过添加一个流程图来根据一天中的时间重新计算能源成本。这一次,默认转换将我们带到一个连接点,我们将从那里展开分支。我们可以使用in操作符来检测使用时间。
如果它在高峰时段期间,我们将采用第一个分支,并且该行动是将成本递增15否。否则,我们将采用第二个分支并将成本增量10。就像对并行状态一样,这很重要每个转换都有正确的执行顺序。例如,如果执行顺序在此后,则永远不会检查正确的分支。
接下来,我们可以使用符号窗格来定义图表中使用的符号。注意,我们已经有三个输入符号,它们对应于我们从顶层模型创建的三个输入端口。让我们点击解决未定义的符号。这将自动确认我们使用的符号,并根据它们被使用的方式定义它们的数据范围。特别是,每个输入和输出数据符号都将成为图表块的一个端口。
由于能源成本对我们很重要,我们将其数据范围更改为输出数据,从而使其成为输出信号。回到顶层模型,现在我们的状态流程图有输出数据的输出端口。现在让我们添加一个显示块来捕获总能源成本,并建立所有的连接。在statflow中,我们可以轻松地监控活动状态数据,以便进行仿真后分析。
因为我们对监控一天中不同时间的能源使用很感兴趣,所以让我们记录两个超级状态的子活动。我们已经准备好通过单击run按钮来运行模拟。在模拟过程中,图表是完全动画的,所以我们可以在运行时看到我们的状态和转换。
但是我们如何确保我们的决策逻辑正常工作呢?让我们暂停模拟并放慢动画速度。我们在这个时间步使用网格。我们可以看到我们处于非峰值状态。目前我们的成本是4855美元。
现在我们将前进一步,看看我们收费了10美元的低峰价格。当我们采取另一步时,我们向峰值状态过渡,然后我们收费了15.01美元的高峰价。最后一步,我们已经过渡到使用电池状态。正如我们所期望的那样,我们的成本没有改变。
好的,看起来我们的决策逻辑正常工作。让我们关闭动画,然后单击继续运行其余步骤。一旦仿真完成运行,我们就可以从显示器中看到总能源成本。
让我们打开范围,看看存储的能量如何随着时间的推移而变化。我们可以从不同的阳光条件下观察储存能量的强烈振荡。使用电池作为缓冲单元,我们设法从太阳能电池板获得更稳定的能源。
接下来,让我们打开模拟数据检查器。statflow为我们保存了活动状态数据的整个历史。顶部显示当前的小时。是高峰还是低谷?底部显示告诉我们正在使用的能源,电网或电池。
仔细看看这些国家活动后,我们注意到我们的决策逻辑问题。让我们专注于这个特定的一天。我们可以从它来回切换的事实中,电池不能积累大量能量,因此它必须是阴天。结果,我们必须以非常陡峭的价格在高峰时段中间使用电网。
此时,我们后悔使用电池时的能源价格低。要解决这个问题,我们可以添加一些额外的条件。让我们等到我们在高峰状态使用电池。或者,如果我们处于峰值状态,我们只能在外面阳光充足时使用电池。
这允许更有效地利用我们全天收集的有限太阳能。这就是修改我们在eventyflow中的决策逻辑的情况是多么容易。在实践中,我们可以根据需要迭代整个设计过程,直到我们有优化的设计。
现在让我们重新运行模拟。有了这个聪明的决策逻辑,总能源成本下降了2%。这是因为现在我们在恶劣天气时对电池的使用更加保守。
同时,更保守的使用模式会导致电池存储能量的峰值更高。事实上,我们应该在过于激进和过于保守的使用电池之间找到平衡。在任何一种情况下,状态流都可以帮助我们评估决策逻辑并识别潜在的缺陷。
我们已经使用statflow根据系统的当前状态对决策逻辑进行建模和模拟。你也可以。现在您已经对使用statflow是什么感觉了,是时候学习它了。
学习状态流的最好方法就是使用它。所以,启动statflow OnRamp,它会教你基本知识。这是免费的,只需要几个小时。欢迎来到Stateflow。
您还可以从以下列表中选择一个网站:
选择中国网站(以中文或英文)以获取最佳网站性能。其他MathWorks国家网站未优化您的位置。