主要内容

执行和单元测试Stateflow图表对象

一个独立的Stateflow®chart是一个MATLAB®定义有限状态机的行为的类。独立图表使用MATLAB实现Classic Chart语义作为动作语言。您可以使用MATLAB的完整功能来编程图表,包括限制在Simulink中代码生成的函数金宝app®.有关更多信息,请参见创建用于执行的状态流图作为MATLAB对象

独立状态流程图的示例

该文件sf_chart.sfx包含独立的状态流程图sf_chart..图表中有当地的数据ux, 和y

这个例子展示了如何在statflow编辑器和MATLAB命令窗口中执行这个图表。

执行独立图表Stateflow编辑器

要对独立图表进行单元测试和调试,您可以直接从statflow Editor执行图表。在执行期间,您输入数据值并从用户界面广播事件。

  1. 在状态流编辑器中打开图表:

    编辑sf_chart.sfx

  2. 在“符号”窗格中,输入值为u= 1并点击运行.图表执行它的默认过渡和:

    • 初始化x值为0。

    • 制定州一个活动状态。

    • 分配y价值1。

    • 增加…的价值x到1。

    图表动画突出显示了活动状态一个.符号窗格显示这些值u= 1x= 1, 和y= 1.该图表在下一个执行命令之前维护其当前状态和本地数据。

  3. 点击一步.因为u不满足条件(u < 0)过渡州一个,此状态保持活动,且值xy增加到2.符号窗格现在显示值u= 1x= 2, 和y= 2

  4. 在“符号”窗格中,输入值为u=−1并点击一步.负数据值触发到状态的转换B.符号窗格显示这些值u=−1x= 1, 和y= 3

  5. 您可以在符号窗格中修改任何图表数据的值。例如,输入值x= 3.图表将在下一个时间执行步骤中使用该数据值。

  6. 输入值为u= 2并点击一步.图表转换回状态一个.符号窗格显示这些值u= 2x= 4, 和y= 5

  7. 要停止图表动画,请单击停止

要中断执行并逐步执行图表中的每个操作,请在执行图表之前添加断点。有关更多信息,请参见调试独立状态流图表

中执行独立图表MATLAB

您可以在MATLAB中执行一个独立的图表,而不需要打开statflow编辑器。如果图表是打开的,那么编辑器将通过图表动画突出显示活动状态和转换。

  1. 在状态界编辑器中打开图表。在MATLAB命令窗口中,输入:

    编辑sf_chart.sfx

  2. 的名称创建状态流程图对象自解压文件为独立图表作为一个函数。指定数据的初始值u作为名称-值对。

    s = sf_chart (“u”1)
    Stateflow图表执行函数y = step(s) Local Data u: 1 x: 1 y: 1 Active States: {'A'}
    此命令创建图表对象年代,执行默认转换,并初始化xy.状态流编辑器激活图表并突出显示活动状态一个

  3. 要执行图表,调用一步功能。例如,假设您称之为一步函数的值为u= 1

    步骤(年代,“u”1)
    disp (s)
    Stateflow图表执行函数y = step(s) Local Data u: 1 x: 2 y: 2 Active States: {'A'}
    因为u不满足条件(u < 0)过渡州一个,此状态保持活动,且值xy增加到2。

  4. 再次执行图表,这次使用值为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。

  5. 要访问任何图表数据的值,请使用点表示法。例如,您可以将值3分配给本地数据x通过输入:

    s.x = 3
    Stateflow图表执行函数y =步骤(s)本地数据U:-1 x:3 y:3活动状态:{'b'}
    独立图表将在下次执行步骤中使用此数据值。

  6. 执行值为的图表u= 2

    步骤(年代,“u”2)
    disp (s)
    Stateflow图表执行函数y = step(s) Local Data u: 2 x: 4 y: 5 Active States: {'A'}
    图表转换回状态一个并修改的值xy

  7. 若要停止图表动画,请删除Stateflow图表对象年代

    删除(年代)

执行多个图表对象

您可以执行由同一个独立图表定义的多个图表对象。并发图表对象独立地维护其内部状态,但仍与编辑器中的相同图表相关联。图表动画反映了图表对象最近执行的状态。在打开状态流编辑器时执行多个图表对象可能会产生令人困惑的结果,因此不建议执行。

另请参阅

||

相关话题