Simulink 环境基础知识(二十)--信号标签传播
信号标签传播可以在 Simulink®模型中为信号提供信号名称并配置传播信号名称,以跟踪通过一个或多个模块的信号标签。为信号命名并对允许的模块的输出信号启用信号标签传播显示时:如果存在 Simulink 可以传播的用户指定的信号名称,则传播的信号标签会将该名称包括在尖括号中(例如<sig1>)。如果没有可传播的名称,Simulink 将为该标签显示一对空的尖括号 (<>)。
目录
可以在 Simulink® 模型中为信号提供信号名称并配置传播信号名称,以跟踪通过一个或多个模块的信号标签。为信号命名并对允许的模块的输出信号启用信号标签传播显示时:
-
如果存在 Simulink 可以传播的用户指定的信号名称,则传播的信号标签会将该名称包括在尖括号中(例如 <sig1>)。
-
如果没有可传播的名称,Simulink 将为该标签显示一对空的尖括号 (
<>
)。
例如,在下面的模型中,为 Subsystem 模块的输出信号配置了信号标记传播。传播的信号标签(<const>) 基于 Constant 模块的上游输出信号的名称 (const)。
支持信号标签传播的模块
可以为几个连接模块(这种模块在模型中传输信号但不改变数据)的输出信号使用信号标记传播功能。连接模块不执行任何信号转换。此外,Model模块支持信号标签传播。
支持信号标记传播的连接模块包括:
-
Enable
-
From
-
Function-Call Split
-
Goto
-
Inport(仅子系统;非模型输入端口)
-
Signal Specification
-
Subsystem,Atomic Subsystem,CodeReuse Subsystem(通过子系统Input和Output模块)
-
Tigger
Bus Creator 和 Bus Selector 模块不支持信号标签传播。但是,要查看任何总线信号的层次结构,使用Display Bus Hierarchy。
信号的 Signal Properties 对话框会指示该信号是否支持信号标签传播。Show propagated signals 参数仅对支持信号标签传播的模块可用。
Simulink 如何传播信号标签
通常,Simulink 会针对以下目标或情形一致地执行信号标签传播:
-
不同的建模结构(例如,非总线和总线信号、虚拟和非虚拟总线、子系统和模型变体、模型引用以及库)
-
在包含或不包含隐藏模块的模型中(Simulink 会在某些情况下插入隐藏模块以实现仿真)
-
在执行模型加载、编辑、更新和仿真时
有关某些特殊情况的信息,请参阅:
-
引用模型的处理过程
-
可变子系统和可配置子系统的处理过程
一般信号标签传播的处理过程
通常,当为模块(例如,BlockA)的输出信号启用信号标签传播后,Simulink 将完成以下处理过程,以查找要传播的源信号名称:
-
检查输出信号连接到 BlockA 的模块,如有必要,继续检查上游模块,从最近的模块向最远的模块依次执行。
-
在遇到符合以下任一条件的模块时停止:
-
支持信号标签传播并具有信号名称
-
不支持信号标签传播
-
-
获取Simulink停止时遇到的模块的输出信号的信号名称(如果有)。
-
使用该信号名称作为启用了信号标签传播的下游模块的任何输出信号的传播的信号标签。
例如,在下面的模型中,假设为Subsystem 模块的输出信号(即,连接Out1端口的信号)启用了信号标签传播。
Simulink在该子系统内从From和GoTo模块(支持信号标签传播但没有名称)往上游检查,然后继续往上游检查到 Constant 模块(不支持信号标签传播)。Simulink 使用 Constant 模块的输出信号的信号名称const。Subsystem 模块输出信号的传播的信号标签是<const>。
如果 Constant 模块的输出信号没有信号名称,则传播的信号标签将是一对空的尖括号 (<>
)。
假设在 Subsystem 模块中为 In1 模块的输出信号启用了信号标签传播,并使用 Signal Properties 对话框为From模块的输出信号指定了信号名称const-from,如下所示。
为 Subsystem 模块输出信号传播的信号标签将更改为 <const-from>,因为这是 Simulink 在信号标签传播处理过程中遇到的第一个具有名称的信号。
在下面的模型中,Subsystem模块输出信号的信号标签传播使用信号名称bus1,这是Bus Creator模块的输出总线信号的名称。传播的信号标签不包含总线元素信号(a 和 b)的名称。
显示传播的信号标签
可以显示模型中单个信号的传播信号标签,也可以显示模型中所有信号的传播信号标签。要显示所有信号的标签,请在 Simulink Editor 中,在 Debug 选项卡上,选择 Information Overlays > Propagated Signal Labels。
要显示单个信号的传播信号标签,请执行下列操作:
-
右键点击要显示传播的信号标签的信号,然后选择 Properties。
-
在 Signal Properties 对话框中,选择 Show propagated signals。
Show propagated signals 参数仅对支持信号标签传播的模块的输出信号可用。
要以编程方式启用此信号属性,请为该信号线创建句柄,并将 signalPropagation 指定为 'on'。例如,可以使用以下代码为模型图中的所有信号启用或禁用此属性。
% Create an array of handles to every signal line in the diagram
signalLines = find_system(gcs,'FindAll','on','type','line');
% Enable or disable the property for each signal line
for i = 1:length(signalLines)
% set(signalLines(i),'signalPropagation','off');
set(signalLines(i),'signalPropagation','on');
end
如果信号已经具有标签,则显示传播的信号标签的替代方式如下:
-
在模型图中,点击信号标签。
-
删除标签文本。
-
在信号标签文本框中输入尖括号 (
<
)。 -
在信号标签外点击。
Simulink 将显示传播的信号标签。
信号传播的特殊情况
引用模型的处理过程
要为引用模型启用信号标签传播,除了显示传播的信号标签中介绍的步骤外,还要使用 Model Configuration Parameters > Model Referencing > Propagate all signal labels out of the model 参数的默认设置。也就是说,必须要启用该参数。如果在引用模型内部进行了影响信号标记传播的更改,引用模型外部传播的信号标签不会反映这些更改,一直到更新图或进行模型仿真为止。
例如,模型 ex_signal_label_prop_model_ref 有一个引用模型,其中包含来自 In1 模块的输出信号,信号名称为 input_1。如果为来自 Model 模块的 Out1 端口的信号启用了信号标签传播,在更新图或进行模型仿真之前,该信号不会反映名称 input_1。
可变子系统和可配置子系统的处理过程
当同时满足以下条件时,Simulink将为Subsystem或Model模块的输出信号更新传播的信号标签(如果已启用):
-
变体模型的输出信号有不同信号名称。
-
更改了活动的变体模型或可变子系统。
对于 Subsystem 模块,信号标签在编辑时更新。对于 Model 模块,更新发生在更新图或进行模型仿真时。
更多推荐
所有评论(0)