这个示例展示了工作流以及使用ModelOperatingPoint对象保存和恢复模拟工作点的好处。
ModelOperatingPoint对象包含与模型模拟相关的所有变量的完整快照。在模拟结束时保存ModelOperatingPoint对象后,Simulink®可以重新加载操作点,并从保存ModelOperatingPoin金宝appt对象的时间开始继续模拟。这个操作会产生相同的模拟结果,就好像模拟从未被中断过一样。
这个例子说明了:
如何保存Final状态(已记录的状态)并不总是足以完全和准确地恢复模拟状态。
如何保存和恢复模拟的完整操作点,从而产生更快的模拟工作流
在模拟期间记录的状态是完整描述模拟状态所需的所有信息的子集。某些块依赖于不作为状态日志记录和最终状态导出的一部分记录的内部信息。一个这样的块是传输延迟块。带有传输延迟块的模型通常很难完全恢复到特定的状态,因为传输延迟的状态不会以结构格式或数组格式保存为“Final states”数据日志记录的一部分。
为了说明这个问题,比较两种情况的模拟结果:
1.模拟一个包含传输延迟块的模型,从0到5秒,并在工作空间中保存“Final states”值。然后加载第一组最终状态并模拟5到10秒。
2.从0到10秒模拟相同的模型,并迫使模型在5秒时产生输出。我们称这个模拟的结果为基线结果,因为它是一个不间断的模拟。
第一次模拟的结果与前半部分的基线结果相匹配。如果第一个模拟的模拟状态已经完全恢复,那么第二个模拟结果将与基线的后半部分相匹配。
首先,加载这个模型:
mdl =“slexVariableTransportDelay”;load_system (mdl);
模拟到时间5,并以结构格式保存最终状态:
= sim (mdl,“StopTime”,“5”,“SaveFinalState”,“上”,...“FinalStateName”,“xFinal”,“SaveFormat”,“结构”);日元= out.ScopeData;
加载最后一次模拟的最终状态并运行到10:
assignin (“基地”,“xFinal”重燃(“xFinal”));着干活= sim (mdl,“开始时间”,“5”,“StopTime”,“十”,...“SaveFinalState”,“关闭”,...“LoadInitialState”,“上”,“InitialState”,“xFinal”);y2 = out1.ScopeData;
运行一个不间断的模拟,将作为基线结果:
out2 = sim (mdl,“OutputOption”,“AdditionalOutputTimes”,...“OutputTimes”,“[0 5 10]”,“LoadInitialState”,“关闭”);y = out2.ScopeData;
策划的结果。注意,基线结果的后半部分与5到10秒的模拟结果不匹配,模拟结果的初始状态由5秒保存的最终状态恢复:
图;为Idx =1:3 subplot(3,1, Idx);情节(y.time y.signals (idx) . values);持有在;情节([y1.time;y2.time),...[y1.signals (idx) . values; y2.signals (idx) . values],“r——”);持有从;网格在;结束
您可以在Simulink.op.ModelOperatingPoint对象中保存完整的最终操作点。金宝appModelOperatingPoint对象包含恢复模拟结果所需的所有变量。通过使用完整的ModelOperatingPoint, Simulink能够完全恢复模金宝app拟状态并重现基线模拟结果。
设置Simulink的参数,在仿真结束时保存金宝app完整的工作点。
out3 = sim (mdl,“StopTime”,“5”,“SaveFinalState”,“上”,...“LoadInitialState”,“关闭”,“SaveOperatingPoint”,“上”,...“FinalStateName”,“xFinal”);日元= out3.ScopeData;
从上次模拟中加载ModelOperatingPoint并额外运行5秒。开始时间值必须保持0.0(该值是原始模拟的开始时间)。软件将原始的模拟启动时间存储在xFinal中。该值必须与当前模拟的开始时间匹配,以启用模拟状态的恢复。
assignin (“基地”,“xFinal”out3.get (“xFinal”));out4 = sim (mdl,“StopTime”,“十”,“SaveFinalState”,“关闭”,...“LoadInitialState”,“上”,“InitialState”,“xFinal”);y2 = out4.ScopeData;
绘制结果并与基线模拟进行比较。注意,这一次,模拟状态已经完全恢复,操作点恢复后的模拟结果与基线匹配。
图;为Idx =1:3 subplot(3,1, Idx);情节(y.time y.signals (idx) . values);持有在情节([y1.time;y2.time),...[y1.signals (idx) . values; y2.signals (idx) . values],“r——”);持有从;网格在;结束
关闭模型并清除本例中使用的变量
close_system (mdl 0);清晰的mdlidxxFinaly日元y2y3出着干活out2out3out4