主要内容

创造州流程执行图表MATLAB对象

将状态机编程与MATLAB的完整功能相结合®,创建一个独立的状态流®在模拟链接之外的图表金宝app®模型。使用扩展名保存独立图表.sfx.并将其作为MATLAB对象执行。通过使用图表动画和图形调试工具来优化您的设计。

使用独立图表,您可以创建MATLAB应用程序,例如:

可以在不需要状态流许可证的情况下共享和执行这些应用程序。有关更多信息,请参阅分享独立图表

构建独立图表

要构建独立状态溢图表,请使用“打开状态溢编辑器”编辑功能。例如,在MATLAB命令窗口中,输入:

编辑Chart.sfx.
如果是文件Chart.sfx.不存在,StateFlow Editor与名称打开一个空图表图表.否则,编辑器将打开由此定义的图表SFX.文件。

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

帮助Chart.sfx.

要从MATLAB命令窗口关闭独立图表,请使用sfclose.功能:

sfclose.图表

创建一个州流程图对象

要在MATLAB中执行独立图表,请首先创建一个StateFlow Chart对象。使用名称SFX.作为函数的独立图表的文件。将数据的初始值指定为名称值对。例如,此命令创建图表对象chartObject,初始化data1.data2.,并执行其默认转换:

ChartObject = Chart('data1',value1,'data2',value2)

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

DISP(ChartObject)

执行独立的图表

定义statflow图表对象后,可以通过调用一步功能(如果需要,具有数据值):

步骤(图表,'data1',value1,'data2',value2)

或者,您可以调用其中一个输入事件函数:

event_name(图表,'data1',value1,'data2',value2)

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

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

function_name(chartObject,U1,U2)

笔记

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

您可以执行独立的图表而无需打开状态溢编辑器。如果图表已打开,则extenflow编辑器突出显示活动状态并通过图表动画转换。

出于调试和单元测试的目的,您可以直接从equenflow编辑器执行独立图表。在执行期间,您可以从用户界面输入数据值和广播事件。有关更多信息,请参阅执行和单元测试状态流程图对象

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

停止图表执行

要停止执行图表,请通过调用来销毁图表对象删除功能:

删除(chartObject)

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

清晰的chartObject

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

分享独立图表

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

如果您的合作者具有比您的MATLAB的相同或更高版本的MATLAB,它们可以在不打开StateFlow Editor的情况下将您的独立图表作为MATLAB对象执行。不支持图表动画和调试。金宝app运行时错误消息不会链接到错误发生的图表中的状态或转换。

笔记

要运行在R2019A或R2019B中保存的独立图表,您的合作者必须具有相同版本的MATLAB。

如果您的合作者有早期版本的MATLAB,则将独立图表导出到他们可以使用的格式。您只能导出到R2019A及更高版本。要完成导出流程,您需要访问从中和向其导出的状态流的版本。

  1. 使用更高版本的extendflow,打开独立图表。

  2. 在这一点国家图表选项卡,选择保存>以前的版本

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

  4. 来自另存为类型列表,选择要导出图表的早期版本。

  5. 点击保存

  6. 使用早期版本的extendflow,打开并重新定位导出的图表。

要从MATLAB命令窗口导出图表,调用statflow函数exportToVersion.有关更多信息,请参阅导出图表到MATLAB的早期版本

笔记

尝试在重新运行之前执行导出的图表将导致错误。

属性和功能州流程图表对象

stateflow chart对象通过提供以下方式封装单个结构中的数据和操作

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

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

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

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

图表对象配置选项

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

配置选项 描述 例子
- animationdelay. 指定图表动画用于突出显示每个转换段的延迟。默认值是0.01秒。要生成没有动画延迟的图表,请将其设置为零。

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

ChartObject = Chart(' -  animationdelay', 1)

-enableAnimation. 启用图表动画和调试仪表。默认值是真的

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

ChartObject = Chart(“-enableAnimation”,错误的)

-EpentQueule化 指定用于事件和时序逻辑操作的队列的大小。默认值是20..要禁用事件的排队,请设置为零。有关更多信息,请参阅独立图表中的事件

创建一个图表对象,忽略所有事件,如果图表正在处理另一个操作时,如果它们发生在此操作。

ChartObject = Chart(“-eventQueueSize”, 0)

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

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

ChartObject = Chart('-executeinitstep',错误的)

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

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

ChartObject = Chart(“-warningOnUninitializedData”,错误的)

图表数据的初始化

在“状态流编辑器”中,可以使用“符号”窗格为图表数据指定初始值。当您创建图表对象时,图表数据将根据其范围按字母顺序初始化。常量数据首先初始化。本地数据最后初始化。

如果您使用表达式来指定初始值,则图表将尝试通过以下方式解析表达式:

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

  • 调用搜索路径上的函数。

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

  • 如果图表有一个常数调用yy初始化之前X.本地数据X被赋与相同的初始值y

  • 如果图表有一个本地数据称为yX初始化之前y.本地数据X分配给空数组。如果配置选项-warningonuninitializeddata.被设置为真的发生警告。

  • 如果图表没有命名数据yX通过调用函数进行初始化y.如果是文件y不在搜索路径上,发生此错误:

    未定义的功能或变量'y'。

StateFlow不搜索MATLAB工作区以解析初始值,因此即使存在调用变量,也会发生此错误y在MATLAB的工作空间。

能力和限制

金宝app支持的功能

  • 经典的图表语义用MATLAB作为动作语言。您可以使用MATLAB的全部功能,包括那些在Simulink中被限制用于代码生成的功能。金宝app看通过脚本和模型执行StateFlow Chart对象

    笔记

    在独立的状态流程图中,操作系统命令符号!!不受支持。金宝app要执行操作系统命令,请使用该函数系统

  • 用层次结构独占(或)和并行(和)状态分解。看状态分解国家层次结构

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

  • 使用模式向导将MATLAB代码转换为图形功能。看将MATLAB代码转换为StateFlow流程图

  • 图表局部和常量数据,不受类型限制。看执行和单元测试状态流程图对象

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

  • 运营商焕然一新哈桑累赘, 和哈曼呼吸检测本地数据值的更改。

    笔记

    独立状态溢图不能支持在结构中的矩阵元素或结构中的元素上的更改检测。金宝app

  • 时间逻辑运算符:

    • , 和每一个在输入事件的数量上运行,图表调用(打钩)和绝对时间()。在状态下使用这些运营商动作和作为过渡触发器。

    • 数数操作图表调用数量(打钩)。

    • internalalcount.在绝对的时间内运作(MSEC., 和购买)。

    • 过去在绝对的时间内运作()。

    独立图表在壁钟时间方面定义绝对时间逻辑,限制为1毫秒的精度。

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

    州= getActiveStates (chartObject)

  • 状态流函数ExportasClass.将独立图表导出为等效的MATLAB类。使用此函数来调试难以诊断的运行时错误。例如,假设您在执行控制MATLAB应用程序的状态流图表时遇到错误。如果将图表导出为Matlab类文件,则可以使用应用程序中的类替换图表并使用MATLAB调试器诊断错误。导出图表Chart.sfx.作为类文件图解为.., 进入:

    Stateflow.exportAsClass ('chart.sfx'
    执行MATLAB类时,状态溢编辑器不会为原始图表设置动画。

限制

Simulink特有内容:金宝app

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

  • C动作语言。

  • 金宝appSimulink函数和Simulink子系统作为状态。

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

  • 数据存储内存数据。

  • 输出和本地事件。

  • 输入,输出和本地消息。

其他限制:

  • 没有肉眼或摩尔语义。

  • 没有状态转换表。

  • 没有真理表函数。

  • 没有状态 - 父为本地数据或函数。

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

也可以看看

|||||

相关话题