执行和单元测试Stateflow图对象
一个独立的Stateflow®图是一个MATLAB®类,它定义有限状态机的行为。独立图表用MATLAB作为动作语言实现了经典的图表语义。您可以通过使用MATLAB的全部功能来编写图表,包括那些在Simulink中代码生成时受到限制的功能®.有关更多信息,请参见创建状态流图执行作为MATLAB对象.
独立状态流图的例子
该文件sf_chart.sfx
包含独立的状态流图sf_chart
.该图表有本地数据u
,x
,y
.
这个例子展示了如何从状态流编辑器和MATLAB命令窗口中执行这个图表。
控件执行独立图表Stateflow编辑器
要对独立图表进行单元测试和调试,可以直接从Stateflow 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
您可以在MATLAB中执行一个独立的图表,而无需打开状态流编辑器。如果图表是打开的,那么编辑器将通过图表动画突出显示活动状态和过渡。
在状态流编辑器中打开图表。在MATLAB命令窗口中,输入:
编辑sf_chart.sfx
控件的名称创建状态流图对象
自解压
文件作为函数获取独立图表。指定数据的初始值u
作为名称-值对。s = sf_chart (u = 1)
Stateflow图表执行函数y = step(s)本地数据u: 1 x: 1 y: 1活动状态:{'A'}
年代
,执行默认转换,并初始化的值x
而且y
.状态流编辑器使图表呈现动画效果,并突出显示活动状态一个
.要执行该图表,请调用
一步
函数。例如,假设您调用一步
函数的值u
= 1:步骤(s, u = 1)
disp (s)
Stateflow图表执行函数y = step(s)本地数据u: 1 x: 2 y: 2活动状态:{'A'}
u
不满足条件(u < 0)
移居:移居出州一个
时,此状态保持活动状态,值为x
而且y
增加到2。再次执行图表,这次的值为
u
=−1:步骤(s, u = 1)
disp (s)
Stateflow图表执行函数y = step(s)本地数据u: -1 x: 1 y: 3活动状态:{'B'}
B
.的价值x
减少到1和的值y
增加到3。要访问任何图表数据的值,请使用点表示法。例如,可以为本地数据分配值3
x
通过输入:s.x = 3
Stateflow图表执行函数y = step(s)本地数据u: -1 x: 3 y: 3活动状态:{'B'}
执行值为的图表
u
= 2:步骤(s, u = 2)
disp (s)
Stateflow图表执行函数y = step(s)本地数据u: 2 x: 4 y: 5活动状态:{'A'}
一个
的值x
而且y
.若要停止图表动画,请删除Stateflow图表对象
年代
:删除(年代)
执行多个图表对象
您可以执行由同一个独立图表定义的多个图表对象。并发图表对象独立地维护它们的内部状态,但仍然与编辑器中的同一个图表相关联。图表动画反映了图表对象最近执行的状态。在打开状态流编辑器的情况下执行多个图表对象可能会产生令人困惑的结果,不建议这样做。