一个独立的Stateflow®chart是一个MATLAB®类,该类定义有限状态机的行为。独立图表使用MATLAB作为操作语言实现经典图表语义。您可以使用MATLAB的全部功能对图表进行编程,包括在Simulink中限制代码生成的功能金宝app®.有关更多信息,请参见创建用于执行的状态流图作为MATLAB对象.
该文件sf_chart.sfx
包含独立的状态流程图sf_图
.图表中有当地的数据u
,x
和y
.
这个例子展示了如何在statflow编辑器和MATLAB命令窗口中执行这个图表。
要对独立图表进行单元测试和调试,您可以直接从statflow Editor执行图表。在执行期间,您输入数据值并从用户界面广播事件。
在状态流编辑器中打开图表:
编辑sf_chart.sfx
在“符号”窗格中,输入值为u
= 1并点击运行.图表执行它的默认过渡和:
初始化x
设置为0的值。
表明一个
活动状态。
分配y
将值设置为1。
增加…的价值x
对1。
图表动画突出显示活动状态一个
.符号窗格显示这些值u
= 1,x
= 1和y
= 1. 图表将保持其当前状态和本地数据,直到下一个执行命令。
点击一步.因为u
不满足条件(u < 0)
脱离州一个
,此状态保持活动,且值x
和y
增加到2。符号窗格现在显示值u
= 1,x
= 2和y
= 2.
在“符号”窗格中,输入值为u
=−1并点击一步. 负数据值触发状态转换B
.符号窗格显示这些值u
=−1,x
= 1和y
= 3.
您可以在“符号”窗格中修改任何图表数据的值。例如,输入值x
= 3.图表将在下一个时间执行步骤中使用该数据值。
输入值为u
= 2并点击一步.图表转换回状态一个
.符号窗格显示这些值u
= 2,x
= 4和y
= 5.
要停止图表动画,请单击停止.
要中断执行并逐步执行图表中的每个操作,请在执行图表之前添加断点。有关更多信息,请参见调试独立状态流程图.
您可以在MATLAB中执行一个独立的图表,而不需要打开statflow编辑器。如果图表是打开的,那么编辑器将通过图表动画突出显示活动状态和转换。
在Stateflow编辑器中打开图表。在MATLAB命令窗口中,输入:
编辑sf_chart.sfx
的名称创建状态流程图对象自解压
文件为独立图表作为一个函数。指定数据的初始值u
作为名称-值对。
s = sf_chart (“u”, 1)
Stateflow图表执行函数y = step(s) Local Data u: 1 x: 1 y: 1 Active States: {'A'}
年代
,执行默认转换,并初始化x
和y
.状态流编辑器激活图表并突出显示活动状态一个
.
要执行图表,调用一步
作用例如,假设您调用一步
函数的值为u
= 1:
步骤(年代,“u”, 1)
disp (s)
Stateflow图表执行函数y = step(s) Local Data u: 1 x: 2 y: 2 Active States: {'A'}
u
不满足条件(u < 0)
脱离州一个
,此状态保持活动,且值x
和y
增加到2。
再次执行图表,这次使用值为u
=−1:
步骤(年代,“u”,-1)
disp (s)
Stateflow图表执行函数y = step(s) Local Data u: -1 x: 1 y: 3 Active States: {'B'}
B
.的价值x
减小为1,并且y
增加到3。
要访问任何图表数据的值,请使用点表示法。例如,您可以为本地数据指定值3x
通过输入:
s.x = 3
Stateflow图表执行函数y=步骤本地数据u:-1x:3y:3活动状态:{'B'}
执行值为的图表u
= 2:
步骤(年代,“u”,2)
disp (s)
Stateflow图表执行函数y = step(s) Local Data u: 2 x: 4 y: 5 Active States: {'A'}
一个
并修改的值x
和y
.
若要停止图表动画,请删除Stateflow图表对象年代
:
删除(年代)
您可以执行由同一个独立图表定义的多个图表对象。并发图表对象独立地维护其内部状态,但仍与编辑器中的相同图表相关联。图表动画反映了图表对象最近执行的状态。在打开状态流编辑器时执行多个图表对象可能会产生令人困惑的结果,因此不建议执行。