Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

设置数据属性

当您在 Simulink® 中创建 Stateflow® 图时,可以在 Property Inspector 中或在 Model Explorer 中指定数据属性。

  • 要使用 Property Inspector,请执行以下操作:

    1. Modeling 选项卡中的 Design Data 下,选择 Symbols PaneProperty Inspector

    2. 在 Symbols 窗格中,选择数据对象。

    3. 在 Property Inspector 窗格中,编辑数据属性。

  • 要使用 Model Explorer,请执行以下操作:

    1. Modeling 选项卡中的 Design Data 下,选择 Model Explorer

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

    3. Message 窗格中,编辑数据属性。

您也可以使用 Stateflow.Data 对象以编程方式来指定数据属性。有关 Stateflow 编程接口的详细信息,请参阅 Overview of the Stateflow API

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

Stateflow 数据属性

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

  • Property Inspector 的主部分和 Advanced 部分。

  • Model Explorer 的 General 选项卡。

Name

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

作用域

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

设置说明
Local

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

Constant

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

Parameter

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

Input

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

Output

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

Data Store Memory

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

Temporary

仅在函数执行期间存留的数据。对于 C 语言状态图,只能为图形函数、真值表或 MATLAB 函数定义临时数据。

Exported

来自 Simulink 模型的数据,可用于 Stateflow 层次结构中所定义的外部代码。您只能为 Stateflow 状态机定义导出数据。

Imported

数据父级是您在 Stateflow 状态机上内嵌的外部代码中定义的 Simulink 模型。您只能为 Stateflow 状态机定义导入数据。

Port

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

Update Method

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

Data Must Resolve to Signal Object

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

  • Size

  • Complexity

  • Type

  • Unit

  • Minimum value

  • Maximum value

  • Initial value

  • Storage class

  • Sampling mode (for Truth Table block output data)

仅当将模型配置参数 Signal resolution 设置为除 “None” 以外的值时,此选项才可用。有关详细信息,请参阅Resolve Data Properties from Simulink Signal Objects

大小

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

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

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

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

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

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

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

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

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

Variable Size

指定数据对象在仿真期间更改维度。仅当启用图属性 Support variable-size arrays 时,此选项才可用于输入和输出数据。有关详细信息,请参阅Declare Variable-Size Data in Stateflow Charts

复/实性

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

设置说明
Off数据对象不接受复数值。
On数据对象接受复数值。
Inherited数据对象从 Simulink 模块继承复/实设置。

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

First Index

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

类型

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

此外,在 Model Explorer 中,您可以通过点击 Show data type assistant 按钮 来打开 Data Type Assistant。指定数据 Mode,然后根据该模式指定数据类型。有关详细信息,请参阅指定 Stateflow 数据的类型

注意

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

Lock Data Type Against Fixed-Point Tools

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

Unit (e.g., m, m/s^2, N*m)

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

Initial Value

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

作用域为初始值指定
Local

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

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

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

默认设置为 “Expression”。

Constant

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

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

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

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

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

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

默认设置为 “Expression”。

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

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

Limit Range

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

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

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

可以为 Minimum 设置的最小值为 -inf。可以为 Maximum 设置的最大值为 inf

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

注意

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

Add to Watch Window

启用对 Stateflow Breakpoints and Watch 窗口中的数据值进行观察。有关详细信息,请参阅查看 Breakpoints and Watch 窗口中的数据

定点数据属性

在 Model Explorer 中,当您将 Data Type Assistant 的 Mode 设置为 “Fixed point” 时,Data Type Assistant 会显示相应字段供您指定该定点数据的其他信息。

Signedness

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

Word Length

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

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

    • Input

    • Output

    • Parameter

    • Data Store Memory

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

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

Scaling

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

设置说明
Binary point

如果选择此模式,Data Type Assistant 将显示 Fraction length 字段,以指定二进制小数点位置。

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

Slope and bias

如果选择此模式,Data Type Assistant 将显示用于为定点编码方案输入 SlopeBias 值的字段。

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

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

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

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

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

Data Type Override

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

Calculate Best-Precision Scaling

指定是否根据 Limit range 部分中的 MinimumMaximum 字段中的值为 “Binary point” 和 “Slope and bias” 定标计算最佳精度值。

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

  1. 指定 Limit range 属性。

  2. 点击 Calculate Best-Precision Scaling

最佳精度定标值显示在 Fraction length 字段或 SlopeBias 字段中。有关详细信息,请参阅Maximize Precision (Fixed-Point Designer)

注意

Limit range 属性不适用于 “Constant” 或 “Parameter” 作用域。对于 “Constant”,Simulink 软件会基于 Initial value 设置计算定标值。软件无法为 “Parameter” 作用域的数据计算最佳精度定标值。

Show Fixed-Point Details

显示在 Data Type Assistant 中定义的定点数据类型的相关信息:

  • MinimumMaximum 显示的值与 Limit range 部分的相应 MinimumMaximum 字段中出现的值相同。

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

如果在未事先编译模型的情况下无法确定某个字段的值,Fixed-point details 子窗格会将该值显示为 Unknown

如果更改定义定点数据类型的值,Fixed-point details 子窗格显示的值不会自动更新。要更新 Fixed-point details 子窗格显示的值,请点击 Refresh Details

点击 Refresh Details 不会修改模型。它仅更改显示。要应用显示的值,请点击 ApplyOK

Fixed-point details 子窗格指示定点数据类型设定导致的错误。例如,下图显示两个错误。

根据标签为 Maximum 的行的指示可知,定点数据类型无法表示 Limit range 部分的 Maximum 字段中指定的值。要更正错误,请进行以下某项修改,以使定点数据类型能够表示最大值:

  • 减小 Limit range 部分 Maximum 字段的值。

  • 增大 Word length 值。

  • 减小 Fraction length 值。

标签为 Minimum 的行显示 Cannot evaluate 错误,因为对在 Limit range 部分的 Minimum 字段中指定的表达式 MySymbol 求值时不返回数值。如果表达式未计算成功,Fixed-point details 子窗格会将未计算成功的表达式(视需要截断为 10 个字符)显示在不可用值的位置。要更正此错误,可以在 MySymbol 基础工作区定义并提供数值。如果点击 Refresh Details,错误指示符和描述将消失,并且 MySymbol 的值出现在未计算文本的位置。

记录属性

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

  • Property Inspector 的 Logging 部分。

  • Model Explorer 的 Logging 选项卡。

Log Signal Data

在仿真期间,将数据值保存到 MATLAB 基础工作区。有关详细信息,请参阅Log Simulation Output for States and Data

Test Point

将数据指定为测试点。测试点是可以在模型的 Floating Scope 模块中观察到的信号。在以下情况下,数据对象可以是测试点:

  • 作用域为 “Local”。

  • 父级不是 Stateflow 状态机。

  • 数据类型不是 “ml”。

有关详细信息,请参阅Monitor Test Points in Stateflow Charts

Logging Name

指定与记录的信号数据相关联的名称。Simulink 软件默认使用信号名称作为其记录名称。要指定自定义记录名称,请从列表框中选择 “Custom”,然后在旁边的编辑字段中输入新名称。

Limit Data Points to Last

将记录的数据量限制为指定数量的最近样本。

Decimation

通过跳过样本限制记录的数据量。例如,抽取因子 2 会每隔一个采样保存数据。

其他属性

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

  • Property Inspector 的 Info 选项卡。

  • Model Explorer 的 Description 选项卡。

Save Final Value to Base Workspace

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

Units

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

说明

数据对象的说明。您可以为层次结构中的数据输入简要说明。

Document Link

数据对象的在线文档链接。您可以输入 Web URL 地址或者能以合适的在线格式(例如 HTML 文件或 MATLAB 命令行窗口中的文本)显示文档的 MATLAB 命令。点击 Document link 超链接时,Stateflow 会计算该链接并显示该文档。

默认数据属性值

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

属性默认值
大小

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

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

First Index0
Initial Value0.0
Limit RangeMinimum-inf
 Maximuminf
定点数据属性Word length16
 Fraction length0
 Slope1.0
 Bias0.0

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

在 Property Inspector 和 Model Explorer 中,可以输入 MATLAB 表达式作为以下属性的值:

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

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

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

另请参阅

(Fixed-Point Designer) | (Simulink) | | | | (Simulink) | (Simulink)

相关主题