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