Engee 文档
Notebook

构建和运行状态流程图

状态流图是由状态、转换和数据组成的有限自动机的图形表示。您可以创建一个图来确定系统如何对外部输入信号、事件和时间条件做出响应。

让我们来看看如何创建半波整流器的逻辑。

构建状态流程图

图中包含两个状态,分别标为。在状态下,图的输出信号y等于输入信号x。在Off状态下,输出信号为零。当输入信号越过某个阈值t0时,图表就会在这些状态之间转换。每个状态下的操作都会在模拟的每个时间步更新y的值。

请按照以下步骤创建并模拟此图。

打开编辑器

1.创建一个新模型,并在建模字段中添加一个图表块。

In [ ]:
engee.create("rectifier_start1", sync_gui=true)
Out[0]:
Model(
	name: rectifier_start1
	id: 1796d302-d597-4d00-9e82-cb975c02cb75
)
In [ ]:
engee.add_block("/StateMachines/Chart", "rectifier_start1/", sync_gui=true)
Out[0]:
"rectifier_start1/Chart"

2.双击图表框打开编辑器。

图表块编辑器的主要组件包括图表画布、对象面板和设置信号的设置面板。

  • 图表画布是通过组合状态和转换来创建图表的区域。
  • 画布左侧显示一个对象面板,您可以用它来制作图表。
  • 右上角有一个齿轮按钮。如果在编辑器中点击它,就会打开 "信号"部分。您可以在其中设置输入和输出信号,以及设置局部变量。

sc_chart.png

添加状态和转换

1.在对象面板中,选择状态对象并将其移动到图表画布上。此时会出现一个带有默认转换的状态。在文本框中输入状态名称 ,并在突出显示的大括号 y=x 中输入状态动作。

state_1_out_1_in_1732104094349.png

2.添加另一个状态。右键单击并拖动状态。将新状态的名称改为 "关闭"。双击该状态,将状态操作更改为 y = 0

state_1_out_1_in_1732104298320.png

3.将两个状态对象相邻放置,并用过渡将它们连接起来。要绘制过渡,请单击并拖动光标,从一个状态的边界到另一个状态的边界。当转换以蓝色高亮显示时,旁边就会出现一个菜单,用于添加转换的条件([])或转换期间将发生的操作({})。添加两个过渡

state_1_out_1_in_1732104359102.png

4.要为图表中的转换添加条件,请单击转换并在方括号中输入条件。将条件$x<t0$ 设置为从过渡到,将$x>=t0$ 设置为过渡回来。

state_1_out_1_in_1732104455350.png

5.处理状态图的附加功能

* 将每个过渡标记移动到相应过渡的上方或下方,以便更清晰地显示。 
* 按空格键调整图表大小以适应画布尺寸。

设置信号

在执行图表之前,必须定义图表中使用的每个符号并指定其范围(例如输入数据、输出数据或本地数据)。

单击右上角的齿轮打开设置选项卡。 2.2. 单击 + 号,添加所用信号的名称和类型。** 类型** 列显示了每个未定义符号的预期范围,具体取决于其在图中的用途。 3.定义要使用的变量,如下图所示。

image.png

模拟模型

要模拟一个模型,可通过输入和输出端口将图表模块连接到其他模型模块。

1.要返回 Engee 建模环境,请单击导航栏中的模型名称。

2.将源添加到模型中:

* 在**源**部分,添加一个正弦波块 - **正弦波**。
* 双击**正弦波**块,将采样时间设为 0.2。
* 将**正弦波**块的输出连接到状态图的输入端。
* 将信号指定为 **x**。

3.将接收器添加到模型中:

* 从 "接收器 "部分添加一个**终结器**模块。 
* 将图表模块的输出连接到**终结者**模块的输入。
* 将信号指定为 y。

4.写下信号

* 点击信号线。然后,指向三个点并点击 ![image.png](attachment:image.png).
* 记录 **x** 和 **y** 信号。

5.要开始模拟,请按 "Execute"!"(attachment:image_3.png)。模拟期间,活动状态和转换将突出显示。

显示结果

1.建模后,点击右上角的图表选项卡。 2.从信号菜单中选择xy信号。

image.png

  1. 您可以在一个图表或两个不同的图表上反映信号。

image.png

结论

仿真结果表明,整流器可滤除负输入值。