Main Content

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

为模型启用信号记录

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

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

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

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

  • 在 Configuration Parameters 对话框中,清除 Configuration Parameters > Data Import/Export > Signal logging 参数复选框。

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

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

选择部分信号进行记录

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

  • 启用了信号记录

  • 包含记录的信号

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

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

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

迁移使用旧版 ModelDataLogs API 的脚本

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

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

new_dataset = logsout.convertToDataset('older_model_data')

将模型从使用 ModelDataLogs 格式转换为使用 Dataset 格式可能需要您修改现有模型,并在回调、函数、脚本或测试中进行编码。下表列出了转换为 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 模型的信号记录数据。

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

  • Configuration Parameters > Data Import/Export > Signal logging 参数旁边的编辑框中输入信号记录名称。

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

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

相关主题