主要内容

Stateflow API 概述

Stateflow® 应用程序编程接口 (API) 允许您从 MATLAB® 命令行窗口创建或更改 Stateflow 图。通过将 Stateflow API 命令放在 MATLAB 函数或脚本中,您可以:

  • 通过在单一命令中执行多个编辑步骤来自动化图修改操作。

  • 通过生成可作为应用程序模板重用的“基础”Stateflow 图来消除重复的图创建步骤。

  • 生成模型的专用报告。

Stateflow API 由表示 Stateflow 图的图形对象和非图形对象的对象组成。例如,API 对象 Stateflow.StateStateflow.Transition 表示 Stateflow 图中的状态和转移。当您修改 API 对象的属性或调用其对象函数之一时,您会影响 Stateflow 图中的对应对象。当您使用 Stateflow 编辑器对图中的对象执行操作时,您会影响对应的 API 对象。

注意

您无法撤消在 Stateflow 编辑器中使用 Stateflow API 执行的任何操作。如果您通过 API 执行编辑操作,快速访问工具栏中的撤消重做按钮将被禁用。

Stateflow API 对象的层次结构

Stateflow API 对象按包含层次结构进行组织。例如,如果状态 A 在 Stateflow 图中包含状态 B,则状态 A 的 API 对象包含状态 B 的 API 对象。Stateflow API 层次结构遵循与 Stateflow 对象层次结构相同的包含规则。例如,图可以包含状态,但状态不能包含图。有关详细信息,请参阅Stateflow 对象概述

下图显示了 Stateflow API 中对象的层次结构。

Diagram showing the four levels of the hierarchy of API objects.

该层次结构由四个包含级别组成:

  • - Simulink.Root 对象是所有 Stateflow API 对象的父级。它是 Stateflow API 层次结构顶部的占位符,用于将 Stateflow 对象与 Simulink® 模型中的其他对象区分开来。当您向 Simulink 模型添加 Stateflow 图、State Transition Table 模块、Truth Table 模块或 MATLAB Function 模块时,或当您加载包含这些模块之一的模型时,会自动创建 Simulink.Root 对象。

  • 状态机 - 从 Stateflow 的角度来看,Stateflow.Machine 对象等效于 Simulink 模型。Stateflow.Machine 对象包含表示模型中的 Stateflow 图、 State Transition Table 模块、Truth Table 模块和 MATLAB Function 模块的对象。

  • - Stateflow.ChartStateflow.StateTransitionTableChartStateflow.TruthTableChartStateflow.EMChart 对象分别表示 Stateflow 图、State Transition Table 模块、Truth Table 模块和 MATLAB Function 模块。此层次结构级别中的对象可以包含表示状态、函数、框、数据、事件、消息、转移、结点、entry 和 exit 端口以及注解的对象。

  • 状态、函数和框 - 此层次结构级别包括分别表示状态、函数和框的 Stateflow.StateStateflow.FunctionStateflow.Box 对象。这些对象可以包含表示状态、函数、框、数据、事件、消息、转移、结点、entry 和 exit 端口以及注解的其他对象。嵌套层次数可以无限多。

层次结构图显示存在于包含层次结构之外的两种对象类型:

访问 Stateflow API 对象

要使用 Stateflow API,您需要先访问 Simulink.Root 对象,它是 Stateflow API 中所有对象的父级。您使用 Simulink.Root 对象来访问模型中的其他 API 对象。例如:

  1. 通过调用函数 sfnew 创建一个具有空 Stateflow 图的 Simulink 模型。

    sfnew

  2. 使用函数 sfroot 访问 Simulink.Root 对象。

    rt = sfroot;

  3. 调用 find 函数以访问与模型中的图对应的 Stateflow.Chart 对象。

    ch = find(rt,"-isa","Stateflow.Chart");

  4. 调用 Stateflow.State 函数以向图添加状态。此函数返回与新状态对应的 Stateflow.State 对象。

    st = Stateflow.State(ch);

  5. 在 Stateflow 编辑器中显示新状态。

    view(st)

有关详细信息,请参阅Access Objects in Your Stateflow ChartCreate Charts by Using the Stateflow API

修改 API 对象的属性

API 对象具有与您在 Stateflow 编辑器中设置的值对应的属性。例如,要使用编辑器更改状态的位置,请点击并拖动该状态。使用 Stateflow API,您可以通过修改对应 Stateflow.State 对象的 Position 属性来更改状态的位置:

st.Position = [10 20 100 80];
有关详细信息,请参阅Modify Properties and Call Functions of Stateflow Objects

调用 API 对象函数

API 对象具有与 Stateflow 编辑器中的动作对应的函数。例如,要使用编辑器打开某项转移的“属性”对话框,请右键点击该转移并选择属性。使用 Stateflow API,您可以通过调用对应 Stateflow.Transition 对象的 dialog 函数来打开此对话框:

dialog(tr);
有关详细信息,请参阅Modify Properties and Call Functions of Stateflow Objects

另请参阅

函数

对象

主题