Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

为模型启用信号记录

在模型级别启用和禁用记录功能

要记录某个信号,请标记该信号以启用记录功能。有关详细信息,请参阅配置信号记录

可为一个模型中标记要记录的所有信号全面启用或禁用记录功能。默认情况下,信号记录处于启用状态。选中配置参数 > 数据导入/导出 > 信号记录参数时,Simulink® 会记录信号。如果未选中此选项,Simulink 将忽略各个信号的信号记录设置。

当信号标记为记录时,信号数据将记录到工作区和仿真数据检查器。您可以通过“配置参数”对话框或以编程方式禁用信号记录。

  • 在“配置参数”对话框中,清除配置参数 > 数据导入/导出 > 信号记录参数复选框。

  • 从命令行中,使用 SignalLogging 参数。

    set_param(bdroot,'SignalLogging','off')

选择部分信号进行记录

您可以为满足以下条件的模型选择部分信号进行记录:

  • 启用了信号记录

  • 包含记录的信号

有关详细信息,请参阅Override Signal Logging Settings

指定数据集信号元素的格式

记录的信号数据以 Dataset 格式(作为 Simulink.SimulationData.Dataset 对象)保存。要指定数据集中各个信号的数据是使用 MATLAB® timeseries 还是 timetable 元素,请设置数据集信号格式配置参数。默认值为 timeseries。有关详细信息,请参阅 Dataset signal format

迁移使用旧版 ModelDataLogs API 的脚本

对于在 R2016a 之前的版本中创建的且使用 “ModelDataLogs” 格式进行记录的模型仿真脚本,请更新代码以便使用 Dataset 格式进行记录。

如果您已经使用 “ModelDataLogs” 格式记录了信号数据,则可以使用 Simulink.ModelDataLogs.convertToDataset 函数更新 “ModelDataLogs” 信号记录数据,以使用“数据集”格式。例如,要将 older_model_dataset 从 “ModelDataLogs” 格式更新为“数据集”格式:

new_dataset = logsout.convertToDataset('older_model_data')

将模型从使用 ModelDataLogs 格式转换为使用 Dataset 格式可能需要您修改现有模型,并在回调、函数、脚本或测试中进行编码。下表列出了转换为 Dataset 格式后可能要解决的问题。表中还为每个问题提供了解决方案。

转换为数据集格式后可能出现的问题解决方法

现有回调、函数、脚本或测试中使用 ModelDataLogs 编程接口访问数据的代码可能会导致错误。

查找使用 ModelDataLogs 格式访问方法的代码。更新该代码以使用 Dataset 格式访问方法。

例如,假设现有代码中包含以下行:

logsout.('Subsystem Name').X.data

将该代码替换为 Dataset 访问方法:

logsout.getElement('x').Values.data

Mux 模块信号名称丢失。

Dataset 格式将 Mux 模块信号视为向量。要通过信号名称识别信号,请用 Bus Creator 模块替换 Mux 模块。

信号查看器不能用于信号记录。

Simulink 不会将信号记录数据记录到信号查看器中。

使用信号记录输出变量来查看记录的数据。

unpack 方法产生错误。

对于 Simulink.ModelDataLogsSimulink.SubsysDataLogs 对象支持的 unpack 方法,Simulink.SimulationData.Dataset 对象并不支持。

例如,如果 mlog 中的数据有三个字段:xyz,则:

对于 ModelDataLogs 格式数据,mlog.unpack 方法在基础工作区创建三个变量。

对于 Dataset 格式数据,则按名称访问方法。例如:

x = logsout.getElement('x').Values

ModelDataLogsDataset 格式对未命名的信号具有不同的命名规则。

如有必要,添加信号名称。

ModelDataLogs 格式中,对于来自模块的未命名信号,Simulink 按以下形式指定名称:

SL_BlockName+<portIndex>

例如,SL_Gain1

Dataset 格式中,元素不需要名称,因此 Simulink 将信号名称留空。

对于 ModelDataLogsDataset 这两种格式,Simulink 会为来自 Bus Selector 模块的未命名信号指定相同的名称。

未记录引用模型中的测试点。

考虑为引用模型中的测试点启用信号记录。

脚本使用 whowhos 函数。

考虑改用 find

为信号记录数据指定名称

您可以使用模型级信号记录名称访问模型的信号记录数据。信号记录数据的默认名称为 logsout。指定模型级信号记录名称可以更轻松识别记录数据的来源。例如,您可以指定信号记录名称 car_logsout,将数据标识为 car 模型的信号记录数据。

要指定不同的模型级信号记录名称,请使用以下方法之一:

  • 配置参数 > 数据导入/导出 > 信号记录参数旁边的编辑框中输入信号记录名称。

  • 使用 SignalLoggingName 参数指定信号记录名称。例如:

    set_param(bdroot, 'SignalLoggingName', 'heater_model_signals')

相关主题