创建Stateflow图表对作为执行MATLAB对象

与MATLAB的全部功能结合状态机编程的优点®创建一个独立的状态®在Simulink外部绘制图表万博1manbetx®模型。保存独立的图表与扩展.sfx并将其作为MATLAB对象执行。通过使用图表动画和图形化调试工具改进设计。

有了独立的图表,你可以创建MATLAB应用程序,例如:

这些应用程序可以共享和执行,而不需要一个Stateflow许可。欲了解更多信息,请参阅分享独立图表

构建一个独立的图表

若要构造一个独立的Stateflow图表,请使用编辑功能。例如,在MATLAB命令窗口中输入:

编辑chart.sfx
如果该文件chart.sfx不存在,Stateflow的编辑器中打开一个空表的名称图表。否则,编辑器将打开由SFX文件。

保存独立图表后,将帮助功能显示有关MATLAB执行它的信息:

帮助chart.sfx

创建一个Stateflow图对象

为了执行在MATLAB独立图表,首先创建一个状态流图表对象。使用的名称SFX文件作为独立图表的一个函数。将数据的初始值指定为名称-值对。例如,该命令创建图表对象chartObject,初始化数据1DATA2,并执行其默认过渡:

chartObject =图表(“数据1”,值1,“数据2”,值2)

若要显示图表信息,例如执行的语法、图表数据的值和活动状态列表,请使用DISP功能:

disp (chartObject)

执行一个独立走势

定义Stateflow图表对象后,可以通过调用一步功能(带数据值,如有必要):

步骤(chartObject,“数据1”,值1,“数据2”,值2)

或者,你可以调用的输入事件的功能之一:

event_name (chartObject“数据1”,值1,“数据2”,值2)

在任一情况下,该值在图表执行之前分配给本地数据。

如果图表具有图形或MATLAB函数,可以直接在MATLAB命令窗口中调用它们。调用图表函数不会执行独立图表。

function_name (chartObject, u1, u2)

注意

如果你使用输入参数个数在图表中的图形或MATLAB功能,输入参数个数将图表对象作为输入参数之一计数。的价值输入参数个数无论是从图表还是从MATLAB命令窗口调用函数,都是相同的。

您可以在不打开Stateflow编辑器的情况下执行独立的图表。如果图表是打开的,那么Stateflow编辑器将通过图表动画突出显示活动状态和转换。

出于调试和单元测试的目的,就可以直接从状态流编辑器执行一个独立的图表。在执行过程中,你从用户界面输入数据值和广播事件。欲了解更多信息,请参阅执行和单元测试状态图对象

您可以从MATLAB脚本、Simulink模型或App Designer用户界面执行独立的图表。万博1manbetx有关更多信息,请参见:

停止表执行

若要停止执行图表,请通过调用删除功能:

删除(chartObject)

删除图表对象后,图表对象的任何句柄仍然保留在工作区中,但将变为无效。要从工作区删除无效句柄,请使用该命令清晰的

清晰的chartObject

如果清除了有效的图表对象句柄,并且同一图表对象还有其他句柄,则图表对象不会被销毁。例如,在执行图表时,Stateflow编辑器包含图表对象的内部句柄。从工作区清除图表对象句柄不会破坏图表对象或删除编辑器中突出显示的图表动画。要重置动画突出显示,右键单击图表画布并选择删除高亮

分享独立图表

您可以与没有Stateflow许可的协作者共享独立的图表。

如果您的合作者拥有与您相同的MATLAB版本,他们可以将您的独立图表作为MATLAB对象执行,而无需打开Stateflow编辑器。不支持图表动画和调试。万博1manbetx运行时错误消息不链接到发生错误的图表中的状态或转换。

如果您的合作者有MATLAB的早期版本,导出一个独立的图表到他们可以使用的格式。您只能导出到R2019a及其后续版本。要完成导出过程,您需要访问要从中导出到其中的Stateflow版本。

  1. 用Stateflow的的更新版本,打开独立图表。

  2. 状态图选项卡,选中保存>以前的版本

  3. 在导出到以前的版本对话框中,指定导出表的文件名。

  4. 保存类型列表中,选择要将图表导出到的较早版本。

  5. 点击保存

  6. 使用Stateflow的早期版本,打开并重新保存导出的图表。

要从MATLAB命令窗口导出图表,请调用Stateflow函数exportToVersion。欲了解更多信息,请参阅导出图表到MATLAB的早期版本

注意

试图重新保存它会导致错误之前执行导出的图表。

属性和功能Stateflow图对象

Stateflow图表对象通过提供以下功能将数据和操作封装在一个结构中:

  • 包含独立图表的内部状态变量的私有属性。

  • 一个一步调用实现图表语义的各种操作的函数。

图表对象可以具有与图表中出现的各种元素相对应的其他属性和函数。

独立图表元素 图表对象元素
本地和常量数据 公共属性
输入事件 执行图表的函数
图形和MATLAB函数 可以从MATLAB命令窗口调用的函数

图表对象配置选项

创建图表对象时,可以通过将这些配置选项作为名称-值对包含进来,从而指定图表行为。

配置选项 描述
-animationDelay 指定该图表动画使用以突出显示每个过渡段的延迟。默认值是0.01秒。若要生成没有动画延迟的图表,请将其设置为零。

通过指定一秒的延迟来创建具有缓慢动画的图表对象。

chartObject =图表(“-animationDelay”,1)

-enableAnimation 使图表动画和调试仪器。默认值是真正的

创建已禁用动画和调试仪器图表对象。

chartObject =图表(“-enableAnimation”假)

-eventQueueSize 指定用于事件和时态逻辑操作的队列的大小。默认值是20.。若要禁用事件队列,请将其设置为零。欲了解更多信息,请参阅独立图表中的事件

创建一个图表对象,如果它们发生的是忽略所有事件无预警当图表处理其他操作。

chartObject =图表(“-eventQueueSize”,0)

-executeInitStep 启用默认转换的初始执行。默认值是真正的

创建图表对象,但不执行默认转换。

chartObject =图表(“-executeInitStep”假)

-warningOnUninitializedData 在初始化图表对象后启用关于空图表数据的警告。默认值是真正的

在创建图表对象时消除警告。

chartObject =图表(“-warningOnUninitializedData”假)

图表数据的初始化

在Stateflow编辑器中,可以使用Symbols窗格指定图表数据的初始值。创建图表对象时,将根据其作用域按字母顺序初始化图表数据。常量数据首先被初始化。本地数据最后初始化。

如果你使用一个表达式来指定一个初始值,那么图表试图通过以下方法来解析该表达式:

  • 使用图表中其他数据的值。

  • 调用搜索路径上的功能。

例如,假设您为本地数据指定了一个初始值X通过使用表达式ÿ。然后:

  • 如果图中有一个叫做常数ÿÿ初始化之前X。本地数据X赋值是否与初始值相同ÿ

  • 如果图表调用了本地数据ÿX初始化之前ÿ。本地数据X被分配到一个空数组。如果配置选项-warningOnUninitializedData被设置为真正的,出现警告。

  • 如果图表没有命名数据ÿX是通过调用函数来初始化的吗ÿ。如果该文件y.m是不是在搜索路径,出现此错误:

    未定义的函数或变量'y'。

Stateflow的不搜索MATLAB的工作空间解决初始值,因此,即使有一个叫做变量发生此错误ÿ在MATLAB工作区中。

功能和限制

万博1manbetx支持的功能

  • 以MATLAB为操作语言的经典图表语义。您可以使用MATLAB的全部功能,包括Simulink中代码生成所限制的那些函数。万博1manbetx看到通过脚本和模型执行Stateflow图表对象

    注意

    在独立状态图中,操作系统命令符号不支持。万博1manbetx要执行操作系统命令,请使用该函数系统

  • 独家(OR)和并行(AND)状态分解与层次。看到状态分解国家层次

  • 流程图、图形函数和MATLAB函数。看到图表中的可重用组件

  • 通过使用模式向导MATLAB代码图形函数转换。看到将MATLAB代码转换成状态流程图

  • 不受类型限制的图表本地和常量数据。看到执行和单元测试状态图对象

  • 输入事件。看到利用状态图设计人机界面逻辑

  • 运营商焕然一新hasChangedFrom,hasChangedTo该检测本地数据的值的变化。

    注意

    独立的状态图不支持对矩阵中的元素或结构中的字段进行更改检测。万博1manbetx

  • 时序逻辑运算符:

    • ,每一个上的输入事件,图表调用次数操作(蜱虫)和绝对时间()。使用状态,这些运营商动作和作为转换触发器。

    • 计数运行在图表调用次数(蜱虫)。

    • temporalCount以绝对时间(毫秒,购买)。

    • 运行以绝对时间()。

    独立图表根据壁钟时间定义绝对时间时间逻辑,其精度限制为1毫秒。

  • 函数getActiveStates访问图表执行期间活动的状态。要将活动状态存储为单元格数组,请输入:

    州= getActiveStates (chartObject)

  • Stateflow函数exportAsClass,出口独立的图表为等效MATLAB类。使用此功能可以在其他方面难以诊断调试运行时错误。例如,假设你在执行状态流图表,其控制一个MATLAB应用遇到错误。如果您图表导出为MATLAB类文件,你可以在你的应用程序的类替换的图表,并通过使用MATLAB调试诊断错误。要导出图表chart.sfx作为一个类文件chart.m,请输入:

    Stateflow.exportAsClass ('chart.sfx'
    当你执行MATLAB类中,Stateflow的编辑器不动画原始图表。

限制

Simulink特有的内容:万博1manbetx

  • 采样时间和连续时间语义。

  • C动作语言。

  • 万博1manbetxSimulink的功能和Simulink子系统的状态。

  • 输入,输出,和参数数据。

  • 数据存储内存中的数据。

  • 输出和本地事件。

  • 输入,输出和本地邮件。

其他限制:

  • 没有米莉或摩尔语义。

  • 没有状态转换表。

  • 表函数。

  • 没有带状态的本地数据或函数。

  • 没有转换操作(在退出转换的源状态之后但在输入目标状态之前执行的操作)。

也可以看看

||||

相关的话题