Stateflow快速入门——构造和运行Stateflow图

 

Stateflow非常适合为有限状态机系统进行建模,有限状态机系统我们后续再学习。Sateflow基本组成要素为状态、转移及数据(数据、事件or消息),以上要素全部齐全且正确被联系在一起,stateflow才能够正确运行。

 

创建Chart

Chaart为stateflow编程的“画布”。打开Library,在Simulink中插入chart,即可进行开始建立模型了。

Android LiveData StateFlow SharedFlow Channel的作用 stateflow message_数据类型

Android LiveData StateFlow SharedFlow Channel的作用 stateflow message_数据类型_02

 

添加状态和转移

 

点击左侧state,即可向画布中放入框框,代表着不同的状态。

Android LiveData StateFlow SharedFlow Channel的作用 stateflow message_有限状态机_03

 

在框框的边缘点击,向外拖,即可出现箭头,用它将两个状态连接起来,即可创建转移。转移是一种行为,就是中间这个箭头。

Android LiveData StateFlow SharedFlow Channel的作用 stateflow message_simulink_04

 

添加数据

此处的on与off,是状态的名称,而其中的swi_tch为一个变量,因此需要在模型中添加这个变量,否则无法运行。点击Symbols Pane,右侧会弹出一个变量管理器。

Android LiveData StateFlow SharedFlow Channel的作用 stateflow message_simulink_05

可以看到管理器可以添加三种类型的变量,分别为数据、事件与消息。这里我们就不展开学习后面两个了,后面再结合更好地例子去学习。swi_tch这个变量,此处为一个数据。因此点击add data即可添加它了。

Android LiveData StateFlow SharedFlow Channel的作用 stateflow message_有限状态机_06

 

假如先画好了staflow,再想到添加变量,也很简单。如下,我新加入了一个word变量,还在pane中添加了一个data。可以看到一个标红,一个标黄了。

Android LiveData StateFlow SharedFlow Channel的作用 stateflow message_simulink_07

点击红色警告,stateflow会告诉你这个变量你加入了,但是没有定义,这时候点击右侧的fix即可解决。

Android LiveData StateFlow SharedFlow Channel的作用 stateflow message_simulink_08

Android LiveData StateFlow SharedFlow Channel的作用 stateflow message_数据_09

 

点击黄色警告,stateflow会告诉你这个变量没有被使用,问你要不要删除,这里根据需要进行选择即可。

Android LiveData StateFlow SharedFlow Channel的作用 stateflow message_数据类型_10

 

添加的数据,也是有类型之分的。如下,点击左侧的type图标,就会出现一些可以设置的数据类型。这些数据类型我们后续再结合实例慢慢学习。目前在这个模型里,swi_tch为一个只在stateflow内作用的变量,因此设置为loacal data。word是想要输出的,因此设置为output data,并给它一个输出接口。

Android LiveData StateFlow SharedFlow Channel的作用 stateflow message_数据类型_11

Android LiveData StateFlow SharedFlow Channel的作用 stateflow message_有限状态机_12

 

 

 

运行stateflow

完成状态、转移和数据的设定后,这时候点击运行,就可以看到两个状态间在不断地进行转移了,不断地激活off与on状态。

Android LiveData StateFlow SharedFlow Channel的作用 stateflow message_有限状态机_13

Android LiveData StateFlow SharedFlow Channel的作用 stateflow message_simulink_14

 

加入word输出变量后,就可以在外面看状态变化对外部的输出效果了(当然直接输出swi_tch也行)。可以看到随着状态机运行,外部能够接收stateflow送出的消息与其进行交互。

Android LiveData StateFlow SharedFlow Channel的作用 stateflow message_数据类型_15