主要内容

日志状态和模拟输出数据

当你模拟Stateflow®图的仿真软件金宝app®模型中,您可以为本地日志值,输出和活动状态数据金宝appSimulink.SimulationData.Dataset对象。在仿真之后,您可以通过访问这个对象仿真数据检查(金宝app模型),逻辑分析仪(DSP系统工具箱),或者在MATLAB®工作区。测井资料的工作流程是:

  1. 启动信号日志表和选择一个日志格式。看到启动信号记录

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

  3. 模拟图。

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

启动信号记录

信号日志是默认启用模型和图表。禁用或使再能信号记录:

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

  2. 数据导入/导出窗格中,选择信号记录启用日志为图表。禁用日志记录、清晰信号记录。有关更多信息,请参见信号记录(金宝app模型)

  3. (可选)指定一个自定义信号记录对象的名称。默认的名称是logsout。使用这个对象,您可以访问日志数据在MATLAB工作空间变量。有关更多信息,请参见节省使用信号测井信号数据(金宝app模型)

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

    • 数组

    • 结构

    • 结构随着时间的推移

    • 数据集

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

配置状态和数据日志记录

你可以设置日志记录属性状态,本地数据,和输出数据在图表,通过Stateflow信号日志对话框,或以编程方式从命令行。

各州日志和数据

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

例如:

  1. 打开sf_semantics_hotel_checkin模型:

    openExample (“stateflow / SemanticsHotelCheckinExample”)

    更多信息关于这个例子中,看到的在执行期间Stateflow对象如何交互

  2. 打开酒店图表。

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

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

  5. 配置服务本地数据日志记录。

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

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

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

    1. 在Stateflow编辑器中,选择Dining_area状态。

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

    3. 默认情况下,这个状态的日志名称等级信号名称Check_in.Checked_in.Executive_suite.Dining_area。分配一个短名称,设置日志的名字自定义并输入餐厅

日志多个信号

为多个州配置日志记录属性和数据对象通过Stateflow信号日志对话框。从列表中选择图表对象记录所有的州,当地和输出数据。有关更多信息,请参见日志记录属性

例如:

  1. 打开sf_semantics_hotel_checkin模型:

    openExample (“stateflow / SemanticsHotelCheckinExample”)
  2. 打开酒店图表。

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

  4. 日志徽章标志着记录信号模型中。

添加一个输出端口

您可以添加一个输出端口监视图的活动。Stateflow编辑的模拟选项卡上,单击添加输出端口。将出现一个新的端口Stateflow图表。该端口连接到查看器来监控图表孩子活动。

通过使用命令行API日志图表信号

为州和配置日志记录属性数据对象编程方式从命令行。启用日志状态或数据对象,处理的对象和设置它LoggingInfo.DataLogging财产1。Stateflow编程接口的更多信息,参见Stateflow API的概述

例如:

  1. 打开sf_semantics_hotel_checkin模型:

    openExample (“stateflow / SemanticsHotelCheckinExample”)
  2. 访问Stateflow.State对应的对象Dining_area状态:

    diningState =找到(sfroot,“是”,“Stateflow.State”、名称=“Dining_area”);

  3. 访问Stateflow.Data对象对应于本地数据服务:

    serviceData =找到(sfroot,“是”,“Stateflow.Data”、名称=“服务”);

  4. 启用日志记录的Dining_area国家和服务数据:

    diningState.LoggingInfo。数据采集= true;serviceData.LoggingInfo。数据采集= true;

  5. 更改的日志名称Dining_area自定义名称餐厅:

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

信号测井数据的访问

在仿真中,Stateflow节省记录数据金宝appSimulink.SimulationData.Dataset(金宝app模型)信号日志对象。

例如,假设您配置sf_semantics_hotel_checkin模型来记录服务本地数据的活动Dining_area状态。仿真开始后,您入住的酒店客房服务第一开关切换两次和秩序多次第二切换开关。停止仿真后,您可以查看通过仿真数据检查,记录数据逻辑分析仪,或者在MATLAB工作区。

通过仿真数据检查记录数据视图

打开仿真数据检查,模拟选项卡上,选择数据检查。当你模拟模型,突出显示的图标,表明仿真数据检查新的仿真数据。有关更多信息,请参见利用仿真数据检查员视图状态的活动

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

打开逻辑分析仪,在模拟选项卡上,选择逻辑分析仪。当你模拟模型,突出显示的图标来表示的逻辑分析仪新的仿真数据。有关更多信息,请参见视图Stateflow州逻辑分析仪

请注意

使用逻辑分析仪,你必须有DSP系统工具箱™,SoC Blockset™,或高密度脂蛋白验证人™。

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

  1. 访问信号记录对象,在MATLAB命令提示符,输入:

    logsout = out.logsout
    logsout =金宝appSimulink.SimulationData.Dataset“logsout”与2元素名称BlockPath ___________ ________________________________ 1 [1 x1状态]餐厅sf_semantics_hotel_checkin /酒店2 1 x1数据服务sf_semantics_hotel_checkin /酒店

  2. 访问记录元素,使用得到函数。您可以访问记录元素的名字,指数,或块路径。

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

  3. 每个登录访问记录的数据和时间元素,使用Values.DataValues.Time属性。例如:

    • 用表格的形式安排记录数据,通过使用函数。

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

    • 视图记录数据图窗口使用情节函数。

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

      在模拟图显示数据记录。

    • 记录数据导出到Excel®电子表格通过记录值的数组xlswrite功能:

      一个=[双(diningLog.Values.Time)双(diningLog.Values.Data)];xlswrite (“dining_log.xls”,);

请注意

信号记录对象记录一个数据点,每次Stateflow图表的数据日志记录写道,即使不改变数据的价值。例如,在本例中,数据点的值0初始化本地数据的图表时对应服务0在时间0当一个缺省转换集服务0在时间1.7076 e + 06

日志多维数据

Stateflow日志每更新一个多维信号作为一个单独的改变。例如,更新两个矩阵的元素一个分别

[1][1]= 1;[1][2]= 1;
产生两种不同的记录数据的变化。相比之下,更新一个矩阵一个在一个命令
= 1;
产生一个单一的变化记录数据,意味着即使命令[我][j] = 1所有的值j

限制日志数据

当模拟模型在外部模式中,不支持日志Stateflow数据。金宝app

如果你日志状态活动或数据从一个图表快速启动启用,任何运行后第一次运行重复第一个记录的数据点。当您运行算法,处理这些数据点,你必须解释这种重复。

另请参阅

应用程序

对象

功能

工具

相关的话题