Main Content

信号标签传播

您可以在 Simulink® 模型中为信号提供信号名称并配置传播信号名称,以跟踪通过一个或多个模块的信号标签。要查看支持的模块列表,请参阅支持信号标签传播的模块

为信号命名并对允许的模块的输出信号启用信号标签传播显示时:

  • 如果存在 Simulink 可以传播的用户指定的信号名称,则传播的信号标签会将该名称包括在尖括号中(例如 <sig1>)。

  • 如果没有可传播的名称,Simulink 将为该标签显示一对空的尖括号 (<>)。

Simulink 不传播注释掉的模块的信号标签。

例如,在下面的模型中,为 Subsystem 模块的输出信号配置了信号标记传播。传播的信号标签 (<const>) 基于 Constant 模块的上游输出信号的名称 (const)。

有关 Simulink 如何创建传播的信号标签的详细信息,请参阅 Simulink 如何传播信号标签

支持信号标签传播的模块

您可以为几个连接模块(这种模块在模型中传输信号但不改变数据)的输出信号使用信号标记传播功能。连接模块不执行任何信号转换。

此外,Model 模块支持信号标签传播。

支持信号标记传播的连接模块包括:

Bus CreatorBus Selector 模块支持信号标签传播。但是,要查看任何总线的层次结构,请使用Display Bus Hierarchy

信号的“信号属性”对话框会指示该信号是否支持信号标签传播。显示传播的信号参数仅对支持信号标签传播的模块可用。有关详细信息,请参阅显示传播的信号标签

Simulink 如何传播信号标签

通常,Simulink 会针对以下目标或情形一致地执行信号标签传播:

  • 不同的建模结构(例如,非总线和总线信号、虚拟和非虚拟总线、子系统和模型变体、模型引用以及库)

  • 在包含或不包含隐藏模块的模型中(Simulink 会在某些情况下插入隐藏模块以实现仿真)

  • 在执行模型加载、编辑、更新和仿真时

有关某些特殊情况的信息,请参阅:

一般信号标签传播的处理过程

通常,当您为模块(例如,BlockA)的输出信号启用信号标签传播后,Simulink 将完成以下处理过程,以查找要传播的源信号名称:

  1. 检查输出信号连接到 BlockA 的模块,如有必要,继续检查上游模块,从最近的模块向最远的模块依次执行。

  2. 在遇到符合以下任一条件的模块时停止:

    • 支持信号标签传播并具有信号名称

    • 不支持信号标签传播

  3. 获取 Simulink 停止时遇到的模块的输出信号的信号名称(如果有)。

  4. 使用该信号名称作为启用了信号标签传播的下游模块的任何输出信号的传播的信号标签。

例如,在下面的模型中,假设您为 Subsystem 模块的输出信号(即,连接 Out1 端口的信号)启用了信号标签传播。

Simulink 在该子系统内从 FromGoTo 模块(支持信号标签传播但没有名称)往上游检查,然后继续往上游检查到 Constant 模块(不支持信号标签传播)。

Simulink 使用 Constant 模块的输出信号的信号名称 constSubsystem 模块输出信号的传播的信号标签是 <const>

如果 Constant 模块的输出信号没有信号名称,则传播的信号标签将是一对空的尖括号 (<>)。

假设您在 Subsystem 模块中为 In1 模块的输出信号启用了信号标签传播,并使用“信号属性”对话框为 From 模块的输出信号指定了信号名称 const-from,如下所示。

Subsystem 模块输出信号传播的信号标签将更改为 <const-from>,因为这是 Simulink 在信号标签传播处理过程中遇到的第一个具有名称的信号。

在下面的模型中,Subsystem 模块输出信号的信号标签传播使用信号名称 bus1,这是 Bus Creator 模块的输出总线的名称。传播的信号标签不包含总线元素信号(ab)的名称。

显示传播的信号标签

您可以显示模型中单个信号的传播信号标签,也可以显示模型中所有信号的传播信号标签。要显示所有信号的标签,请在 Simulink 编辑器中,在调试选项卡上,选择叠加信息 > 传播的信号标签

要显示单个信号的传播信号标签,请执行下列操作:

  1. 右键点击要显示传播的信号标签的信号,然后选择属性

  2. 在“信号属性”对话框中,选择显示传播的信号

    显示传播的信号参数仅对支持信号标签传播的模块的输出信号可用。

要以编程方式将信号配置为显示其传播的名称,请使用 set_param 函数为与生成信号的模块输出端口对应的端口句柄指定 ShowPropagatedSignals 属性的值。例如,为模型 MyModelSubsystem 模块 Subsystem 的第一个输出端口上的输出信号启用信号标签传播:

  1. 使用 get_param 函数获取模块的端口句柄。

    portHandles = get_param("MyModel/Subsystem","PortHandles");
  2. 通过索引访问第一个输出端口的句柄。模块端口句柄以结构体形式返回,该结构体包含模块可能具有的每种端口类型的字段。

    outport1 = portHandles.Outport(1);
  3. 使用 set_param 函数将输出端口的 ShowPropagatedSignals 参数值指定为 on

    set_param(outport1,ShowPropagatedSignals="on")

如果信号已经具有标签,则显示传播的信号标签的替代方式如下:

  1. 在模型图中,点击信号标签。

  2. 删除标签文本。

  3. 在信号标签文本框中输入尖括号 (<)。

  4. 在信号标签外点击。

    Simulink 将显示传播的信号标签。

信号传播的特殊情况

引用模型的处理过程

要为引用模型启用信号标签传播,除了显示传播的信号标签中介绍的步骤外,还要使用模型配置参数 > 模型引用 > 将所有信号标签传播到模型之外 参数的默认设置。也就是说,必须要启用该参数。

如果您在引用模型内部进行了影响信号标记传播的更改,引用模型外部传播的信号标签不会反映这些更改,一直到您更新图或进行模型仿真为止。

例如,模型 ex_signal_label_prop_model_ref 有一个引用模型,其中包含来自 In1 模块的输出信号,信号名称为 input_1

如果您为来自 Model 模块的 Out1 端口的信号启用了信号标签传播,在您更新图或进行模型仿真之前,该信号不会反映名称 input_1

可变子系统和可配置子系统的处理过程

同时满足以下条件时,Simulink 将为 Subsystem 或 Model 模块的输出信号更新传播的信号标签(如果已启用):

  • 变体模型的输出信号有不同信号名称。

  • 您更改了活动的变体模型或可变子系统。

对于 Subsystem 模块,信号标签在编辑时更新。对于 Model 模块,更新发生在您更新图或进行模型仿真时。

另请参阅

相关主题