主要内容

日志模拟输出状态和数据

当您模拟一个statflow时®在Simulink中的金宝app图表®模型中,您可以将本地、输出和活动状态数据的值记录到金宝appSimulink.SimulationData.Dataset对象。仿真之后,您可以通过仿真数据检查器、逻辑分析仪或MATLAB访问该对象®工作区。记录数据的工作流是:

  1. 对图表启用信号记录,并选择记录格式。看到启动信号记录

  2. 配置信号记录的状态和数据。看到配置状态和记录数据

  3. 模拟图。

  4. 访问记录的数据。看到接入信号测井数据

启动信号记录

对于模型和图表,默认情况下启用信号记录。禁用或重新启用信号记录:

  1. 打开模型配置参数对话框。

  2. 选择数据导入/导出

  3. 信号窗格中,选择信号记录复选框以启用图表的日志记录。若要禁用日志记录,请清除复选框。

  4. (可选)为信号日志对象指定自定义名称。默认名称为logsout.使用这个对象,您可以在MATLAB工作区变量中访问日志数据。有关更多信息,请参见使用信号记录导出信号数据(金宝app模型)

  5. (可选)格式字段,选择一个信号记录格式。选项包括:

    • 数组

    • 结构

    • 结构随着时间的推移

    • 数据集

    默认设置为数据集.有关更多信息,请参见时间、状态和输出数据格式(金宝app模型)

  6. 点击好吧

配置状态和记录数据

您可以通过statflow Signal logging对话框或从命令行以编程方式为状态、本地数据和输出数据设置日志属性。

记录单个状态和数据

通过属性检查器、模型资源管理器或状态或数据对象的属性对话框一次为一个状态或数据对象配置日志记录属性。选择日志记录选项卡并根据需要修改属性。有关更多信息,请参见日志记录属性

例如,在sf_semantics_hotel_checkin模型:

  1. 打开酒店图表。

  2. 打开“符号”窗格。在模拟选项卡,在准备,点击符号面板

  3. 打开属性检查器。在模拟选项卡,在准备,点击属性检查器

  4. 配置服务用于日志记录的本地数据。

    1. 在“符号”窗格中,选择服务

    2. 在属性检查器中,在日志记录,选择测井信号数据复选框。

  5. 配置Dining_area负责日志记录。

    1. 在状态流编辑器上,选择Dining_area状态。

    2. 模拟选项卡,在准备中,选择日志的自我活动.或者,在属性检查器中,在日志记录,选择日志的自我活动复选框。

    3. 默认情况下,这种状态的日志记录名称是分级信号名称Check_in.Checked_in.Executive_suite.Dining_area.若要为状态分配较短的名称,请设置日志的名字自定义并输入餐厅

日志多个信号

通过statflow Signal logging对话框为多个状态和数据对象配置日志属性。从所有状态、本地和输出数据的列表中选择要记录的图表对象。有关更多信息,请参见日志记录属性

例如,在sf_semantics_hotel_checkin模型:

  1. 打开酒店图表。

  2. 要记录多个信号,按住shift键选择要记录的状态。在模拟选项卡,在准备中,选择日志的自我活动

  3. 日志徽章在模型中标记记录的信号。

添加输出端口

您可以添加一个输出端口来监视图表活动。从状态流编辑器,在模拟选项卡上,单击添加输出端口.一个新端口出现在状态流图中。将此端口连接到查看器以监视图表子活动。

使用命令行API记录图表信号

从命令行以编程方式配置状态和数据对象的日志记录属性。若要启用状态或数据对象的日志记录,请获取该对象的句柄并设置其LoggingInfo。数据采集财产1.有关状态流编程接口的更多信息,请参见Stateflow API概述

例如,在sf_semantics_hotel_checkin模型:

  1. 打开酒店图表。

  2. 访问Stateflow。状态对象对应的Dining_area状态:

    diningState =找到(sfroot,“是”“Stateflow。国家的“名字”“Dining_area”);

  3. 访问Stateflow。数据对象,该对象对应于本地数据服务

    serviceData =找到(sfroot,“是”“Stateflow。数据的“名字”“服务”);

  4. Dining_area国家和服务数据:

    diningState.LoggingInfo.DataLogging = true;serviceData.LoggingInfo.DataLogging = true;

  5. 的日志名称Dining_area状态到自定义名称餐厅

    启用自定义命名diningState.LoggingInfo.NameMode =“自定义”%输入自定义名称diningState.LoggingInfo.LoggingName =“餐厅”

接入信号测井数据

在模拟过程中,statflow将记录的数据保存在金宝appSimulink.SimulationData.Dataset(金宝app模型)信号日志对象。

例如,假设您配置sf_semantics_hotel_checkin模型来记录服务局部的数据和活动Dining_area状态。启动模拟后,通过切换第一个开关进入酒店,并通过切换第二个开关多次订购客房服务。停止模拟后,您可以通过simulation data Inspector、Logic Analyzer或MATLAB工作空间查看记录的数据。

通过模拟数据检查器查看记录的数据

当你模拟模型时仿真数据检查图标突出显示,表明它有新的模拟数据。

  1. 要打开仿真数据检查器,请在模拟选项卡,单击图标仿真数据检查器图标

  2. 检查和比较模拟过程中记录的信号。看到仿真数据检查(金宝app模型)

通过逻辑分析仪查看记录的数据

当你模拟模型时逻辑分析仪图标突出显示,表明它有新的模拟数据。要使用逻辑分析仪,您必须有DSP系统工具箱™或SoC Blockset™。

  1. 要打开逻辑分析仪,请在模拟选项卡,单击图标逻辑分析仪的图标

  2. 查看,测量和比较在模拟期间记录的状态。看到逻辑分析仪(DSP系统工具箱)

查看记录的数据MATLAB工作空间

  1. 要访问信号测井对象,在MATLAB命令提示符下输入:

    logsout = out.logsout
    logsout =金宝appSimulink.SimulationData.Dataset名称BlockPath ___________ ________________________________ 1 [1x1 State] Dining Room sf_semantics_hotel_checkin/Hotel 2 [1x1 Data] service sf_semantics_hotel_checkin/Hotel

  2. 要访问已记录的元素,请使用得到函数。您可以通过名称、索引或块路径访问已记录的元素。

    diningLog =得到(logsout,“餐厅”
    diningLog =Stateflow.SimulationData.State包:Stateflow。模拟数据Properties: Name: 'Dining Room' BlockPath: [1×1 Simulink.SimulationData.BlockPath] Values: [1×1 timeseries]
    serviceLog =得到(logsout,“服务”
    serviceLog =Stateflow.SimulationData.Data包:Stateflow。模拟数据Properties: Name: 'service' BlockPath: [1×1 Simulink.SimulationData.BlockPath] Values: [1×1 timeseries]

  3. 要访问每个已记录元素的已记录数据和时间,请使用值。数据值。时间属性。例如:

    • 控件以表格形式排列记录的数据表格函数。

      T1 =表(diningLog.Values.Time diningLog.Values.Data);T1.Properties。VariableNames = {“时间”“数据”
      T1 = 6×2表格时间数据__________ ____ 0 0 1.8607e+06 1 1.9653e+06 0 1.9653e+06 1 1.9653e+06 0 2.2912e+06 1
      T2 =表(serviceLog.Values.Time serviceLog.Values.Data);T2.Properties。VariableNames = {“时间”“数据”
      T2 = 6×2表格时间数据__________ ____ 1.7076e+06 0 1.8607e+06 1 1.9653e+06 2 1.9653e+06 3 1.9653e+06 4 2.2912e+06 5

    • 控件在图形窗口中查看已记录的数据情节函数。

      X = serviceLog.Values.Time;Y = serviceLog.Values.Data;情节(X, Y,“o”)包含(“时间”) ylabel (“数据”

    • 导出记录的数据到Excel®通过将记录值数组传递给xlswrite功能:

      A = [double(diningLog.Values.Time) double(diningLog.Values.Data)];xlswrite (“dining_log.xls”,);

日志多维数据

statflow将对多维信号的每次更新记录为单个更改。例如,更新一个矩阵的两个元素一个分别

一个[1][1]= 1;一个[1][2]= 1;
在记录的数据中产生两个不同的更改。相反,更新矩阵一个在单个命令中
= 1;
在记录的数据中产生单个更改,即使该命令暗示[我][j] = 1对于所有值j

测井数据的局限性

在以外部模式模拟模型时,不支持statflow数据的日志记录。金宝app

如果您使用快速启动启用后,第一次运行后的任何运行都会重复第一次记录的数据点。当您运行处理这些数据点的算法时,您必须考虑到这种重复。

另请参阅

对象

功能

工具

相关的话题