主要内容

本页采用了机器翻译。点击此处可查看英文原文。

实时文件日志记录和流式传输工作流

您可以通过使用 File Log 模块进行日志记录,或在模型中将信号标记为日志记录对象,或在 Simulink Real-Time 资源管理器中选择信号进行流式传输,将信号数据导入仿真数据检查器。

通过 File Log 模块进行信号记录时,提供的选项可让您控制:

  • 目标计算机上保留的文件日志数量

  • 文件日志数据是否会自动导入到“仿真数据检查器”中

  • 文件日志数据是否已导出到基础工作区

您可以通过实时应用程序的 start(tg) 函数选项,或在 Simulink Real-Time 资源管理器或 Simulink 编辑器中选择 Run in Real-Time 选项来配置这些选项。图 File Logging and Streaming Workflow 展示了这些选项如何配置实时应用程序 start(tg) 函数的运行方式。当图中出现 startRecordingstopRecording 时,您可以使用这些函数,也可以使用 Simulink 编辑器或 Simulink Real-Time 资源管理器中 Real-Time 选项卡上的相应 Start RecordingStop Recording 按钮。

文件日志记录和流式传输工作流

在实时应用程序运行期间,您可以通过 File Log 模块控制文件日志记录:

  • 默认日志会记录整个仿真运行过程中的信号数据。

  • 通过在模型中使用 Enable File Log 模块来启用或禁用文件日志记录。如果模型中包含一个 Enable File Log 模块,则 startRecording 函数和 stopRecording 函数仅控制流式处理,而不控制日志记录。

  • 使用 startRecording 函数或 stopRecording 函数启用或禁用文件日志记录。这些函数还可以启用或禁用流式传输。此外,您还可以在 Simulink 编辑器或 Simulink Real-Time 资源管理器中的 Real-Time 选项卡上使用 Start Recording 按钮和 Stop Recording 按钮。

可以停止文件日志记录:

文件日志记录停止后,AutoImportFileLog 名称 - 值参量的设置将决定文件日志数据是自动导入到“仿真数据检查器”中,还是需要使用 import(tg.FileLog) 函数来导入数据。

录制工作流图中,各工作流对日志文件的自动导入处理方式各不相同:

  • 对于所有工作流,当实时应用程序停止运行时,会触发自动导入操作。

  • 对于录制工作流,在调用 stopRecording 函数时也会执行自动导入操作。

在实时应用程序中向仪表添加信号

Simulink® Real-Time™ 用户界面通过以下方式帮助您可视化信号:

在收集信号数据时,有一些编程选项,无需在模型中添加 File Log 模块或将信号标记为需记录信号。这些选项包括:

  • 您可以调用 addForFileLog 函数,向 Target 对象中的仪表添加信号。该仪表将信号数据从目标计算机传输到开发计算机的方式和控制方法(例如,start 函数的 AutoImportFileLog 选项),与通过 File Log 模块收集文件日志数据时完全相同。

  • 您可以调用 addForSDI 函数,向 Target 对象中的仪表添加信号。当将其添加到 Target 对象中时,该仪表会以与流式传输信号数据相同的方式和控制方法(例如 startRecordingstopRecording 函数),将信号数据从目标计算机传输到开发计算机。在仿真运行期间,流式数据可在仿真数据检查器中查看,且这些数据不会保存在目标计算机上。

  • 您可以调用 addForMATLAB 函数,向 Target 对象中的仪表添加信号。当将其添加到 Target 对象中时,该仪表会以与流式传输信号数据相同的方式和控制方式,将信号数据从目标计算机传输到开发计算机;这与 addForSDI 函数相同。区别在于,流式数据是通过用 MATLAB 编写的 App 访问的,而不是通过仿真数据检查器访问的。

提示

这种新增的信号记录和流式传输支持是动态的。您可以修改实时应用程序中的信号记录和流式传输选择,而无需重新构建模型。

以下步骤演示了如何将信号添加到仪表中,然后将该仪表添加到 Target 对象中以进行文件记录。

  1. 创建目标对象并连接到目标计算机。打开一个模型,并针对目标计算机配置该模型。根据该模型编译实时应用程序。创建一个仪表对象,并添加来自实时应用程序的信号。

    objTarg = slrealtime;
    connect(objTarg);
    model = 'slrt_ex_osc';
    openExample(model);
    modelSTF = getSTFName(objTarg);
    set_param(model,"SystemTargetFile",modelSTF);
    slbuild(model);
    mldatxname = 'slrt_ex_osc.mldatx';
    objTargInst = slrealtime.Instrument(mldatxname);
    objTargInst.Name = 'TargetInstrument';
    addSignal(objTargInst,'SigGen');
  2. Target 对象添加用于文件日志记录的仪表。

    addForFileLog(objTarg.Instruments,objTargInst);
  3. 加载并运行实时应用程序。仿真运行完成后,将日志数据文件导入开发计算机,并在“仿真数据检查器”中可视化信号。

另请参阅

| | | | | |

主题