状态和数据的日志模拟输出
当您模拟状态流时®图表在Simulink金宝app中®模型中,可以将本地、输出和活动状态数据的值记录到金宝appSimulink.SimulationData.Dataset
对象。仿真完成后,您可以通过仿真数据检查器、逻辑分析器或MATLAB访问该对象®工作区。日志数据的工作流程是:
为图表启用信号记录,并选择记录格式。看到启用信号记录.
配置信号记录的状态和数据。看到配置日志记录状态和数据.
模拟图表。
访问记录的数据。看到获取信号测井数据.
启用信号记录
模型和图表默认启用信号记录。禁用或重新启用信号记录:
打开“配置参数”对话框。
在数据导入/导出窗格中,选择信号记录为图表启用日志记录。禁用日志记录,清除信号记录.有关更多信息,请参见信号记录(金宝app模型).
(可选)为信号记录对象指定自定义名称。默认名称为
logsout
.使用此对象,您可以访问MATLAB工作区变量中的日志记录数据。有关更多信息,请参见使用信号日志导出信号数据(金宝app模型).(可选)在格式字段,选择信号记录格式。选项包括:
数组
结构
结构随时间变化
数据集
默认设置为
数据集
.有关更多信息,请参见时间、状态和输出数据格式(金宝app模型).
配置日志记录状态和数据
您可以通过“状态流信号日志记录”对话框或从命令行以编程方式设置图表内部的状态、本地数据和输出数据的日志记录属性。
记录个人状态和数据
方法为每次一个状态或数据对象配置日志记录属性属性检查器、“模型资源管理器”或状态或数据对象的属性对话框。选择日志记录选项卡并根据需要修改属性。有关更多信息,请参见日志记录属性.
例如:
打开
sf_semantics_hotel_checkin
模型:openExample (“stateflow / SemanticsHotelCheckinExample”)
有关此示例的详细信息,请参见状态流对象在执行过程中如何交互.
打开
酒店
图表。打开符号窗格。在模拟选项卡,在准备,点击符号面板.
打开属性检查器.在模拟选项卡,在准备,点击属性检查器.
配置
服务
用于日志记录的本地数据。在符号窗格中,选择
服务
.在属性检查器下,日志记录,选择测井信号数据复选框。
配置
Dining_area
日志状态。在“状态流编辑器”上,选择
Dining_area
状态。在模拟选项卡,在准备中,选择记录自我活动.另外,在属性检查器下,日志记录,选择记录自我活动复选框。
默认情况下,此状态的日志记录名称是分层信号名称
Check_in.Checked_in.Executive_suite.Dining_area
.若要为状态分配较短的名称,请设置日志的名字来自定义
并输入餐厅
.
记录多个信号
通过“状态流信号日志”对话框为多个状态和数据对象配置日志属性。从所有状态、本地和输出数据的列表中选择要记录的图表对象。有关更多信息,请参见日志记录属性.
例如:
打开
sf_semantics_hotel_checkin
模型:openExample (“stateflow / SemanticsHotelCheckinExample”)
打开
酒店
图表。要记录多个信号,按住shift键选择要记录的状态。在模拟选项卡,在准备中,选择记录自我活动.
日志标识标记在模型中记录信号。
添加输出端口
您可以添加一个输出端口来监视图表活动。的状态流编辑器中模拟选项卡上,单击添加输出端口.一个新的端口出现在您的状态流程图上。将此端口连接到查看器以监视图表子活动。
使用命令行API的日志图表信号
从命令行以编程方式为状态和数据对象配置日志记录属性。若要启用状态或数据对象的日志记录,请获取该对象的句柄并设置其LoggingInfo。数据采集
财产1
.有关状态流编程式接口的详细信息,请参见statflow API概述.
例如:
打开
sf_semantics_hotel_checkin
模型:openExample (“stateflow / SemanticsHotelCheckinExample”)
访问
Stateflow。状态
对象的Dining_area
状态:diningState = find(sfroot,“是”,“Stateflow。状态”、名称=“Dining_area”);
访问
Stateflow。数据
与本地数据对应的服务
:serviceData = find(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
状态。在开始模拟之后,您通过拨动第一个开关两次入住酒店,并通过拨动第二个开关多次订购客房服务。停止仿真后,可以通过仿真数据检查器、逻辑分析器或MATLAB工作空间查看记录的数据。
通过模拟数据检查器查看日志数据
当您模拟模型时,模拟数据检查器图标将高亮显示,以指示它有新的模拟数据。
要打开模拟数据检查器,请在模拟选项卡,单击图标.
检查和比较模拟过程中记录的信号。看到模拟数据检查器(金宝app模型).
通过逻辑分析仪查看日志数据
当您模拟模型时,逻辑分析仪图标将高亮显示,以指示它有新的模拟数据。要使用逻辑分析仪,您必须具有DSP系统工具箱™或SoC Blockset™。
要打开逻辑分析器,请在模拟选项卡,单击图标.
查看、测量和比较模拟过程中记录的状态。看到逻辑分析仪(DSP系统工具箱).
中查看已记录数据MATLAB工作空间
要访问信号记录对象,在MATLAB命令提示符处输入:
Logsout = out.logsout
logsout =金宝appSimulink.SimulationData.Dataset名称BlockPath ___________ ________________________________ 1 [1x1状态]餐厅sf_semantics_hotel_checkin/酒店2 [1x1数据]服务sf_semantics_hotel_checkin/酒店
要访问已记录的元素,请使用
得到
函数。您可以通过名称、索引或块路径访问已记录的元素。diningLog = get(logsout,“餐厅”)
diningLog =Stateflow.SimulationData.State包:Stateflow。模拟数据Properties: Name: 'Dining Room' BlockPath: [1×1 Simulink.SimulationData.BlockPath] Values: [1×1 timeseries]
serviceLog = get(logsout,“服务”)
serviceLog =Stateflow.SimulationData.Data包:Stateflow。模拟数据Properties: Name: 'service' BlockPath: [1×1 Simulink.SimulationData.BlockPath] Values: [1×1 timeseries]
要访问每个已记录元素的已记录数据和时间,请使用
值。数据
而且值。时间
属性。例如:控件以表格形式排列已记录的数据
表格
函数。T1 = table(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 = table(serviceLog.Values.Time,serviceLog.Values.Data);T2.Properties。VariableNames = [“时间”,“数据”]
T2 = 6×2表格时间数据__________ ____ 0 0 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”,);
请注意
每当状态流图写入您正在记录的数据时,信号日志对象都会记录一个数据点,即使数据没有改变值。例如,在本例中,值为的数据点0
对应于图表初始化本地数据的时间服务
来0
在时间0
以及设置默认转换时服务
来0
在时间1.7076 e + 06
.
日志多维数据
状态流将对多维信号的每次更新记录为单个更改。例如,更新矩阵的两个元素一个
分别
A[1][1] = 1;A[1][2] = 1;
一个
在一个命令中A = 1;
A[i][j] = 1
对于所有的值我
而且j
.
测井数据的限制
在外部模式下模拟模型时,不支持记录Stateflow数据。金宝app
如果您从图表中用快速启动启用后,第一次运行之后的任何运行都将复制第一次记录的数据点。在运行处理这些数据点的算法时,必须考虑到这种重复。
另请参阅
对象
金宝appSimulink.SimulationData.Dataset
(金宝app模型)|Stateflow.SimulationData.Data
|Stateflow.SimulationData.State
功能
工具
- 信号特性(金宝app模型)
相关的话题
- 配置记录信号(金宝app模型)
- 使用信号日志导出信号数据(金宝app模型)