埃德•马尔克斯MathWorks
发现使用状态流的基础知识®通过走过一个例子。您将学习如何模拟,模拟和测试监控控制器,该监控器确定建筑物是否使用电池或能量从电网中存储的能量。您还将了解如何从头开始构建状态图,将状态连接为条件转换,添加流程图决策逻辑,然后使用动画运行模拟以确保模型正常工作。
在完成示例之后,您将了解statflow如何只是基于模型的设计(Model-Based Design)的一部分,用于建模、模拟、测试和实现真实系统。
statflow是一个图形化的环境,允许您为主管控制、任务调度和故障管理应用程序设计和模拟决策逻辑。本视频将向您展示statflow的基础知识,并让您了解如何使用它来建模决策逻辑。最后,我们将向您展示下一步如何学习更多关于statflow的知识,并从今天开始使用它。让我们开始吧。
MathWorks在马萨诸塞州纳蒂克的总部屋顶安装了太阳能电池板。这些太阳能电池板可以帮助降低我们的电力成本和对化石燃料的依赖。事实上,它们提供了MathWorks所需能量的8%。
用电池配对太阳能电池板让我们收集太阳能,然后在我们想要的时候使用它。这些太阳能电池板产生的能量在每天都变化。这使得很难找到使用收集能量的最佳方式。
让我们假设我们的建筑使用200千瓦,面板将为3兆瓦时电池充电。当阳光不充足时,它可以作为缓冲器为大楼供电。现在我们需要决定什么时候使用电网,什么时候使用电池,这样我们就可以减少电费。我们需要代表所有这些运作模式,并决定何时在它们之间进行过渡。
幸运的是,我们有Stateflow,它可以完成所有这些甚至更多。每天的电价都不一样。如果我们可以用电池来避免最高的价格,它将为我们节省最多的钱。
基于现在的时间,我们希望成为两个操作模式之一。我们可以使用有限状态机代表这两个单独的状态。如果有足够的充电,我们将使用网格或电池。如果电池耗尽,我们将返回使用该网格。只有一个操作模式随时都会有效。
我们将用一个状态流程图来为有限状态机建模。硬件已经在Simulink中建模,所以我们可以加载模型并添加到它中。万博1manbetx该模型的输入数据是以瓦特为单位的太阳能电池板每15分钟采样一次。我们有一年的数据。这就是模拟的时间。
我们将用天气探测器利用这些数据来确定天气是否晴朗。我们还需要知道一天的时间。我们会根据电池电量做出决定。所以我们有一个电池的计划模型,我们用一个范围来监测储存的能量。
最后,我们将求解器设置为固定步长求解器,以匹配太阳数据的采样率。您可以在连续系统中使用statflow。但对于这样的决策逻辑,它通常是离散时间。
好的,所以涵盖了已经建造的一切。但是,我们需要做出关于何时使用电池以及何时使用电网的决定。我们怎样才能这样做?我们可以通过添加StateFlow图表来表示我们的决策逻辑。
首先,我们将从statflow库中拖拽一个图表块到模型中。现在让我们把信号连接到图表上,这样我们就可以在内部使用它们。由于我们的信号已经有了名称,我们可以将它们拖到图表块上。端口名称将被设置为信号名称。
当我们将另外两个信号拖到图表上时,将增加两个端口。它开始变得有点拥挤了,所以我们要调整图表块的大小。最后,我们将把这个图表块重命名为Building Manager。现在,我们准备构建我们的决策逻辑。在里面我们可以使用我们连接的所有信号。
我们建筑物内的能量系统可以在使用电网和电池之间切换。我们将代表这两个操作模式,使用称为使用网格的两个状态并使用电池。我们还需要通过添加默认转换,告诉StateFlow哪个状态在我们的模拟开始。
我们先从电网汲取电力。所以默认传输将进入使用网格状态。当我们在电池中收集了一些太阳能后,我们应该考虑切换到使用电池的状态。所以我们将允许使用电网和使用电池状态之间的传输通过连接它们。
在StateFlow中,我们可以使用Square括号来指定一个条件和卷曲括号来指定操作。每15分钟一次,我们需要决定是否在接下来的15分钟内使用电网或电池。为了减少总能源成本,让我们尽可能先使用电池。
为了满足200千瓦15分钟的电力需求,存储能量必须大于50千瓦时。因此,我们将使用这个条件来保护从使用网格状态到使用电池状态的过渡。如果我们使用电池而它储存的能量下降到50千瓦时以下,我们将再次使用电网。
接下来,让我们指定状态操作。在equenflow中,状态可以具有不同的操作类型,包括条目,期间和退出操作。如果在进入状态的路上发生某些东西,则执行进入操作。在行动期间在剩余状态时进行。退出行动在出路中执行。
进入使用电池状态时,我们将使用进入动作将电池使用率设置为200千瓦。在使用电池状态时,我们将使用退出动作将使用率设置为0.以后,我们将使使用率率为输出信号并使用其值来调整Simulink中的电池电量。万博1manbetx
使用这种电池没有成本,因为它的能量来自太阳。另一方面,当使用电网时,能源价格是0.20美元每千瓦时,意味着能源成本每15分钟将上涨10美元。因此,我们应该在进入或停留在使用网格状态时增加能量消耗。另外,不要忘记为成本指定一个0的初始值。
好了,第一个状态转变图就完成了。我们开了个好头,但还缺了点什么。每千瓦时0.20美元的电价仅在非高峰时段有效。在高峰时段,能源价格为0.30美元每千瓦时。
那么我们如何才能适应时间不同的价格?嗯,能够跟踪时间,我们所需要的只是另一个州过渡图。我们已经知道如何在州流中构建一个。通过,我们可以轻松了解能源价格基于使用时间。
现在我们有两个独立的任务,跟踪是非高峰时间还是高峰时间,以及管理能源。为了组织两者,我们将引入两个超状态,即时间和能量管理器。使用状态层次结构可以帮助我们更好地组织、组织和管理statflow中的决策逻辑。
缺省情况下,在任何给定级别中只能处于一个状态,这意味着状态流程图具有独占分解。这就是为什么StateFlow警告我们,我们没有默认转换。但实际上,我们在这个级别不需要一个。
我们希望同时跟踪时间和管理能源。我们把图表分解换成平行分解。我们称之为平行状态。但在现实中,事情必须以特定的顺序发生。statflow允许我们为每个并行状态指定执行顺序,这有助于避免决策逻辑中的歧义。
接下来,让我们检查这两个并行状态的执行顺序。为了能够计算能源成本,我们需要先知道当前时间。所以执行顺序已经是正确的。
现在我们跟踪了使用时间,我们可以简单地按照流程图来确定当前的能源成本。现在是高峰时间吗?如果是,那么能源成本将是15美元。如果没有,那么能源成本将是10美元。
好的,回到我们的状态流程图。让我们通过添加流程图来重新计算基于一天中的时间的能源成本。这一次,默认转换将我们带到一个路口,我们将从那里分支出来。我们可以使用in运算符来检测使用时间。
如果是在高峰时间,我们将采用第一个分支,操作是增加成本15。否则,我们将采用第二个分支并将成本增加10。就像并行状态一样,每个转换都有正确的执行顺序是很重要的。例如,如果这里的执行顺序是向后的,则永远不会检查右分支。
接下来,我们可以使用符号窗格定义我们图表中使用的符号。请注意,我们已经有三个输入符号,其对应于我们从顶级模型创建的三个输入端口。让我们点击解析未定义的符号。这将自动确认我们使用的符号,并根据它们的使用方式定义其数据范围。特别地,每个输入和输出数据符号将成为图表块的端口。
由于能源成本对我们很重要,因此通过将其数据范围更改为输出数据来使其成为输出信号。返回顶级模型,现在我们的状态流程图具有输出数据的输出端口。现在让我们添加一个显示块来捕获总能量成本并制作所有连接。在StateFlow中,我们可以轻松监视用于后模拟分析的活动状态数据。
由于我们有兴趣监测当天不同时间的能源使用情况,让我们记录两者的子弹。我们已准备好单击“运行”按钮来运行模拟。图表在模拟期间完全动画,因此我们可以在运行时看到我们的状态和过渡。
但我们如何确保我们的决策逻辑正常工作?让我们暂停模拟并减慢动画速度。我们此时正在使用该网格。我们可以看到我们处于峰值状态。到目前为止,我们的费用为4,855美元。
现在我们向前一步,看看我们的非高峰价格是10美元。当我们采取另一个步骤,我们过渡到峰值状态,然后我们收取的峰值价格是15.01美元。最后一步,我们已经过渡到使用电池状态。正如我们所料,我们的成本没有改变。
看起来我们的决策逻辑是正确的。让我们关闭动画并单击Continue来运行剩下的步骤。一旦模拟完成运行,我们可以从显示中看到总能量消耗。
让我们打开视野看看储存的能量是如何随时间变化的。我们可以在不同的阳光条件下观察到储存能量的强烈振荡。利用电池作为缓冲单元,我们成功地从太阳能电池板获得了更稳定的能源。
接下来,让我们打开模拟数据检查器。StateFlow为我们保存了活动状态数据的整个历史记录。顶部显示屏显示当前小时。它是高峰还是峰值?底部显示器告诉我们正在使用的能源,电网或电池。
在仔细研究这些状态活动之后,我们注意到决策逻辑的一个问题。让我们专注于这一天。从来回切换的情况我们可以看出,电池无法积累很多能量,所以那天一定是阴天。因此,我们不得不在高峰时段以非常高的价格使用电网。
在这一点上,我们后悔在能源价格低的时候使用电池。为了解决这个问题,我们可以添加一些附加条件。让我们等到峰值状态再使用电池。或者如果我们处于非高峰状态,我们只能在外面阳光充足的时候使用电池。
这样可以更有效地利用我们一天中收集到的有限的太阳能。这就是在statflow中修改决策逻辑的简单程度。在实践中,我们可以重复整个设计过程,直到我们有一个优化的设计。
现在让我们重新训练模拟。通过这种智能决策逻辑,总能源成本下降了2%。同样,这是因为现在我们在恶劣天气期间使用电池更保守。
同时,更保守的使用模式可以导致电池存储的能量中的更高峰值。实际上,我们应该尝试在使用电池的积极和过于保守地使用电池之间的平衡。在任何一种情况下,州流都可以帮助我们评估我们的决策逻辑并识别潜在的陷阱。
我们使用StateFlow来模拟和模拟决策逻辑,具体取决于我们的系统当前状态。你也可以。既然你有一种对州流的觉得是什么样的,现在是时候了解它了。
学习州流的最佳方法是使用它。因此,启动eventsflow ondramp,这将教授您的基础知识。它是免费的,只需要几个小时。欢迎来到州流。
你也可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。