Main Content

本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

使用 Model Data Editor 配置数据属性

模型包含数据项,例如信号、模块参数(例如 Gain 模块的 Gain 参数)和数据存储。使用 Model Data Editor,您可以检查和编辑列出的数据项,并可进行排序、分组和筛选。然后,您可以在其中配置属性和参数,例如数据类型和维度,而无需在模块图中定位这些项目。

在创建和调试模型时,您可以通过在模块图中选择对应的信号和模块来一次配置多个数据项。您可在 Model Data Editor 中集中处理这些选定项,不用在模块图中逐个打开对话框进行配置。使用此方法可以更快速地查看和比较模块图中(例如子系统中)彼此接近的多个信号的属性。

使用 Model Data Editor 配置下列各项:

  • 信号和数据存储的检测,这意味着您要查看和收集仿真值。例如,您可以记录信号以比较 Simulation Data Inspector 中的数据。

  • 设计属性,例如数据类型、最小值和最大值以及物理单位。例如,您可以使用这些属性来完成以下任务:

    • 指定数值模块参数的值。

    • 通过 InportOutport 模块和数据存储控制各组件之间的交互(接口)(请参阅Configure Data Interface for Component)。

    • 指定模型中非标量信号的维度。

  • 存储类,用于控制从模型生成的代码(例如 C)中的数据的表示。

要在模型中打开 Model Data Editor,请在 Modeling 选项卡上,点击 Model Data Editor 或按 Ctrl+Shift+E

注意

Model Data Editor 不显示有关引用模型(使用 Model 模块引用)中数据项的信息。要处理引用模型中的数据项,请在该模型中打开 Model Data Editor。

配置远数据项

示例模型 sldemo_fuelsys_dd 代表一台车辆发动机的供油系统。引用模型 sldemo_fuelsys_dd_controller 控制流向引擎的燃油速率。此示例使用 Model Data Editor 来记录不同子系统和引用模型中的信号,以便您可以使用 Simulation Data Inspector 检查其数据。

浏览示例模型

  1. 打开 sldemo_fuelsys_dd 和引用模型 sldemo_fuelsys_dd_controller

  2. 导航到 airflow_calc 子系统。

    Pumping Constant 模块包含说明燃油泵性能的查找表。您可以将此模块的输出流式传输到 Simulation Data Inspector。

  3. 导航到模型的根并进入 fuel_calc 子系统。

  4. 导航到 feedforward_fuel_rate 子系统。

    名为 ff_fuel_rateOutport 模块将前馈信息传递给燃油速率控制算法。

  5. 导航回 fuel_calc 子系统并进入 switchable_compensation 子系统。

    名为 ff_fuel_rateInport 模块包含前馈信息。您可以流式传输此 Inport 模块的输出。

记录信号以用于数据检查

  1. 导航到 sldemo_fuelsys_dd_controller 模型的根。

  2. 在 Model Data Editor 中,检查 Signals 选项卡。

  3. Change view 下拉框设置为 “Instrumentation”。

  4. 激活 Change scope 按钮 以显示子系统的内容。

    Model Data Editor 标识模型中的所有信号。将显示 Path 列。

  5. Filter contents 框中,输入 ff_fuel_rate

    Model Data Editor 更新信号列表,使其仅包含名为 ff_fuel_rate 的信号。您可以点击 Path 列中的链接以查看信号在模型中的位置。

  6. 对于路径为 sldemo_fuelsys_dd_controller/fuel_calc/switchable_compensation 的信号,选中 Log Data 复选框。

    这会指示 Simulink® 将记录信号的数据发送到 Simulation Data Inspector。

  7. 使用文本 Pumping Constant 再次筛选信号。

    该表包含一行,对应于 Pumping Constant 模块的输出。

  8. 选中 Pumping Constant 信号的 Log Data 复选框。

  9. 对系统模型 sldemo_fuelsys_dd 进行仿真。在仿真过程中,双击 Manual Switch 模块,例如 Engine Speed Selector,以干扰燃油控制系统。

  10. 仿真完成后,Simulation Data Inspector 按钮 将突出显示。这表明有数据需要检查和比较。点击 Simulation Data Inspector 按钮。

  11. 在左窗格中,展开与仿真运行对应的 Run 节点,并选中要检查和比较其数据的信号的复选框。

    Simulation Data Inspector 在同一图上显示所选信号的值。

从模块图中选择多个数据项

在示例模型 sldemo_househeat 中,使用 Model Data Editor 记录 Heater 子系统中的信号,以便使用 Simulation Data Inspector 进行检查。

  1. 在示例模型 sldemo_househeat 中,打开 Heater 子系统。

  2. 打开 Model Data Editor 并选择 Signals 选项卡。

    Model Data Editor 标识子系统中的所有信号。

  3. 在 Model Data Editor 中,将 Change view 下拉列表设置为 “Instrumentation”。

  4. 使用 Simulink Editor,选择子系统中的所有信号。(可选)不要选择 Constant 模块的输出,因为在仿真过程中信号值不会更改。

    作为响应,Model Data Editor 会突出显示与您选择的信号对应的行。

  5. 在 Model Data Editor 中,针对任一选定信号,点击 Log Data 列中的对应复选框。

    Model Data Editor 随即会选中所有选定信号的复选框。

  6. 对模型进行仿真。

  7. 打开 Simulation Data Inspector,在最左窗格中展开与仿真运行对应的 Run 节点。选中要检查和比较其值的信号的复选框。

与使用工作区变量的模型交互

使用工作区变量(例如 MATLAB® 数值变量和 Simulink.AliasType 对象)在数据项之间共享设置时,可以通过 Model Data Editor 与这些变量进行交互。这样,您在 Model Data Editor 中即可配置数据项。在 Editor 中,点击 Show/refresh additional information 按钮 ,这会通过更新模块图查找模型使用的变量。

以下示例说明如何使用模型用于设置模块参数值的对象。您可以修改模型 sldemo_fuelsys_dd_controller 使用的 Simulink.Parameter 对象的值。

  1. 打开模型。

    sldemo_fuelsys_dd_controller

  2. 打开 Model Data Editor 的 Parameters 选项卡。

  3. 在 Model Data Editor 中,点击 Show/refresh additional information 按钮。

    现在,数据表包含与模型使用的变量和对象对应的行。

  4. 在模型中,导航到 airflow_calc 子系统中。

  5. 在 Model Data Editor 中,在 Filter contents 框的旁边,选择 Filter using selection 按钮。

    选择此按钮后,在模块图中选择模块或信号时,数据表仅显示与该模块或信号相关的数据项和工作区变量。

  6. 在模型中,点击标签为 Pumping Constant 的查找表模块。

    Model Data Editor 显示该模块使用三个工作区变量。该模块从 Simulink.Parameter 对象 SpeedVect 获取一些断点值。

现在,您可以使用 Model Data Editor 中的列来配置 SpeedVect 的属性。

您可以进一步与变量进行交互以便:

  • 配置列不表示的其他属性:

    1. 在模型中,打开 Property Inspector。在 Modeling 选项卡上,在 Design 下,点击 Property Inspector

    2. 在 Model Data Editor 中,选择与目标变量或对象对应的行。如果 Property Inspector 没有响应,请选择其他行,然后再次选择目标行。

    3. 使用 Property Inspector 配置目标属性。

  • 在工作区和数据字典之间移动该变量,并将该变量与其他变量一起配置。使用 Model Explorer。要打开 Model Explorer,请在 Model Data Editor 数据表中,双击最左侧列中的图标。有关使用 Model Explorer 的详细信息,请参阅使用 Model Explorer 编辑和管理工作区变量

  • 在 Simulink 模型中的模块使用某变量的任何位置重命名该变量。在 Model Data Editor 中,右键点击该变量并选择 Rename All。只能重命名函数 Simulink.findVars 支持的变量。

  • 查找使用特定变量的模块。在 Model Data Editor 中,右键点击该变量并选择 Find Where Used

通过筛选、排序及分组查找和组织数据

在示例模型 sldemo_fuelsys_dd_controller 中,工作区变量和参数对象用于设置模块参数的值。这些变量和对象位于数据字典中。使用 Model Data Editor 在一个组中一起显示这些字典条目。

  1. 在示例模型中,打开 Model Data Editor 并选择 Parameters 选项卡。

  2. 激活 Change scope 按钮以显示子系统的内容。

  3. 点击 Show/refresh additional information 按钮以显示与字典条目对应的行。

  4. 右键点击 Source 列标题,然后选择 Group by This Column

    Model Data Editor 按模块或工作区对列表进行分组,其中包括字典条目的组。

  5. 找到标签为 Source:Dictionary 的组。现在,您可以使用 Model Data Editor 来检查和修改字典中变量和对象的属性。

Model Data Editor 允许您通过使用以下方法之一或其组合来筛选数据项列表:

  • 要通过文本搜索筛选数据表,请使用 Filter contents 框。

  • 要根据您在模型中选择的模块或信号进行筛选,请在 Filter contents 框旁边,选择 Filter using selection 按钮。然后,当您点击模型中的模块和信号时,Model Data Editor 仅显示与该模块或信号相关的行。如果您选定了多个模块或信号,则 Model Data Editor 仅显示与这些模型元素相关的行。

  • 要根据特定于列的标准进行筛选,请指向列标题,然后点击筛选器图标 。在文本框中键入时,编辑器会将子字符串筛选器应用于列内容。在应用筛选器后,列标题旁边会显示较小的筛选器图标 。要编辑筛选器、删除筛选器或删除所有列筛选器,请点击此图标。

检查单个数据项

要突出显示单个数据项,请使用以下方法之一:

  • 在 Model Data Editor 中,在 Filter contents 框的旁边,选择 Filter using selection 按钮。然后,在模型中,点击与该数据项对应的模块或信号。

    使用此方法,可通过使用数据表中的列来配置项目。

  • 在模型中,打开 Property Inspector。在 Modeling 选项卡上,在 Design 下,点击 Property Inspector。然后,在数据表中,点击目标行。Property Inspector 显示该数据项的属性。如果点击目标行时 Property Inspector 没有响应,请点击其他行,然后再次点击目标行。

    使用此方法可检查 Model Data Editor 可以一并访问的所有属性(换句话说,即是 “Design”、“Instrumentation” 和 “Code” 视图中可用的列的并集)。

  • 在模型中,打开 Property Inspector。然后,在数据表中,对于目标行,双击最左侧列中的单元格(图标)。在模型中,选择突出显示的模块或信号。

    使用此方法可检查所有属性,包括 Model Data Editor 无法访问的属性。

从 Model Data Editor 导航到模块图

要从 Model Data Editor 中的数据项导航到图中拥有该数据项的模块,请双击最左侧列中的图标。然后 Simulink Editor 会突出显示相关模块。当您选择 Change scope 以查看当前系统下方子系统的内容时,使用此方法可导航到模块。

数据表中的列

使用此表可以查找有关 Model Data Editor 中列的用途的详细信息。

列名称目的和详细信息
Source

显示定义数据项的模块的名称。对于信号,还会显示生成信号的模块端口的编号。

对于工作区变量,会显示包含该变量的工作区或数据字典的名称。

Signal NameName

设置信号、状态或数据存储的名称。有关命名信号的信息,请参阅信号名称和标签

对于参数,会显示每个参数的编程名称。

对于工作区变量,则需要设置变量的名称。

Data Type控制信号数据类型Control Block Parameter Data Types
MinMax指定信号范围指定模块参数的最小值和最大值
Dimensions确定信号维度
Complexity设置数据项的数值复/实性。
Sample Time什么是采样时间?
UnitSimulink 模型中的单位指定
Test Point将信号配置为测试点
Log DataIterate Model Design Using the Simulation Data Inspector
Resolve对应于 Signal Properties 对话框中的 Signal name must resolve to Simulink signal object 复选框,以及状态和数据存储的模块对话框中的类似复选框。请参阅使用信号对象
Storage Class

将存储类应用于单个信号、状态和参数数据元素 (Simulink Coder)

要从您创建的包中应用存储类,请参阅

Header File

Definition File

Get Function

Set Function

Struct Name

设置存储类的自定义属性(使用 Storage Class 进行选择)。请参阅Organize Parameter Data into a Structure by Using Struct Storage Class (Embedded Coder)

Shared对应于 Data Store Memory 模块的 Share across model instances 参数。请参阅Data Store Memory
Initial value设置状态或数据存储的初始值。请参阅初始化信号值
Value设置模块参数值
Argument将模型工作区中的变量配置为模型参数。请参阅参数化可重用引用模型的实例
路径

显示模型中模块的位置,并在 Simulink Editor 中提供指向该模块的链接。此项在点击 Change Scope 按钮时可见。

数据表中每个单元格包含两个条目

当一个单元格包含两个条目时(例如,在 Data Type 列中),单元格右侧的条目表示编译信息。编译信息显示数据项用于仿真的值。

例如,模型中大多数信号的默认数据类型设置为 “Inherit:Inherit via internal rule”。使用此设置时,在您更新模块图后,Simulink 会为要用于仿真的信号选择特定数据类型,例如 single。在 Model Data Editor 中,Data Type 列中的单元格在左侧显示 Inherit: Inherit via internal rule,在右侧显示 single

Model Data Editor 限制

  • 您不能使用 Model Data Editor 访问下列属性:

    • 对于封装参数:

      • 可调封装参数的任何设置(参数值除外)。

      • 不可调封装参数的任何设置。

      请注意,一些内置模块被封装,并且可能具有可调或不可调的封装参数。

    • Simscape™ 模块的参数的任何设置。

    • 引用模型中数据项的任何设置。在这种情况下,请在引用模型中打开 Model Data Editor。

    • 未在基础工作区、模型工作区或数据字典中定义的变量的任何设置。例如,您不能访问由封装初始化代码创建的变量的属性。

    • Parameters 选项卡上,Constant 模块的数据类型、最小值和最大值。请改用 Signals 选项卡。

    对于您不能使用 Model Data Editor 访问的某些设置,您可以改为使用 Property Inspector(请参阅Parameters)。打开 Property Inspector 并在模型中(而不是在 Model Data Editor 中)选择目标数据项。对于封装参数,请使用封装对话框或 Mask Editor,如封装基础知识中所述。

  • Model Data Editor 不显示 Stateflow® 数据。但是,Model Data Editor 显示您在 Stateflow 图中定义的 Simulink 函数的数据。

    要管理图中的 Stateflow 数据、事件和消息,请参阅Manage Data, Events, and Messages in the Symbols Pane (Stateflow)

  • 使用 Model Data Editor 时,如果为信号指定存储类而不提供信号名称,则软件会生成信号名称。生成的名称是从生成信号的模块派生的。如果模块使用非 ASCII 值作为其名称的一部分或使用任何无效的 C 变量名称,则只有模块名称中的 ASCII 值会生成信号的名称。如果两个 ASCII 模块名称不唯一,则此问题会导致代码生成期间信号名称冲突。

  • Parameters 选项卡上,下列变量不可用:

    • 非可调模块参数使用的变量。例如,Gain 模块上的最小值和最大值参数或 Constant 模块上的 Sample time

    • 变体控制项变量

    • 用于符号维度的变量

相关主题