主要内容

本页翻译不是最新的。点击此处可查看最新英文版本。

Stateflow API 概述

R2026a

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

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

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

  • 生成模型的专用报告。

Stateflow API 由表示 Stateflow 图的图形对象和非图形对象的对象组成。例如,API 对象 Stateflow.State 和 Stateflow.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.Chart、Stateflow.StateTransitionTableChart、Stateflow.TruthTableChart 和 Stateflow.EMChart 对象分别表示 Stateflow 图、State Transition Table 模块、Truth Table 模块和 MATLAB Function 模块。此层次结构级别中的对象可以包含表示状态、函数、框、数据、事件、消息、转移、结点、entry 和 exit 端口以及注解的对象。

  • 状态、函数和框 - 此层次结构级别包括分别表示状态、函数和框的 Stateflow.State、Stateflow.Function 和 Stateflow.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 Chart和Create 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。

另请参阅

函数

对象

主题