当您模拟一个statflow时®在Simulink中的金宝app图表®模型中,您可以将本地、输出和活动状态数据的值记录到金宝appSimulink.SimulationData.Dataset
对象。仿真之后,您可以通过仿真数据检查器、逻辑分析仪或MATLAB访问该对象®工作区。记录数据的工作流是:
对于模型和图表,默认情况下启用信号记录。禁用或重新启用信号记录:
打开模型配置参数对话框。
选择数据导入/导出.
在信号窗格中,选择信号记录复选框以启用图表的日志记录。若要禁用日志记录,请清除复选框。
(可选)为信号日志对象指定自定义名称。默认名称为logsout
.使用这个对象,您可以在MATLAB工作区变量中访问日志数据。有关更多信息,请参见使用信号记录导出信号数据(金宝app模型).
(可选)格式字段,选择一个信号记录格式。选项包括:
数组
结构
结构随着时间的推移
数据集
默认设置为数据集
.有关更多信息,请参见时间、状态和输出数据格式(金宝app模型).
点击好吧.
您可以通过statflow Signal logging对话框或从命令行以编程方式为状态、本地数据和输出数据设置日志属性。
通过属性检查器、模型资源管理器或状态或数据对象的属性对话框一次为一个状态或数据对象配置日志记录属性。选择日志记录选项卡并根据需要修改属性。有关更多信息,请参见日志记录属性.
例如,在sf_semantics_hotel_checkin
模型:
打开酒店
图表。
打开“符号”窗格。在模拟选项卡,在准备,点击符号面板.
打开属性检查器。在模拟选项卡,在准备,点击属性检查器.
配置服务
用于日志记录的本地数据。
在“符号”窗格中,选择服务
.
在属性检查器中,在日志记录,选择测井信号数据复选框。
配置Dining_area
负责日志记录。
在状态流编辑器上,选择Dining_area
状态。
在模拟选项卡,在准备中,选择日志的自我活动.或者,在属性检查器中,在日志记录,选择日志的自我活动复选框。
默认情况下,这种状态的日志记录名称是分级信号名称Check_in.Checked_in.Executive_suite.Dining_area
.若要为状态分配较短的名称,请设置日志的名字来自定义
并输入餐厅
.
通过statflow Signal logging对话框为多个状态和数据对象配置日志属性。从所有状态、本地和输出数据的列表中选择要记录的图表对象。有关更多信息,请参见日志记录属性.
例如,在sf_semantics_hotel_checkin
模型:
打开酒店
图表。
要记录多个信号,按住shift键选择要记录的状态。在模拟选项卡,在准备中,选择日志的自我活动.
日志徽章在模型中标记记录的信号。
您可以添加一个输出端口来监视图表活动。从状态流编辑器,在模拟选项卡上,单击添加输出端口.一个新端口出现在状态流图中。将此端口连接到查看器以监视图表子活动。
从命令行以编程方式配置状态和数据对象的日志记录属性。若要启用状态或数据对象的日志记录,请获取该对象的句柄并设置其LoggingInfo。数据采集
财产1
.有关状态流编程接口的更多信息,请参见Stateflow API概述.
例如,在sf_semantics_hotel_checkin
模型:
打开酒店
图表。
访问Stateflow。状态
对象对应的Dining_area
状态:
diningState =找到(sfroot,“是”,“Stateflow。国家的,“名字”,“Dining_area”);
访问Stateflow。数据
对象,该对象对应于本地数据服务
:
serviceData =找到(sfroot,“是”,“Stateflow。数据的,“名字”,“服务”);
为Dining_area
国家和服务
数据:
diningState.LoggingInfo.DataLogging = true;serviceData.LoggingInfo.DataLogging = true;
的日志名称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工作空间查看记录的数据。
当你模拟模型时仿真数据检查图标突出显示,表明它有新的模拟数据。
要打开仿真数据检查器,请在模拟选项卡,单击图标.
检查和比较模拟过程中记录的信号。看到仿真数据检查(金宝app模型).
当你模拟模型时逻辑分析仪图标突出显示,表明它有新的模拟数据。要使用逻辑分析仪,您必须有DSP系统工具箱™或SoC Blockset™。
要打开逻辑分析仪,请在模拟选项卡,单击图标.
查看,测量和比较在模拟期间记录的状态。看到逻辑分析仪(DSP系统工具箱).
要访问信号测井对象,在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
要访问已记录的元素,请使用得到
函数。您可以通过名称、索引或块路径访问已记录的元素。
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]
要访问每个已记录元素的已记录数据和时间,请使用值。数据
和值。时间
属性。例如:
控件以表格形式排列记录的数据表格
函数。
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
如果您使用快速启动启用后,第一次运行后的任何运行都会重复第一次记录的数据点。当您运行处理这些数据点的算法时,您必须考虑到这种重复。
金宝appSimulink.SimulationData.Dataset
(金宝app模型)|Stateflow.SimulationData.Data
|Stateflow.SimulationData.State