Main Content

设置数据属性

当您在 Simulink® 中创建 Stateflow® 图时,可以在属性检查器中或在模型资源管理器中修改数据属性。

要使用属性检查器,请执行以下操作:

  1. 建模选项卡的设计数据下,选择符号窗格属性检查器

  2. 符号窗格中,选择数据对象。

  3. 属性检查器中,编辑数据属性。

要使用模型资源管理器,请执行以下操作:

  1. 建模选项卡的设计数据下,选择模型资源管理器

  2. 模型层次结构窗格中,选择数据对象的父级。

  3. 内容 窗格中,选择数据对象。

  4. 对话框窗格中,编辑数据属性。

您还可以通过使用 Stateflow.Data 对象以编程方式修改这些属性。有关 Stateflow 编程接口的详细信息,请参阅 Overview of the Stateflow API

属性根据数据对象的作用域和类型而有所不同。对于许多数据属性,可以输入表达式或参数值。若使用参数为多个数据对象设置属性,您通过更改单个参数即可更新多个属性,从而简化了模型维护。

Stateflow 数据属性

您可以在以下位置设置这些数据属性:

  • 属性检查器属性选项卡。

  • 模型资源管理器的常规选项卡。

名称

数据对象的名称。有关详细信息,请参阅命名 Stateflow 对象的规范

作用域

数据在内存中的驻留位置(相对于其父级)。

设置描述
局部

仅限当前图中定义的数据。

常量

只读常量值,对父级 Stateflow 对象及其子级可见。

参数

一种常量,其值在 MATLAB® 基础工作区定义,或从您在父级封装子系统中定义和初始化的 Simulink 模块参数派生而来。Stateflow 数据对象必须与 MATLAB 变量、Simulink 数据字典条目或 Simulink 参数名称相同。有关详细信息,请参阅与 Simulink 和 MATLAB 工作区共享参数

输入

父级为图形函数、真值表或 MATLAB 函数时,函数的输入参量。其他情况下,Simulink 模型会通过 Stateflow 模块上的输入端口为图提供数据。有关详细信息,请参阅与 Simulink 共享输入和输出数据

输出

父级为图形函数、真值表或 MATLAB 函数时,函数的返回值。其他情况下,图通过 Stateflow 模块上的输出端口为 Simulink 模型提供数据。有关详细信息,请参阅与 Simulink 共享输入和输出数据

数据存储内存

绑定到 Simulink 数据存储的数据对象,这是一个与全局变量的作用类似的信号。模型中的所有模块都可以访问该信号。该绑定可以让图读取和写入 Simulink 数据存储,与模型共享全局数据。Stateflow 对象必须与 Simulink 数据存储名称相同。有关详细信息,请参阅Access Data Store Memory from a Chart

临时

仅在函数执行期间存留的数据。您只能在使用 C 语言作为动作语言的图中为图形函数、真值表或 MATLAB 函数定义临时数据。

端口

与数据对象关联的端口的索引。此属性仅适用于输入和输出数据。请参阅与 Simulink 共享输入和输出数据

更新方法

指定变量是以离散还是连续时间形式更新。仅当图配置为连续时间仿真时,此属性才适用。请参阅Continuous-Time Modeling in Stateflow

数据必须解析为信号对象

指定输出数据或局部数据从 MATLAB 基础工作区或 Simulink 模型工作区中同名的 Simulink.Signal 对象显式继承属性。数据可以继承以下属性:

  • 大小

  • 复/实性

  • 类型

  • 单位

  • 最小值

  • 最大值

  • 初始值

  • 存储类

  • 采样模式(Truth Table 模块输出数据)

仅当将模型配置参数信号解析设置为除以外的值时,此选项才可用。有关详细信息,请参阅解析 Simulink 信号对象的数据属性

大小

数据对象的大小。大小可以是标量值或 MATLAB 值向量。

  • 要指定标量,请将大小属性设置为 1,或将该字段留空。

  • 要指定 n×1 列向量,请将大小属性设置为 n

  • 要指定 1×n 行向量,请将大小属性设置为 [1 n]

  • 要指定 n×m 矩阵,请将大小属性设置为 [n m]

  • 要指定 n 维数组,请将大小属性设置为 [d1 d2dn],其中 di 是第 i 维的大小。

  • 要将 Stateflow 数据对象配置为从对应的 Simulink 信号或从它在图中的定义继承其大小,请指定大小为 –1

数据对象的作用域决定可以指定的大小。Stateflow 数据存储内存从它所绑定到的 Simulink 数据存储继承所有其属性,包括大小。对于所有其他作用域,大小可以是变量、向量或 N 维矩阵。有关详细信息,请参阅指定 Stateflow 数据的大小

您可以通过计算结果为有效大小设定的 MATLAB 表达式来指定数据大小。有关详细信息,请参阅使用表达式指定数据大小使用 MATLAB 表达式指定数据属性

可变大小

指定数据对象在仿真期间更改大小。仅当您启用图属性支持可变大小数组时,此选项才可用。有关详细信息,请参阅Declare Variable-Size Data in Stateflow Charts

复/实性

指定数据对象是否接受复数值。

设置描述
关闭数据对象不接受复数值。
打开数据对象接受复数值。
继承数据对象从 Simulink 模块继承复/实设置。

默认值为关闭。有关详细信息,请参阅Complex Data in Stateflow Charts

第一个索引

数据数组第一个元素的索引。第一个索引可以是任何整数。默认值为 0。此属性仅可用于 C 语言状态图。

类型

数据对象的类型。指定数据类型:

此外,在模型资源管理器中,您可以通过点击显示数据类型助手按钮 来打开数据类型助手。指定数据模式,然后根据该模式指定数据类型。有关详细信息,请参阅指定 Stateflow 数据的类型

注意

如果为定点数据类型输入表达式,必须显式指定定标值。例如,不可以在类型字段中输入不完整的设定,例如 fixdt(1,16)。如果不显式指定定标值,尝试进行模型仿真时会出现错误。

锁定数据类型以免定点工具更改

防止用 Fixed-Point Tool (Fixed-Point Designer) 选择的自动定标类型替换当前定点类型。有关详细信息,请参阅Iterative Fixed-Point Conversion Using the Fixed-Point Tool (Fixed-Point Designer)

单位(例如 m, m/s^2, N*m)

指定输入和输出数据的物理单位。有关详细信息,请参阅Specify Units for Stateflow Data

初始值

数据对象的初始值。对于常量数据,此属性称为常量值。用于指定此属性的选项取决于数据对象的作用域。

作用域为初始值指定
局部

在 Stateflow 层次结构、MATLAB 基础工作区或Simulink 封装子系统中定义的表达式或参数。要在将初始值字段留空的情况下指定初始值,请打开模型资源管理器或“数据”属性对话框,并将初始值下拉列表设置为表达式参数

  • 表达式 - 数值数据解析为默认值 0。对于枚举数据,默认值通常是定义的 enumeration 部分中列出的第一个值。您可以在定义的 methods 部分指定不同的默认枚举值。有关详细信息,请参阅Define Enumerated Data Types

  • 参数 - 数据对象解析为基础工作区中的同名变量。

默认设置为表达式

常量

常量值或表达式。更新图时,会计算该表达式。所得的值将作为用来运行图的常量值。

当您将常量值字段留空时,数值数据将解析为默认值 0。对于枚举数据,默认值通常是定义的 enumeration 部分中列出的第一个值。您可以在定义的 methods 部分指定不同的默认枚举值。有关详细信息,请参阅Define Enumerated Data Types

参数无法输入值。图会从参数继承初始值。
输入无法输入值。图会从指定端口上的 Simulink 输入信号继承初始值。
输出

在 Stateflow 层次结构、MATLAB 基础工作区或Simulink 封装子系统中定义的表达式或参数。要在将初始值字段留空的情况下指定初始值,请打开模型资源管理器或“数据”属性对话框,并将初始值下拉列表设置为表达式参数

  • 表达式 - 数值数据解析为默认值 0。对于枚举数据,默认值通常是定义的 enumeration 部分中列出的第一个值。您可以在定义的 methods 部分指定不同的默认枚举值。有关详细信息,请参阅Define Enumerated Data Types

  • 参数 - 数据对象解析为基础工作区中的同名变量。

默认设置为表达式

数据存储内存无法输入值。图会从它所解析为的 Simulink 数据存储继承初始值。

初始化的时间取决于 Stateflow 数据对象的数据父级和作用域。

数据父级

作用域

初始化时间

Stateflow 图

输入

不适用

输出、局部

开始仿真时,或 Stateflow 图重新初始化为 Simulink 使能子系统的一部分时

包含历史结点的状态

局部

开始仿真时,或 Stateflow 图重新初始化为 Simulink 使能子系统的一部分时

不包含历史结点的状态

局部

状态的 entry 动作

函数(图形函数、真值表函数和 MATLAB 函数)

输入、输出

调用函数调用子系统时

局部

开始仿真时,或 Stateflow 图重新初始化为 Simulink 使能子系统的一部分时

有关使用表达式指定初始值的详细信息,请参阅使用 MATLAB 表达式指定数据属性

限制范围

此数据对象的可接受值范围。Stateflow 图在仿真期间使用此范围验证数据对象。

  • 最小值 - 仿真期间数据项允许的最小值。您可以输入计算结果为数字标量值的表达式或参数。

  • 最大值 - 仿真期间数据项允许的最大值。您可以输入计算结果为数字标量值的表达式或参数。

可以在最小值中设置的最小值为 -inf。可以在最大值中设置的最大值为 inf

您可以通过 MATLAB 表达式指定最小值和最大值。有关详细信息,请参阅使用 MATLAB 表达式指定数据属性

注意

Simulink 模型使用最大值最小值属性来计算定点数据类型的最佳精度定标。在选择计算最佳精度定标之前,要先指定最小值或最大值。有关详细信息,请参阅计算最佳精度定标

定点数据属性

在“模型资源管理器”中,当您将数据类型助手的模式 设置为定点时,数据类型助手会显示相应字段供您指定该定点数据的其他信息。

Data Type Assistant showing the fields used to specify fixed-point data.

符号性

指定定点数据是有符号还是无符号。有符号数据可以表示正值和负值。无符号数据只能表示正值。默认设置为有符号

字长

指定存储量化整数的字的位大小。较大的字长代表较大的值,其精度也高于较小的字长。默认值为 16。

  • 对于以下作用域的图级别数据,字长可以是 0 到 128 之间的任何整数:

    • 输入

    • 输出

    • 参数

    • 数据存储内存

  • 对于其他 Stateflow 数据,字长可以是 0 到 32 之间的任何整数。

您可以通过 MATLAB 表达式指定字长。有关详细信息,请参阅使用 MATLAB 表达式指定数据属性

定标

指定定点数据的定标方法,以避免发生溢出情况并最大限度地减少量化错误。默认定标方法是二进制小数点

设置描述
二进制小数点

如果选择此模式,数据类型助手将显示小数长度字段,以指定二进制小数点位置。

小数长度可以是任何整数。默认值为 0。正整数将二进制小数点从最右侧位左移指定位数。负整数将二进制小数点从最右侧位右移。

Schematic showing the relationship between the word length and fraction length properties for fixed-point data.

斜率和偏置

如果选择此模式,数据类型助手将显示用于为定点编码方案输入斜率偏置值的字段。

斜率可以是任何正实数。默认值为 1.0。

偏置 可以是任何实数。默认值为 0.0。

您可以输入表达式形式的斜率和偏置,表达式中包含在 MATLAB 基础工作区中定义的参数。

应尽可能使用二进制小数点定标,以简化定点数据在生成的代码中的实现。采用二进制小数点定标的定点数据运算只需进行简单的位移,不需要为单独的斜率和偏置值执行代价高昂的代码实现。有关定点定标的详细信息,请参阅定标 (Fixed-Point Designer)

您可以通过 MATLAB 表达式指定小数长度斜率偏置。有关详细信息,请参阅使用 MATLAB 表达式指定数据属性

数据类型覆盖

指定是否继承应用于此模型的定点工具的数据类型覆盖设置。如果数据不继承模型范围的设置,将应用指定的数据类型。

计算最佳精度定标

指定是否根据最小值最大值属性中的值为二进制小数点斜率和偏置定标计算最佳精度值。

要计算最佳精度的定标值,请执行以下操作:

  1. 指定最大值最小值属性。

  2. 点击计算最佳精度定标

最佳精度定标值显示在小数长度字段或斜率偏置字段中。有关详细信息,请参阅Maximize Precision (Fixed-Point Designer)

注意

最大值最小值属性不适用于常量参数作用域。对于常量,Simulink 软件会基于初始值设置计算定标值。软件无法为参数作用域的数据计算最佳精度定标值。

定点详细信息

显示在数据类型助手中定义的定点数据类型的相关信息:

  • MinimumMaximum 显示的值与您在最小值最大值属性中指定的值相同。

  • Representable minimumRepresentable maximumPrecision 显示定点数据类型可以表示的最小值、最大值和精度。

如果在未事先编译模型的情况下无法确定某个字段的值,定点详细信息子窗格会将该值显示为 Unknown

Fixed-point details subpane showing the maximum and minimum values for the data object data.

如果更改定义定点数据类型的值,定点详细信息子窗格显示的值不会自动更新。要更新定点详细信息子窗格显示的值,请点击刷新详细信息

点击刷新详细信息不会修改模型。它仅更改显示。要应用显示的值,请点击应用确定

定点详细信息子窗格指示定点数据类型设定导致的错误。例如,下图显示两个错误。

Fixed-point details subpane showing two specification errors because the data object has invalid maximum and minimum values.

标记为 Maximum 的行指示由最大值属性指定的值无法以定点数据类型表示。要更正错误,请进行以下某项修改,以使定点数据类型能够表示最大值:

  • 减小最大值属性中的值。

  • 增大字长值。

  • 减小小数长度值。

标记为 Minimum 的行显示错误 Cannot evaluate,因为计算由最小值属性指定的表达式 MySymbol 不会返回数值。如果表达式未计算成功,定点详细信息子窗格会将未计算成功的表达式(视需要截断为 10 个字符)显示在不可用值的位置。要更正此错误,可以在 MySymbol 基础工作区定义并提供数值。如果点击刷新详细信息,错误指示符和描述将消失,并且 MySymbol 的值出现在未计算文本的位置。

记录属性

您可以在以下位置设置数据的记录属性:

  • 属性检查器属性选项卡。

  • 模型资源管理器的记录选项卡。

记录信号数据

是否启用信号记录。在仿真期间,信号记录将数据对象的值保存到 MATLAB 工作区。有关详细信息,请参阅Log Simulation Output for States and Data

记录名称

用于记录数据对象的信号名称。

  • 要使用数据对象的名称,请选择使用信号名称(默认值)。

  • 要指定不同名称,请选择自定义并输入自定义记录名称。

将数据点限制为最后

是否将要记录的数据点数限制为指定的最大值。例如,如果将最大数据点数设置为 5000,则图仅记录仿真生成的最后 5000 个数据点。

抽取

是否通过使用指定的抽取间隔跳过某些采样来限制记录的数据量。例如,如果将抽取间隔设置为 2,图将每隔一个采样记录一次。

测试点

是否将数据对象设置为可以在仿真期间使用浮动示波器监控的测试点。您还可以将测试点值记录到 MATLAB 工作区。有关详细信息,请参阅Monitor Test Points in Stateflow Charts

其他属性

您可以在以下位置设置其他数据属性:

  • 属性检查器信息选项卡。

  • 模型资源管理器的描述选项卡。

将最终值保存到基础工作区

在仿真结束时将数据对象的值赋给 MATLAB 基础工作区中具有相同名称的变量。此选项仅在使用 C 语言作为动作语言的图的模型资源管理器中可用。有关详细信息,请参阅模型工作区 (Simulink)

单位

与数据对象关联的测量单位。此字段中的单位会与数据对象一起保留在 Stateflow 层次结构中。此属性仅在 C 语言状态图的模型资源管理器中可用。

描述

数据对象的描述。

文档链接

数据对象的在线文档链接。您可以输入 Web URL 地址或者将文档显示为 HTML 文件或 MATLAB 命令行窗口中的文本的 MATLAB 命令。点击文档链接超链接时,Stateflow 会计算该链接并显示该文档。

默认数据属性值

当您将属性字段留空时,Stateflow 将采用默认值。

属性默认值
大小

−1(继承),用于输入、参数和函数输出

1(标量),用于其他数据对象

第一个索引0
初始值0.0
限制范围最小值-inf
 最大值inf
定点数据属性字长16
 小数长度0
 斜率1.0
 偏置0.0

使用 MATLAB 表达式指定数据属性

属性检查器和模型资源管理器中,可以输入 MATLAB 表达式作为以下属性的值:

表达式可以是数值、常量、参数、变量、算术运算、参数、常量、算术运算符以及 MATLAB 函数调用的组合。例如,您可以使用以下函数来指定数据属性。

属性 函数描述
大小size返回数据对象的大小
类型type返回数据对象的类型
fixdt (Simulink)返回描述定点或浮点数据类型的 Simulink.NumericType 对象
fi (Fixed-Point Designer)返回定点数值对象
最小值min返回数组中最小的一个或多个元素
最大值max返回数组中最大的一个或多个元素

有关详细信息,请参阅使用表达式指定数据大小从其他数据对象派生数据类型

另请参阅

对象

函数

工具

相关主题