目录
合成信号的类型
为了降低模型中的外观复杂度,可以将信号合并为合成信号。合成信号包含的信号称为元素。元素保留它们各自的身份,这可以从合成信号中提取它们。根据合成信号类型,可以通过名称或索引访问合成信号元素。
-
基于名称的合成信号允许使用信号层次结构。它们统称为总线。
-
基于索引的合成信号是平面结构的,无论是否是在不同的阶段创建它们。它们要求所有输入信号具有相同的数据类型。
当将多个信号组合为一个合成信号时,可以决定它们是否影响仿真和代码生成。
-
虚拟合成信号通过将两条或多条信号线合并为一条线,简化模型的视觉外观。它不会在任何功能上对信号进行组合,因此不会影响仿真或代码生成。在仿真和生成代码中,虚拟合成信号可以直接访问元素,因此比非虚拟合成信号的执行速度更快。
-
非虚拟合成信号在外观和功能上对信号进行组合,从而会影响仿真和代码生成。
模型可以使用这些合成信号类型的组合。
合成信号特性 | 基于名称的访问 | 基于索引的访问 |
---|---|---|
外观上的组合 | 虚拟总线 |
复路信号 |
功能上的组合 |
非虚拟总线 |
串联信号 |
编译或仿真模型后,可以通过合成信号的线型来识别其类型。
线型 | 合成信号类型 |
---|---|
虚拟总线 | |
非虚拟总线 | |
启用 Nonscalar Signals 信息叠加时的非标量信号(包括基于索引的合成信号) | |
包含非虚拟总线的基于索引的合成信号 |
虚拟总线
此模型显示一条虚拟总线,其中包含信号 a
、b
和 c
。
Bus Creator模块在子系统或模型中创建总线。Bus Selector模块提取总线的指定元素。此模型显示穿过子系统边界的等效虚拟总线。
Out Bus Element模块在子系统或模型接口上创建总线。In Bus Element模块在子系统或模型接口上提取总线的指定元素。可以使用虚拟总线来:
-
包含具有不同采样率的总线元素。
-
跨模型引用边界。
要指定和验证虚拟总线的属性,可以指定Simulink.Bus对象。要创建虚拟总线,将信号组合为虚拟总线。
非虚拟总线
此模型显示包含信号 a
、b
和 c
的非虚拟总线。
Bus Creator模块在子系统或模型中创建总线。Bus Selector模块提取总线的指定元素。可以使用非虚拟总线来:
-
将总线数据打包为生成的 C 代码中的结构体。
-
构造总线数组。
-
通过 S-Function 对接外部代码。
-
总线数据需要跨 MATLAB Function 模块或 Stateflow® 图边界。
-
使用 Scope 模块显示和记录总线。
非虚拟总线的所有元素必须使用相同的采样时间,即使相关联的 Bus
对象指定使用继承的采样时间也是如此。可以使用Rate Transition模块更改总线中单个信号或所有信号的采样时间。
Simulink.Bus对象必须定义要做为非虚拟的总线。当选择 Output as nonvirtual bus 参数时,总线变为非虚拟总线。选择此参数将导致仿真和代码生成应用由 Bus
对象定义的结构体。如果清除此参数,Bus
对象将仅验证总线的属性。不同的总线类型在生成代码的效率、大小和可读性方面可能存在显著差异。要使总线出现在生成的代码中,它必须为非虚拟总线。只有虚拟总线的元素出现在生成的代码中。
例如,假设一条总线穿过 Unit Delay 模块。为简单起见,该总线只包含三个元素:a
、b
和 c
。下表显示 Output as nonvirtual bus 参数对生成代码的影响。
生成的代码 | 虚拟总线 | 非虚拟总线 |
---|---|---|
|
虚拟总线不需要类型定义。 |
|
|
生成的代码为虚拟总线的每个元素定义一个 Unit Delay 模块。 |
生成的代码使用 |
要创建非虚拟总线,可以参考Create Nonvirtual Buses。如果打算为使用总线的模型生成代码,参考Generate Efficient Code for Bus Signals(Simulink Coder)。非虚拟总线的生成代码可能会包含某些总线信号的多个副本。
串联信号
此模型显示将输入矩阵并排放置在一起的串联信号。
Matrix Concatenate 模块创建串联信号。元素可以是向量或矩阵,这取决于如何配置此模块。Selector模块根据指定的索引提取信号。提取的信号可以按不同于输入信号的方式进行组合。可以在数学运算中使用串联信号。要用 Vector Concatenate 或 Matrix Concatenate 模块对信号进行组合,这些信号必须具有相同的数据类型。当数据类型是Bus
对象时,输入必须为非虚拟总线。
串联的非虚拟总线也称为总线数组。在总线数组中,所有元素均为非虚拟总线,它们使用相同的Bus
对象来指定属性。总线数组相当于MATLAB® 中的结构体数组。可以使用总线数组对多通道系统进行建模。虽然所有通道都具有相同的属性,但每个通道可能具有不同值。
在此模型中,Vector Concatenate 模块创建一个总线数组。
有关总线数组的详细信息,可以参考将总线合并为总线数组。
复路信号
此模型显示将三个输入信号并排放置在一起的复路信号。
Mux模块创建复路信号。Demux模块提取所有信号,这些信号的组合方式可能不同于输入信号。Selector模块根据指定的索引提取信号。提取的信号可以按不同于输入信号的方式进行组合。可以使用复路信号对多个向量执行计算。还可以使用Mux模块创建由函数调用组成的向量。
Mux模块的输入信号可以是标量、向量和复路信号的任意组合,但它们必须具有相同的数据类型和数值类型。复路输出信号中信号的显示顺序与Mux模块的输入信号相同。可以使用多个Mux模块分多个阶段创建复路信号,但结果是平面结构,就像只使用一个 Mux 模块一样。