在开发模型时,您可能希望覆盖特定模拟运行的信号日志设置。在Simulink中,您可以覆盖信号日志属性,而无需更改模型万博1manbetx®编辑器。
为了减少内存开销并便于分析模拟测井结果,重写信号测井特性。通过重写信号日志设置,可以避免重新编译模型。
当您想要:
只需禁用标记为日志记录的大多数信号的日志记录即可专注于一些信号。您可以标记用于日志记录的信号的超集,然后选择它们的不同子集进行日志记录。
从信号日志输出中排除一些信号。
覆盖特定的信号记录属性,例如信号的抽取。
只收集运行多个测试向量时所需的内容。
使用两个接口中的任何一个覆盖信号日志记录设置:
您可以组合使用这两个接口。信号记录选择器创建万博1manbetxSimulink.SimulationData.ModelLoggingInfo
对象,以保存覆盖设置。命令行界面具有名称对应于Signal Logging Selector接口的属性。例如,万博1manbetxSimulink.SimulationData.ModelLoggingInfo
类都有一个LoggingMode
属性,它对应于日志记录模式参数在信号测井选择器。
当您覆盖信号记录设置时,Simulink将在您模拟模型时使用这些覆盖设置。万博1manbetx
万博1manbetxSimulink在模型中保存您指定的信号日志覆盖配置。但是,Simuli万博1manbetxnk不会为模型中的每个信号在信号属性对话框中更改信号记录设置。
在信号日志记录选择器中,如果覆盖某些信号日志记录设置,然后设置日志记录模式来记录模型中指定的所有信号
,模型中定义的日志记录设置显示在信号日志记录选择器中。默认设置灰色,表示您无法覆盖这些设置。重新激活覆盖设置,设置日志记录模式来超越信号
.使用信号记录选择器覆盖特定信号的记录不会影响该信号的信号记录指示器。
如果关闭然后重新打开模型,如果记录模式设置为覆盖该模型的信号,则记录设置覆盖的日志记录设置覆盖。当模型显示信号日志记录指示灯时,它会显示所有记录信号的指示灯,包括已覆盖的记录信号。
请注意
万博1manbetxSimulink在以下情况下重建模型:
模型包含一个或多个标记用于信号记录的信号。
你在快速加速模式下模拟模型。
您使用信号日志记录选择器或MATLAB®命令行修改信号日志记录配置。
再次以快速加速器模式模拟模型。
使用以下方法之一打开信号日志记录选择器:
在配置参数>数据导入/导出窗格中,单击配置日志信号按钮。
提示
要启用配置日志信号按钮,选择信号记录配置参数。
对于包括一个模型模型块,你也可以使用以下方法:
在Simuli万博1manbetxnk编辑器中,右键单击a模型块。
在上下文菜单中,选择日志引用的信号.
集日志记录模式来超越信号
.
请注意
的超越信号
设置将影响模型层次结构的所有级别。此设置可以根据现有设置关闭整个层次结构中任何信号的日志记录。要查看设置,请在模型层次结构窗玻璃
查看包含要覆盖的记录信号的节点。如有必要,展开节点或配置“模型层次结构”窗格以显示屏蔽子系统。请参阅使用信号日志记录选择器查看日志记录配置.
覆盖信号记录设置。根据您的模型是否使用模型引用,使用以下方法之一:
提示
打开配置参数>数据导入/导出窗格中,使用按钮。
如果您的模型不使用模型引用(也就是说,模型不包含任何模型块),使用以下程序覆盖信号记录设置。
打开信号记录选择器。在配置参数>数据导入/导出窗格中,单击配置日志信号按钮。
如有必要,请选择信号记录启用配置日志信号按钮。
集日志记录模式来超越信号
.
查看包含要覆盖的记录信号的节点。如有必要,展开节点或配置“模型层次结构”窗格以显示屏蔽子系统。请参阅使用信号日志记录选择器查看日志记录配置.
在内容窗格表中,选择要覆盖其日志记录设置的信号。
覆盖日志设置:
若要禁用信号的日志记录,请清除数据记录
勾选这个信号。
要覆盖其他信号日志记录设置(例如,抽取),请确保数据记录
复选框被选中。然后,编辑适当列中的值。
如果您的模型使用模型引用(即,该模型包含至少一个模型块),使用以下一个或多个程序覆盖信号记录设置:
启用所有记录信号的记录功能。默认情况下,Simuli万博1manbetxnk在模型中记录所有记录的信号,包括整个模型引用层次结构的记录信号。
如果对顶级模型或顶级模型中任何已记录的信号禁用日志记录模型块在模型引用层次中,然后在模型层次结构窗格中,该节点左侧的复选框为:
坚硬的 (),如果某些信号禁用日志记录。
空(),如果对所有信号禁用日志记录。
为某个节点开启记录所有已记录信号的功能。
打开信号记录选择器。在配置参数>数据导入/导出窗格中,单击配置日志信号按钮。
集日志记录模式来超越信号
.
查看包含要覆盖的记录信号的节点。如有必要,展开节点或配置“模型层次结构”窗格以显示屏蔽子系统。请参阅使用信号日志记录选择器查看日志记录配置.
在模型层次结构窗格,选中节点左侧的复选框,以便复选框有复选标记()。
对于顶级模型,日志记录为顶级模型中的所有记录信号启用,但不为模型引用层次结构中的记录信号启用。
对于一个模型块,则为所选引用模型的整个模型引用层次结构启用日志记录。
禁用节点中记录所有信号。如果为模型节点中的任何信号启用了信号记录,则在模型层次结构窗格中,节点左侧的复选框为:
坚硬的 (),如果对某些信号启用了日志记录。
检查(),如果为所有信号启用了日志记录。
禁用模型节点中的所有记录信号的日志记录:
打开信号记录选择器。在配置参数>数据导入/导出窗格中,单击配置日志信号按钮。
集日志记录模式来超越信号
.
查看包含要覆盖的记录信号的节点。如有必要,展开节点或配置“模型层次结构”窗格以显示屏蔽子系统。请参阅使用信号日志记录选择器查看日志记录配置.
在模型层次结构窗格中,清除节点左侧的复选框,以便该复选框为空()。
对于顶级模型,顶级模型中所有记录的信号都禁用日志记录,但对模型引用层次结构中的记录信号则不禁用日志记录。
对于一个模型块,则对所选引用模型的整个模型引用层次结构禁用日志记录。
覆盖信号子集的信号日志记录。在模型节点中记录一些(而不是全部)记录的信号:
打开信号记录选择器。在配置参数>数据导入/导出窗格中,单击配置日志信号按钮。
集日志记录模式来超越信号
.
查看包含要覆盖的记录信号的节点。如有必要,展开节点或配置“模型层次结构”窗格以显示屏蔽子系统。请参阅使用信号日志记录选择器查看日志记录配置.
在模型层次结构窗格,确保顶级模型的复选框或模型块要么是实心的,要么是实心的(),如果为某些信号禁用日志记录,或者为空(),如果对所有信号禁用日志记录。单击复选框循环不同的状态。
在内容窗格表中,对于要记录的信号,选择数据记录
列。
要启用多个信号的日志记录,请按住转变或者Ctrl键并选择一系列信号或单个信号。选中“中”复选框数据记录
突出显示的信号之一的列。
覆盖其他信号记录属性。除了覆盖数据记录
属性,则可以覆盖其他信号日志记录属性,如抽取。
打开信号记录选择器。在配置参数>数据导入/导出窗格中,单击配置日志信号按钮。
集日志记录模式来超越信号
.
查看包含要覆盖的记录信号的节点。如有必要,展开节点或配置“模型层次结构”窗格以显示屏蔽子系统。请参阅使用信号日志记录选择器查看日志记录配置.
在模型层次结构窗格,确保顶级模型的复选框或模型块是实心的(),如果对某些信号禁用日志记录,或为空(),如果对所有信号禁用日志记录。单击复选框循环不同的状态。
在内容窗格表,对于要覆盖日志记录属性的信号,请通过选择复选框来启用日志记录数据记录
列。
要启用多个信号的日志记录,请按住转变或者Ctrl键并选择一系列信号或单个信号。选中“中”复选框数据记录
突出显示的信号之一的列。
在内容窗格表,修改属性的设置,例如decimatedata.
和大量毁灭
.
用于覆盖信号测井设置的MATLAB命令行界面包括:
的DataLoggingOverride
模型参数-用于查看或设置模型的信号记录覆盖值
以下课程:
- 指定模型的信号日志记录覆盖设置。该类对应于整个信号日志记录选择器接口。万博1manbetxSimulink.SimulationData.ModelLoggingInfo
- 覆盖特定信号的设置。此类对应于信号日志记录选择器中的日志属性表中的行:万博1manbetxSimulink.SimulationData.SignalLoggingInfo
- 覆盖信号日志记录设置,例如抽取。此类对应于信号日志记录选择器中的日志属性表中的可编辑列。万博1manbetxSimulink.SimulationData.LoggingInfo
要查询模型的信号记录覆盖状态,请使用DataLoggingOverride
参数。
要从命令行配置信号日志记录,请使用上面列出的三个类的方法和属性。要应用配置,请使用set_param.
与之DataLoggingOverride
模型参数。
下面几节描述如何使用命令行界面执行一些常见的信号日志配置任务。
要使用命令行界面覆盖信号日志设置,首先创建万博1manbetxSimulink.SimulationData.ModelLoggingInfo
对象。例如,使用以下命令创建模型日志记录覆盖对象ex_bus_logging
模型并自动将模型中的每个记录信号添加到该对象:
Open_System(DocPath(FullFile(Docroot,'工具箱',“万博1manbetx模型”,...“例子”,“ex_bus_logging”)));Open_System(DocPath(FullFile(Docroot,'工具箱',“万博1manbetx模型”,...“例子”,'ex_mdlref_counter_bus')));mi = 万博1manbetxSimulink.SimulationData.ModelLoggingInfo.createFromModel (...“ex_bus_logging”)
mi = modellogginginfo具有属性:型号:'ex_bus_logging'loggingmode:'overricesignals'logasspecifificedbymodels:{}信号:[1x4 simulink.simulationdata.s万博1manbetxignallogginginfo]
的LoggingMode
属性设置为OverrideSignals
,它配置模型日志记录覆盖对象以仅记录指定的信号信号
财产。
要应用模型覆盖对象设置,请使用:
set_param (ex_bus_logging“DataLoggingOverride”、mi);
万博1manbetxSimulink保存模型时会保存设置。
您可以控制包含日志信号的系统类型。默认情况下,万博1manbetxSimulink.SimulationData.ModelLoggingInfo
对象包含记录的信号来自:
图书馆
蒙版子系统
引用模型
活跃的变体
作为替代,您可以使用万博1manbetxSimulink.SimulationData.ModelLoggingInfo
构造函数,并指定万博1manbetxSimulink.SimulationData.SignalLoggingInfo
对象为每个信号。要确保为模型指定了有效的信号记录设置,请使用verifySignalAndModelPaths
方法与万博1manbetxSimulink.SimulationData.ModelLoggingInfo
对象。
要指定是否使用模型中指定的信号日志记录设置和所有引用的模型,或覆盖这些设置,请使用LoggingMode
财产的万博1manbetxSimulink.SimulationData.ModelLoggingInfo
对象。
您可以控制顶级模型和引用模型是使用覆盖信号日志设置还是使用模型指定的信号日志设置。看到
文档。万博1manbetxSimulink.SimulationData.ModelLoggingInfo
这个例子展示了如何记录顶部模型和所有参考模型中指定的所有信号。信号测井输出存储在填充
.
Open_System(DocPath(FullFile(Docroot,'工具箱',“万博1manbetx模型”,...“例子”,“ex_bus_logging”)));Open_System(DocPath(FullFile(Docroot,'工具箱',“万博1manbetx模型”,...“例子”,'ex_mdlref_counter_bus')));mi = 万博1manbetxSimulink.SimulationData.ModelLoggingInfo...(“ex_bus_logging”);mi.LoggingMode='logallasspecifiedinmodel'
mi = ModelLoggingInfo带有属性:Model: 'ex_bus_logging' LoggingMode: ' logallasspecifiedmodel ' LogAsSpecifiedByModels: {} Signals: []
要应用模型覆盖对象设置,请使用:
set_param (ex_bus_logging“DataLoggingOverride”、mi);
下面的例子展示了如何只记录top模型中的信号:
Open_System(DocPath(FullFile(Docroot,'工具箱',“万博1manbetx模型”,...“例子”,“ex_bus_logging”)));Open_System(DocPath(FullFile(Docroot,'工具箱',“万博1manbetx模型”,...“例子”,'ex_mdlref_counter_bus')));mi = 万博1manbetxSimulink.SimulationData.ModelLoggingInfo...(“ex_bus_logging”);mi.LoggingMode=“OverrideSignals”;mi = mi.setLogAsSpecifiedInModel (“ex_bus_logging”,真正的);
要应用模型覆盖对象设置,请使用:
set_param (ex_bus_logging“DataLoggingOverride”、mi);
万博1manbetxSimulink保存模型时会保存设置。
对于具有有限数量的记录信号的简单模型,您可以创建一个空万博1manbetxsimulink.simulationData.modeldataloginfo.
对象。然后创建万博1manbetxSimulink.SimulationData.SignalLoggingInf
O对象,并将这些对象分配给模型日志信息对象。
Open_System(DocPath(FullFile(Docroot,'工具箱',“万博1manbetx模型”,...“例子”,“ex_bus_logging”)));Open_System(DocPath(FullFile(Docroot,'工具箱',“万博1manbetx模型”,...“例子”,'ex_mdlref_counter_bus')));mdl =“ex_bus_logging”;黑色='ex_bus_logging / incrementbuscreator';blkPort = 1;load_system (mdl);ov = 万博1manbetxSimulink.SimulationData.ModelLoggingInfo (mdl);所以= S万博1manbetximulink.SimulationData.SignalLoggingInfo(黑色,blkPort);ov.Signals (1) =;%应用这个对象使模型set_param(mdl,“DataLoggingOverride”,ov);%模拟sim (mdl);%注意,只有信号填充
要应用模型覆盖对象设置,请使用:
set_param(mdl,“DataLoggingOverride”,ov);
万博1manbetxSimulink保存模型时会保存设置。
对于使用模型引用的模型或复杂的模型,要指定要记录的日志信号的子集,请考虑使用findSignal
方法万博1manbetxSimulink.SimulationData.ModelLoggingInfo
对象。例如,只记录来自被引用的模型实例的一个信号:
Open_System(DocPath(FullFile(Docroot,'工具箱',“万博1manbetx模型”,...“例子”,“ex_bus_logging”)));Open_System(DocPath(FullFile(Docroot,'工具箱',“万博1manbetx模型”,...“例子”,'ex_mdlref_counter_bus')));mi = 万博1manbetxSimulink.SimulationData.ModelLoggingInfo.createFromModel (...“ex_bus_logging”);pos = mi.findSignal ({'ex_bus_logging / prespora'...“ex_mdlref_counter_bus /总线的创造者”}, 1)
POS = 4.
为idx = 1:长度(mi.Signals) mi.Signals .LoggingInfo (idx)。DataLogging = (idx == pos);结束
要应用模型覆盖对象设置,请使用:
set_param (ex_bus_logging“DataLoggingOverride”、mi);
万博1manbetxSimulink保存模型时会保存设置。
除了覆盖数据记录
属性,则可以覆盖其他信号日志记录属性,如抽取。
用
属性以覆盖信号记录属性。下面的示例说明如何设置抽取覆盖设置。万博1manbetxSimulink.SimulationData.LoggingInfo
Open_System(DocPath(FullFile(Docroot,'工具箱',“万博1manbetx模型”,...“例子”,“ex_bus_logging”)));Open_System(DocPath(FullFile(Docroot,'工具箱',“万博1manbetx模型”,...“例子”,'ex_mdlref_counter_bus')));mi = 万博1manbetxSimulink.SimulationData.ModelLoggingInfo.createFromModel...(“ex_bus_logging”);pos = mi.findSignal ({'ex_bus_logging / prespora'...“ex_mdlref_counter_bus /总线的创造者”},1);mi.Signals(POS).LoggingInfo.decimateData = true;mi.signals(pos).logginginfo.decimation = 2;
要应用模型覆盖对象设置,请使用:
set_param (ex_bus_logging“DataLoggingOverride”、mi);
万博1manbetxSimulink保存模型时会保存设置。