主要内容

指定 Stateflow 数据的作用域和类型

数据类型定义信息在计算机内存中的存储格式。数据类型影响 Stateflow® 图的三个关键方面:

  • 分配给数据的存储空间量。

  • 如何将数据值转换为二进制模式。

  • 可对数据执行的运算集。

使用数据类型来优化图的资源使用,并确保软件应用程序正确处理图数据。

在 Stateflow 中,您通过数据的类型、作用域和模式来定义数据。数据类型是数据在系统中存储的特定方式。例如,您可能有 doublesingle 数据类型。作用域是数据在 Stateflow 图中的操作方式。例如,输入数据是 Simulink® 输入到 Stateflow 中的数据,而局部数据是源自 Stateflow 并停留在其内的数据。模式指定您可以选择的类型子集。例如,如果模式为 Inherited,则数据从 Simulink 中获取信息,但如果模式为 Expression,则数据信息取决于您输入的表达式。仅当使用数据类型助手时才能指定模式。

您可以在属性检查器中指定数据类型。在类型字段中,从下拉列表中选择一种类型,或输入一个计算结果为数据类型的表达式。有关详细信息,请参阅设置数据属性

Simulink 对象继承数据类型

当您将类型下拉列表设置为继承:与 Simulink 相同时,作用域为输入输出参数数据存储内存的数据对象从 Simulink 对象继承其数据类型。如果您预计数据是某特定类型,请不要将类型设置为继承:与 Simulink 相同

作用域描述
输入从连接到图中对应输入端口的 Simulink 输入信号继承类型。
输出

从连接到图中对应输出端口的 Simulink 输出信号继承类型。

参数从对应的 MATLAB® 基础工作区变量、Simulink 数据字典条目或封装子系统中的 Simulink 参数继承类型。
数据存储内存从对应的 Simulink 数据存储中继承类型。

要确定对象继承的数据类型,请执行以下操作:

  1. 编译 Simulink 模型。

  2. 打开模型资源管理器。

  3. 内容窗格中,检查 CompiledType 列。

从其他数据对象派生数据类型

您可以使用 type 运算符从其他 Stateflow 数据对象中派生数据类型。例如,模型 sf_bus_demo 使用输入结构体 inbus 的数据类型定义局部结构体 counterbus_struct 的数据类型。此结构体通过以下表达式来定义:

type(inbus)

Property Inspector for sf_bus_demo.

由于 inbusSimulink.Bus 对象 COUNTERBUS 派生其类型,counterbus_struct 也从 COUNTERBUS 派生其数据类型。

有关此示例的详细信息,请参阅在 Stateflow 图中集成自定义结构体

使用 Simulink 别名指定数据类型

可以通过使用 Simulink 数据类型别名来指定 Stateflow 数据的类型。有关详细信息,请参阅 Simulink.AliasType (Simulink)

例如,假设您要定义一个数据类型别名 MyFloat,它对应于内置数据类型 single。在 MATLAB 命令提示符处,输入:

MyFloat = Simulink.AliasType;
MyFloat.BaseType = "single";

要使用此别名指定数据类型,请打开 Stateflow 图,并在符号窗格中选择数据。然后,在属性检查器中,将类型设置为 MyFloat

在构建模型后,模型资源管理器的 CompiledType 列会显示编译后的仿真中所使用的类型。

另请参阅

(Simulink) | (Simulink) | (Simulink)

主题