for Each子系统中用于记录信号数据的方法取决于信号是否为a:
非总线信号-直接记录每个子系统的
总线或总线阵列信号-使用以下方法之一:
使用一个总线选择器块选择要记录的信号并标记这些信号以进行信号记录。这种方法适用于许多型号。
把信号连接到外埠阻塞并记录For Each子系统外部的信号。当您想要记录整个总线信号,并且该总线信号包括许多总线元素信号时,使用这种方法。
请注意
不能将总线信号直接记录在每个子系统的日志中。
如果存在以下任一条件,则无法在每个子系统的内部的引用模型中记录信号:
For Each子系统处于快速加速模式的模型模拟中。
For Each子系统本身位于由模型在加速模式下阻塞。
for each子系统中每个记录的信号的数据被单独保存数据集
元素作为金宝appSimulink.SimulationData.Signal
对象。记录的信号数据的格式取决于您如何设置数据集信号格式配置参数:
如果设置为timeseries
,则每个信号对象包含一个MATLAB数组®timeseries
对象。每个迭代的数据都是分开的。
如果设置为时间表
,则每个信号对象包含一个MATLAB单元数组时间表
对象。这个数组的维数与For Each迭代的次数匹配。例如,如果For Each子系统有三个迭代,那么记录的数据有一个3 x1
的数组timeseries
或时间表
对象。对于嵌套的For Each子系统,每一层嵌套都向记录的数据添加另一个维度。
本例在嵌套的For Each子系统中记录一个信号。
打开ex_loginsideforeach_nested
模型。
打开系统(docpath)(完整文件(docroot、,“工具箱”,“金宝app模型”,...“例子”,'ex_loginsideforeach_nested.slx')))
在仿真软件金宝app®编辑器,打开对于每个子系统1
Block,在子系统内部,打开对于每个子系统2
块。
对模型进行仿真,并对顶子系统的第一次迭代和底子系统的第三次迭代的信号测井数据进行检验。的2 x3
timeseries
每个级别第一次迭代两次,第二次(嵌套)迭代三次的结果
sim卡(“ex_loginsideforeach_nested”);logsout.get (“nestedDelay”)
ans=Si金宝appmulink.SimulationData.Signal包:Simulink.SimulationData属性:带字段的结构:名称:'nestedDelay'传播名称:''块路径:[1×1 Simulink.SimulationData.BlockPath]端口类型:'outport'端口索引:1个值:[2×3 timeseries]
的值内斯特德雷
对象。
logsout.get (“nestedDelay”) . values(1、3)
timeseries公用属性:名称:“nestedDelay”时间:[5x1 double]时间信息:[1x1 tsdata.timemetadata]数据:[1x5 double]数据信息:[1x1 tsdata.datametadata]
本例在For Each子系统中记录两个总线信号。对于一个总线信号,你用a总线选择器阻塞,然后记录每个选定的信号。对于其他的总线信号,你使用外埠每个子系统的块和日志在外部。
打开ex_for_each_log_bus
模型。
打开系统(docpath)(完整文件(docroot、,“工具箱”,“金宝app模型”,...“例子”,“ex_for_each_log_bus.slx”)))
在Simuli金宝appnk编辑器中,打开为每个子系统
块。
将信号记录在限制
总线信号,这个信号被分支成a总线选择器块,并且每个总线元素信号都被标记用于信号记录。
记录全部COUNTERBUS
信号,总线信号被连接到一个外埠块。For Each子系统的输出信号被标记为信号记录。要使总线信号跨越子系统边界,则总线生成创建COUNTERBUS
信号有输出数据类型参数设置为总线:COUNTERBUS
和输出为非虚拟总线复选框选中。
模拟模型并检查信号测井输出。关注记录在For Each子系统内部和记录在For Each子系统外部的总线信号中的一个总线元素信号。
sim卡(“每个日志总线的ex_”);logsout
金宝appSimulink.SimulationData.Dataset logsout BlockPath 3元素名称 ________________________ ________________________________________ 1 [1 x1信号]OutsideForEach ex_for_each_log_bus /为每个子系统2 [1 x1信号]< lower_saturation_limit >…g_bus/For Each Subsystem/Bus Selector 3 [1x1 Signal]…g_bus/For Each Subsystem/Bus Selector -使用大括号{}来使用index访问、修改或添加元素。
的值饱和下限
对象。
logsout{2}.值
具有以下属性的3×1 timeseries数组:事件名称UserData Data DataInfo Time TimeInfo Quality QualityInfo IsTimeFirst TreatNaNasMissing Length
的值OutsideForEach
对象。
logsout{1}。值
Ans = 3×1结构数组的字段:数据限制
如果数据集
信号格式是时间表
,则输出为时间表
对象。例如:
= sim卡(“每个日志总线的ex_”,“DatasetSignalFormat”,“时间表”); out.logsout{2}.value
Ans = 3x1 cell array {11x1 timetable} {11x1 timetable} {11x1 timetable}