主要内容

覆盖信号记录设置

覆盖信号记录设置的好处

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

为了减少内存开销并便于分析模拟测井结果,重写信号测井特性。通过重写信号日志设置,可以避免重新编译模型。

当您想要:

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

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

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

  • 只收集运行多个测试向量时所需的内容。

覆盖信号记录设置的两个接口

使用两个接口中的任何一个来覆盖信号记录设置:

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

信号记录设置覆盖的范围

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

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

在信号记录选择器中,如果您覆盖一些信号记录设置,然后设置日志记录模式按照模型中的规定记录所有信号,模型中定义的日志设置将显示在信号日志选择器中。覆盖设置为灰色,表示您无法覆盖这些设置。若要重新激活覆盖设置,请设置日志记录模式超越信号.使用信号记录选择器覆盖特定信号的记录不会影响该信号的信号记录指示器。

如果关闭并重新打开模型,则日志记录设置覆盖将生效,如果日志记录模式设置为覆盖该模型的信号。当模型显示信号记录指示灯时,它显示所有记录信号的指示灯,包括您已覆盖的记录信号。

请注意

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

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

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

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

  4. 再次以快速加速器模式模拟模型。

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

  1. 使用下列方法之一打开信号测井选择器:

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

      提示

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

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

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

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

  2. 日志记录模式超越信号

    请注意

    超越信号设置将影响模型层次结构的所有级别。此设置可以根据现有设置关闭整个层次结构中任何信号的日志记录。要查看设置,请在模型层次结构窗玻璃

  3. 查看包含要覆盖的记录信号的节点。如有必要,展开节点或配置“模型层次结构”窗格以显示屏蔽子系统。请参阅使用信号记录选择器查看记录配置

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

提示

打开配置参数>数据导入/导出窗格中,使用按钮。

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

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

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

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

  2. 日志记录模式超越信号

  3. 查看包含要覆盖的记录信号的节点。如有必要,展开节点或配置“模型层次结构”窗格以显示屏蔽子系统。请参阅使用信号记录选择器查看记录配置

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

  5. 覆盖日志设置:

    • 若要禁用信号的日志记录,请清除数据记录勾选这个信号。

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

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

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

启用所有记录信号的记录功能。默认情况下,Simuli金宝appnk会记录模型中所有已记录的信号,包括整个模型引用层次结构中的已记录信号。

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

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

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

为某个节点开启记录所有已记录信号的功能。

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

  2. 日志记录模式超越信号

  3. 查看包含要覆盖的记录信号的节点。如有必要,展开节点或配置“模型层次结构”窗格以显示屏蔽子系统。请参阅使用信号记录选择器查看记录配置

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

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

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

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

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

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

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

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

  2. 日志记录模式超越信号

  3. 查看包含要覆盖的记录信号的节点。如有必要,展开节点或配置“模型层次结构”窗格以显示屏蔽子系统。请参阅使用信号记录选择器查看记录配置

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

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

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

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

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

  2. 日志记录模式超越信号

  3. 查看包含要覆盖的记录信号的节点。如有必要,展开节点或配置“模型层次结构”窗格以显示屏蔽子系统。请参阅使用信号记录选择器查看记录配置

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

  5. 内容窗格表中,对于要记录的信号,选择数据记录列。

    要启用多个信号的日志记录,请按住转变Ctrl键并选择信号范围或单个信号。的复选框数据记录突出显示的信号之一的列。

覆盖其他信号记录属性。除了覆盖数据记录属性,则可以覆盖其他信号日志记录属性,如抽取。

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

  2. 日志记录模式超越信号

  3. 查看包含要覆盖的记录信号的节点。如有必要,展开节点或配置“模型层次结构”窗格以显示屏蔽子系统。请参阅使用信号记录选择器查看记录配置

  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 with properties: Model: 'ex_bus_logging' LoggingMode: 'OverrideSignals' LogAsSpecifiedByModels: {} Signals: [1x4 金宝appSimulink.SimulationData.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带有属性:Model: 'ex_bus_logging' LoggingMode: ' logallasspecifiedmodel ' LogAsSpecifiedByModels: {} Signals: []

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

set_param (ex_bus_logging“DataLoggingOverride”、mi);

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

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会保存设置。

相关的例子

更多关于