文档

覆盖信号记录设置

覆盖信号记录设置的好处

在开发模型时,您可能希望覆盖特定模拟运行的信号日志记录设置。您可以在不更改Simulink中的模型的情况下覆盖信号日志记录属性金宝app®编辑器。

为了减少内存开销和方便分析模拟测井结果,覆盖信号测井属性。通过覆盖信号日志记录设置,您可以避免重新编译模型。

覆盖信号日志属性在以下情况下非常有用:

  • 通过禁用标记为日志记录的大多数信号的日志记录,只关注少数信号。您可以标记信号的超集进行日志记录,然后选择它们的不同子集进行日志记录。

  • 从信号日志输出中排除一些信号。

  • 覆盖信号的特定信号日志记录属性,例如抽取。

  • 在运行多个测试向量时,只收集您需要的内容。

覆盖信号日志设置的两个接口

使用两个接口中的任意一个来覆盖信号日志设置:

您可以使用这两个接口的组合。信号记录选择器创建金宝appSimulink.SimulationData.ModelLoggingInfo对象在保存覆盖设置时。命令行界面具有名称与Signal Logging Selector接口对应的属性。例如,金宝appSimulink.SimulationData.ModelLoggingInfo类都有一个LoggingMode属性,它对应于日志记录模式参数中的信号记录选择器。

信号记录设置覆盖的范围

当您覆盖信号日志记录设置时,Simulink将在模拟模型时使用这些覆盖设置。金宝app

金宝appSimulink在模型中保存您指定的信号日志覆盖配置。但是,Simuli金宝appnk不会更改模型中每个信号的“信号属性”对话框中的信号记录设置。

在信号日志记录选择器中,如果覆盖某些信号日志记录设置,然后设置日志记录模式按模型中指定的记录所有信号,模型中定义的日志记录设置将出现在Signal logging Selector中。覆盖设置是灰色的,表示您不能覆盖这些设置。若要重新激活覆盖设置,请设置日志记录模式覆盖信号.使用信号日志选择器覆盖特定信号的日志记录不会影响该信号的信号日志记录指示器。

如果您关闭然后重新打开模型,那么如果日志模式被设置为覆盖该模型的信号,那么您所做的日志设置将生效。当模型显示信号日志指示符时,它将显示所有日志信号的指示符,包括您已覆盖的日志信号。

请注意

金宝appSimulink在以下情况下重建模型:

  1. 该模型包含一个或多个标记为信号记录的信号。

  2. 在快速加速模式下模拟模型。

  3. 您可以使用信号记录选择器或MATLAB®命令行修改信号日志记录配置。

  4. 您再次在快速加速模式下模拟模型。

用信号记录选择器覆盖信号记录设置

  1. 打开信号记录选择器,使用以下方法之一:

    • 配置参数>数据导入/导出窗格中,单击配置记录信号按钮。

      提示

      要启用配置记录信号按钮,选择信号记录配置参数。

    • 对于包含模型块,你还可以使用以下方法:

      1. 在Simuli金宝appnk编辑器中,右键单击a模型块。

      2. 在上下文菜单中,选择日志引用的信号

  2. 日志记录模式覆盖信号

    请注意

    覆盖信号设置影响模型层次结构的所有级别。根据现有的设置,该设置可以关闭整个层次结构中任何信号的日志记录。中选择适当的节点以查看设置模型层次结构窗格。

  3. 查看包含要覆盖的日志信号的节点。如果需要,展开节点或配置Model Hierarchy窗格以显示被屏蔽的子系统。看到使用信号日志选择器查看日志配置

  4. 覆盖信号记录设置。根据你的模型是否使用模型引用,使用以下方法之一:

提示

打开配置参数>数据导入/导出窗格中的信号记录选择器,使用按钮。

没有模型引用的模型:覆盖信号记录设置

如果您的模型不使用模型引用(也就是说,模型不包含任何模型块),使用以下程序覆盖信号日志设置。

  1. 打开信号记录选择器。在配置参数>数据导入/导出窗格中,单击配置记录信号按钮。

    • 如果有必要,选择信号记录要启用配置记录信号按钮。

  2. 日志记录模式覆盖信号

  3. 查看包含要覆盖的日志信号的节点。如果需要,展开节点或配置Model Hierarchy窗格以显示被屏蔽的子系统。看到使用信号日志选择器查看日志配置

  4. 内容窗格表中,选择要覆盖其日志记录设置的信号。

  5. 覆盖日志设置:

    • 若要禁用信号的日志记录,请清除数据采集选中该信号的复选框。

    • 若要覆盖其他信号日志记录设置(例如,抽取),请确保数据采集复选框。然后,编辑相应列中的值。

带有模型引用的模型:覆盖信号记录设置

如果您的模型使用模型引用(也就是说,该模型至少包含一个模型Block),使用以下一个或多个程序覆盖信号日志设置:

为所有记录的信号启用日志记录。默认情况下,Simuli金宝appnk记录模型中所有的日志信号,包括整个模型参考层次结构中的日志信号。

如果在顶级模型或顶级模型中禁用任何日志信号的日志记录模型块,然后在模型引用层次结构中模型层次结构窗格中,该节点左侧的复选框是:

  • 固体(),如果某些信号的日志记录被禁用。

  • 空(),如果所有信号的日志记录都被禁用。

启用记录节点的所有日志信号。

  1. 打开信号记录选择器。在配置参数>数据导入/导出窗格中,单击配置记录信号按钮。

  2. 日志记录模式覆盖信号

  3. 查看包含要覆盖的日志信号的节点。如果需要,展开节点或配置Model Hierarchy窗格以显示被屏蔽的子系统。看到使用信号日志选择器查看日志配置

  4. 模型层次结构窗格中,选择节点左侧的复选框,以便该复选框具有复选标记().

    • 对于顶级模型,为顶级模型中的所有日志信号启用日志记录,但不为模型参考层次结构中的日志信号启用日志记录。

    • 对于一个模型块位于模型引用层次结构的顶部,则为所选引用模型的整个模型引用层次结构启用日志记录。

禁用节点中所有信号的日志记录。如果为模型节点中的任何信号启用了信号日志记录,则在模型层次结构窗格中,节点左侧的复选框为:

  • 固体(),如果启用了某些信号的日志记录。

  • 检查(),如果所有信号都启用了日志记录。

禁用模型节点中所有记录信号的日志记录:

  1. 打开信号记录选择器。在配置参数>数据导入/导出窗格中,单击配置记录信号按钮。

  2. 日志记录模式覆盖信号

  3. 查看包含要覆盖的日志信号的节点。如果需要,展开节点或配置Model Hierarchy窗格以显示被屏蔽的子系统。看到使用信号日志选择器查看日志配置

  4. 模型层次结构窗格中,清除节点左侧的复选框,使该复选框为空().

    • 对于顶级模型,对于顶级模型中的所有日志信号禁用日志记录,但是对于模型参考层次结构中的日志信号不禁用日志记录。

    • 对于一个模型块在模型引用层次结构的顶部,则为所选引用模型的整个模型引用层次结构禁用日志记录。

覆盖信号子集的信号记录。在模型节点中记录部分(而不是全部)被记录的信号:

  1. 打开信号记录选择器。在配置参数>数据导入/导出窗格中,单击配置记录信号按钮。

  2. 日志记录模式覆盖信号

  3. 查看包含要覆盖的日志信号的节点。如果需要,展开节点或配置Model Hierarchy窗格以显示被屏蔽的子系统。看到使用信号日志选择器查看日志配置

  4. 模型层次结构窗格中,确保顶级模型的复选框或模型块要么是实心的(),如果某些信号的日志记录被禁用,或者为空(),如果所有信号的日志记录都被禁用。单击复选框以循环通过不同的状态。

  5. 内容窗格表中,对于要记录的信号,选择控件中的复选框数据采集列。

    若要为多个信号启用日志记录,请按住转变Ctrl键并选择信号范围或单个信号。控件中的复选框数据采集高亮显示的信号之一的列。

覆盖其他信号日志属性。的设置之外数据采集属性,则可以重写其他信号日志记录属性,例如抽取。

  1. 打开信号记录选择器。在配置参数>数据导入/导出窗格中,单击配置记录信号按钮。

  2. 日志记录模式覆盖信号

  3. 查看包含要覆盖的日志信号的节点。如果需要,展开节点或配置Model Hierarchy窗格以显示被屏蔽的子系统。看到使用信号日志选择器查看日志配置

  4. 模型层次结构窗格中,确保顶级模型的复选框或模型块状固体()如果某些信号的日志记录被禁用,则为空(),如果所有信号的日志记录都被禁用。单击复选框以循环通过不同的状态。

  5. 内容窗格表中,对于要覆盖日志记录属性的信号,请通过选择数据采集列。

    若要为多个信号启用日志记录,请按住转变Ctrl键并选择信号范围或单个信号。控件中的复选框数据采集高亮显示的信号之一的列。

  6. 内容窗格表中,修改属性的设置,例如DecimateData而且大量毁灭

覆盖信号记录设置从MATLAB

覆盖信号日志设置的MATLAB命令行界面包括:

要查询模型的信号日志覆盖状态,请使用DataLoggingOverride参数。

要从命令行配置信号日志记录,请使用上面列出的三个类的方法和属性。要应用配置,请使用set_paramDataLoggingOverride模型参数。

以下部分描述如何使用命令行界面执行一些常见的信号日志记录配置任务。

创建一个模型日志信息对象

要使用命令行界面重写信号日志设置,首先要创建一个金宝appSimulink.SimulationData.ModelLoggingInfo对象。例如,使用以下命令创建模型日志覆盖对象ex_bus_logging建模并自动将模型中的每个日志信号添加到该对象:

open_system (docpath (fullfile (docroot,“工具箱”,“金宝app模型”,...“例子”,“ex_bus_logging”)));open_system (docpath (fullfile (docroot,“工具箱”,“金宝app模型”,...“例子”,“ex_mdlref_counter_bus”)));mi = 金宝appSimulink.SimulationData.ModelLoggingInfo.createFromModel (...“ex_bus_logging”
mi = ModelLoggingInfo带有属性:Model: 'ex_bus_logging' LoggingMode: 'OverrideSignals' LogAsSpecifiedByModels: {} Signals: [1x4 Simulink.Simu金宝applationData.SignalLoggingInfo]

LoggingMode属性设置为OverrideSignals方法中指定的信号信号财产。

要应用模型覆盖对象设置,使用:

set_param (ex_bus_logging“DataLoggingOverride”、mi);

金宝app当您保存模型时,Simulink会保存设置。

您可以控制包含日志信号的系统类型。默认情况下,金宝appSimulink.SimulationData.ModelLoggingInfo对象包含来自:

  • 戴面具的子系统

  • 引用模型

  • 积极的变异

作为一种替代方法,您可以使用金宝appSimulink.SimulationData.ModelLoggingInfo构造函数并指定金宝appSimulink.SimulationData.SignalLoggingInfo对象。要确保您为模型指定了有效的信号日志记录设置,请使用verifySignalAndModelPaths方法与金宝appSimulink.SimulationData.ModelLoggingInfo对象。

指定要记录的模型

方法指定是使用模型和所有引用模型中指定的信号日志记录设置,还是覆盖这些设置LoggingMode财产的金宝appSimulink.SimulationData.ModelLoggingInfo对象。

您可以控制顶级模型和引用模型是使用覆盖信号日志设置还是使用模型指定的信号日志设置。看到金宝appSimulink.SimulationData.ModelLoggingInfo文档。

这个例子展示了如何记录在顶级模型和所有参考模型中指定的所有信号。信号日志输出存储在topOut

open_system (docpath (fullfile (docroot,“工具箱”,“金宝app模型”,...“例子”,“ex_bus_logging”)));open_system (docpath (fullfile (docroot,“工具箱”,“金宝app模型”,...“例子”,“ex_mdlref_counter_bus”)));mi = 金宝appSimulink.SimulationData.ModelLoggingInfo...“ex_bus_logging”);mi.LoggingMode =“LogAllAsSpecifiedInModel”
mi = ModelLoggingInfo with properties: Model: 'ex_bus_logging' LoggingMode: ' logallasspecifiedmodel ' LogAsSpecifiedByModels: {} Signals: []

要应用模型覆盖对象设置,使用:

set_param (ex_bus_logging“DataLoggingOverride”、mi);

下面的例子展示了如何只记录顶级模型中的信号:

open_system (docpath (fullfile (docroot,“工具箱”,“金宝app模型”,...“例子”,“ex_bus_logging”)));open_system (docpath (fullfile (docroot,“工具箱”,“金宝app模型”,...“例子”,“ex_mdlref_counter_bus”)));mi = 金宝appSimulink.SimulationData.ModelLoggingInfo...“ex_bus_logging”);mi.LoggingMode =“OverrideSignals”;mi = mi.setLogAsSpecifiedInModel (“ex_bus_logging”,真正的);

要应用模型覆盖对象设置,使用:

set_param (ex_bus_logging“DataLoggingOverride”、mi);

金宝app当您保存模型时,Simulink会保存设置。

记录信号的子集

对于记录信号数量有限的简单模型,您可以创建一个空的金宝appSimulink.SimulationData.ModelDataLogInfo对象。然后创建金宝appSimulink.SimulationData.SignalLoggingInfO对象用于您想记录的每个信号,并将这些对象分配给模型日志信息对象。

open_system (docpath (fullfile (docroot,“工具箱”,“金宝app模型”,...“例子”,“ex_bus_logging”)));open_system (docpath (fullfile (docroot,“工具箱”,“金宝app模型”,...“例子”,“ex_mdlref_counter_bus”)));mdl =“ex_bus_logging”;黑色=“ex_bus_logging / IncrementBusCreator”;blkPort = 1;load_system (mdl);ov = 金宝appSimulink.SimulationData.ModelLoggingInfo (mdl);所以= S金宝appimulink.SimulationData.SignalLoggingInfo(黑色,blkPort);ov.Signals (1) =;%将此对象应用于模型set_param (mdl“DataLoggingOverride”、ov);%模拟sim (mdl);观察到的只有信号topOut

要应用模型覆盖对象设置,使用:

set_param (mdl“DataLoggingOverride”、ov);

金宝app当您保存模型时,Simulink会保存设置。

对于使用模型引用或比较复杂的模型,要指定要记录的日志信号的子集,请考虑使用findSignal方法金宝appSimulink.SimulationData.ModelLoggingInfo对象。例如,从被引用的模型实例中只记录一个信号:

open_system (docpath (fullfile (docroot,“工具箱”,“金宝app模型”,...“例子”,“ex_bus_logging”)));open_system (docpath (fullfile (docroot,“工具箱”,“金宝app模型”,...“例子”,“ex_mdlref_counter_bus”)));mi = 金宝appSimulink.SimulationData.ModelLoggingInfo.createFromModel (...“ex_bus_logging”);pos = mi.findSignal ({“ex_bus_logging / CounterA”...“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);

金宝app当您保存模型时,Simulink会保存设置。

覆盖其他信号日志属性

的设置之外数据采集属性,则可以重写其他信号日志记录属性,例如抽取。

使用金宝appSimulink.SimulationData.LoggingInfo属性来覆盖信号日志记录属性。下面的示例演示如何设置抽取覆盖设置。

open_system (docpath (fullfile (docroot,“工具箱”,“金宝app模型”,...“例子”,“ex_bus_logging”)));open_system (docpath (fullfile (docroot,“工具箱”,“金宝app模型”,...“例子”,“ex_mdlref_counter_bus”)));mi = 金宝appSimulink.SimulationData.ModelLoggingInfo.createFromModel...“ex_bus_logging”);pos = mi.findSignal ({“ex_bus_logging / CounterA”...“ex_mdlref_counter_bus /总线的创造者”1)};mi.Signals .LoggingInfo (pos)。DecimateData = true;mi.Signals .LoggingInfo (pos)。大量毁灭= 2;

要应用模型覆盖对象设置,使用:

set_param (ex_bus_logging“DataLoggingOverride”、mi);

金宝app当您保存模型时,Simulink会保存设置。

相关的例子

更多关于