Main Content

配置信号记录

标记要记录的信号

通过使用以下方法之一标记信号来启用记录功能:

要标记信号进行记录,Simulink® 编辑器菜单选项通常是最简单的方法。

启用了记录功能的信号称为记录的信号。默认情况下,Simulink 会为每个记录的信号显示一个记录的信号指示符

使用 Simulink 工具条启用日志记录

  1. 在 Simulink 编辑器中,选择一个或多个信号。

  2. 仿真选项卡上,点击记录信号

使用信号属性启用记录功能

  1. 在 Simulink 编辑器中,右键点击信号。

  2. 从上下文菜单中,选择属性

  3. 在“信号属性”对话框中,在记录和可访问性选项卡上选择记录信号数据

  4. 点击确定

也可以右键点击选定的信号,然后从显示的上下文菜单中选择记录所选信号

使用模型数据编辑器启用记录功能

模型数据编辑器显示模型中信号的平面列表。您可以对此列表执行排序、分组和筛选操作。对于以下情况,可以使用此方法启用记录功能:

  • 同时记录许多信号。

  • 记录模块图中彼此不靠近的信号。

  • 记录大型模型或子系统层次结构中难以定位的信号。

要使用模型数据编辑器选择要记录的信号,请执行以下操作:

  1. 打开模型数据编辑器。在建模选项卡上,点击模型数据编辑器按钮。

  2. 在模型数据编辑器中,选择信号选项卡。

  3. 在下拉列表中选择“仪器”。

  4. 为要记录的信号选中记录数据列中的框。

有关详细信息,请参阅模型数据编辑器

编程接口

要以编程方式为选定的模块启用信号记录,请使用输出 DataLogging 属性。可使用 set_param 命令设置此属性。例如:

  1. 在 MATLAB® 命令行窗口中打开一个模型。类型

    vdp
  2. 获取要记录的信号的端口句柄。例如,对于 Mu 模块输出端口信号。

    ph = get_param('vdp/Mu','PortHandles')
  3. 启用所需输出端口信号的信号记录。

    set_param(ph.Outport(1),'DataLogging','on')

    随即将出现记录的信号指示符。

记录引用模型信号

您可以记录引用模型中任何记录的信号。可使用信号记录选择器为模型引用层次结构配置信号记录。有关详细信息,请参阅Models with Model Referencing: Overriding Signal Logging Settings

指定信号级记录名称

您可以为 Simulink 用来存储信号记录数据的对象指定信号级记录名称。对于未命名的信号或与模型层次结构中的另一信号重名的信号来说,指定信号级记录名称非常有用。指定信号级记录名称(而不是使用 Simulink 生成的名称)可使记录的数据更容易分析。

要指定信号级记录名称,请使用以下方法之一

如果您不指定自定义信号级记录名称,Simulink 将使用信号名称。如果信号没有名称,Simulink 将使用空名称。

注意

信号级记录名称与模型级信号记录名称不同。模型级信号记录名称是包含整个模型的所有记录信号数据的对象的名称。默认的模型级信号记录名称为 logsout。有关模型级信号记录名称的详细信息,请参阅为信号记录数据指定名称

在 Simulink 编辑器中指定信号级记录名称

  1. 在 Simulink 编辑器中,右键点击信号。

  2. 从上下文菜单中选择信号属性

  3. 指定记录名称:

    1. 在“信号属性”对话框中,选择记录和可访问性选项卡。

    2. 记录名称列表中选择“自定义”。

    3. 在旁边的文本字段中输入记录名称。

在模型资源管理器中指定信号级记录名称

  1. 在模型资源管理器的模型层次结构窗格中,选择包含要为其指定记录名称的信号的节点。

  2. 如果目录窗格中未显示 LoggingName 属性,请将 LoggingName 属性添加到当前视图中。有关列视图的详细信息,请参阅模型资源管理器

  3. 使用 LoggingName 列为一个或多个信号输入记录名称。

以编程方式指定信号特定的记录名称

要以编程方式为选定的模块启用信号记录,请使用输出端口 DataLogging 属性。可使用 set_param 命令设置此属性。

  1. 在 MATLAB 命令行窗口中打开一个模型。例如,键入:

    vdp
  2. 获取要记录的信号的端口句柄。例如,对于 Mu 模块输出端口信号:

    ph = get_param('vdp/Mu','PortHandles');
  3. 启用所需输出端口信号的信号记录:

    set_param(ph.Outport(1),'DataLogging','on');

    随即将出现记录的信号指示符。

  4. 输入使用 DataLoggingNameModeDataLoggingName 参数的命令。例如:

    set_param(ph.Outport(1),'DataLoggingNameMode','Custom');
    set_param(ph.Outport(1),'DataLoggingName','x2_log');

限制记录的数据

您可以通过以下方式限制为信号记录的数据量:

  • 指定抽取因子

  • 将保存的样本数限制为仅最近使用的样本

您可以使用“信号属性”对话框、模型资源管理器、信号记录选择器或编程方式限制为信号记录的数据。下面介绍前两种方法。

使用信号属性限制记录的数据

  1. 在 Simulink 编辑器中,右键点击信号。

  2. 从上下文菜单中选择信号属性

  3. 在“信号属性”对话框中,点击记录和可访问性选项卡。然后选择下面的一个或两个选项:

    • 将数据点限制为最后

    • 抽取

使用模型资源管理器限制记录的数据

  1. 在模型资源管理器的模型层次结构窗格中,选择包含要限制记录数据量的信号的节点。

  2. 如果目录窗格中未显示 DataLoggingDecimation 属性或 DataLoggingLimitDataPoints 属性,请将其中一个或两个都添加到当前视图中。有关列视图的详细信息,请参阅模型资源管理器

  3. 要指定抽取因子,请编辑 DecimationDecimateData 属性。要限制记录的样本数量,请编辑 LimitDataPoints 属性。

为记录的信号设置采样时间

要为记录的信号设置采样时间,请使用“信号属性”对话框中的采样时间选项。此选项:

  • 将设计与检验分离,因为您不需要插入 Rate Transition 模块来为记录的信号使用一致的采样时间

  • 减少了为连续时间信号记录的数据量,这与为连续信号设置抽取值无关

  • 消除了对具有不同采样时间的信号的记录数据进行后处理的需要

使用说明

不要为下列各项指定采样时间:

  • 基于帧的信号

  • 条件子系统(例如,函数调用子系统或触发子系统)和条件引用模型,它们需要继承的采样时间

如果在 SIL 模式下进行仿真,信号记录将忽略您为记录的信号指定的采样时间。

当您标记信号以进行记录时,Simulink 将插入一个隐藏的 To Workspace 模块。当您为记录的信号指定采样时间时,Simulink 将插入一个隐藏的 Rate Transition 模块和一个隐藏的 To Workspace 模块。

为信号记录指定采样时间不会影响仿真结果。但是,对于记录的信号,信号记录输出可能会因您是否指定采样率而有所不同。例如,插值方法可能会因您是否为信号记录指定采样时间而有所不同。假设有一个模型中包含一个连续信号,并且采样时间是继承的 (-1)。为该信号记录的输出的插值方法为 linear

logsout.get(1).Values.DataInfo
tsdata.datametadata
  Package: tsdata

  Common Properties:
               Units: ''
       Interpolation: linear (tsdata.interpolation)

如果您将采样时间更改为连续 (0),则为该信号记录的输出的插值方法为 zoh(零阶保持)。

相关主题