Simulink模块可分为三个基本类别:
- 虚拟模块(Virtual Blocks)
- 非虚拟模块(Non-Virtual Blocks)
- 条件虚拟模块(Conditionally Virtual Blocks)
虚拟模块
虚拟模块(Virtual Blocks)主要用于提高模型的可读性和可管理性,但它们不直接参与仿真计算。
虚拟模块有助于以图形方式组织模型,虽然在仿真中不起主动作用,但它们会影响其他模块的执行顺序
如图所示,常见的虚拟模块包括:
- Goto 和 From:用于信号的传递,但不影响仿真结果。
- Mux 和 Demux:用于信号的合并提取。
- Goto Tag Visibility:定义 Goto 模块标记的作用域。
- Ground 和 Terminator: 端口处理。
- Signal Specification: 指定信号所需的属性。
- Inport: 自 R2022a版本起始终为虚拟模块。
非虚拟模块
非虚拟模块(Non-Virtual Blocks)是那些直接参与仿真计算并影响模型行为和输出结果的模块。
非虚拟模块在系统的仿真中起主动作用,每当添加或删除非虚拟模块,模型的行为将发生改变。
Simulink中大部分模块都是非虚拟模块,其中包括:
算术运算模块
这些模块用于执行基本的数学运算,例如:
- Sum:执行加法、减法运算。
- Product:执行乘法、除法运算。
- Gain:对输入信号进行比例放大或缩小。
信号生成模块
这些模块用于生成各种类型的信号,例如:
- Constant:生成一个常数信号。
- Sine Wave:生成一个正弦波信号。
- Pulse Generator:生成一个脉冲信号。
信号处理模块
这些模块用于对信号进行处理,例如:
- Integrator:对输入信号进行积分。
- Transfer Fcn:定义传递函数以处理信号。
- Delay:对信号进行延迟处理。
逻辑运算模块
这些模块用于执行逻辑运算,例如:
- Logical Operator:执行 AND、OR、NOT 等逻辑运算。
- Compare To Constant:将输入信号与常数进行比较。
- Switch:根据条件选择信号路径。
数据存储和操作模块
这些模块用于存储和操作数据,例如:
- Memory:存储信号的过去值。
- Data Store Read/Write:读取和写入数据存储。
- MATLAB Function:执行自定义的 MATLAB 代码。
控制系统模块
这些模块用于设计和仿真控制系统,例如:
- PID Controller:实现比例-积分-微分控制器。
- State-Space:定义状态空间模型。
- Discrete-Time Integrator:离散时间积分器。
其他常见非虚拟模块
- Lookup Table:实现查找表功能。
- S-Function:实现用户自定义的功能模块。
- Scope:用于显示信号波形。
条件非虚拟模块
有些 Simulink 模块在某些情况下是虚拟的,而在其他情况下是非虚拟的。这种模块称为条件虚拟模块。
如图所示,条件虚拟模块包括:
- Bus Assignment/Creator/Selector:如果输入总线是虚拟的,则为虚拟模块。
- Trigger:当输出端口不存在时,为虚拟模块。
- In Bus Element: 输入总线是非虚拟总线并且包含可变大小信号时为非虚拟模块。
- Out Bus Element: 输出总线是非虚拟总线时为非虚拟模块。
- Outport:当模块位于任何子系统(条件或非条件)中并且不在根(顶层)Simulink 窗口中时为虚拟模块。
- Selector:当固定大小索引信号的输入维数指定为
1
,索引选项指定为全选、索引向量(对话框) 或起始索引(对话框) 时,为虚拟模块。 - Enable: 仅当连接到Outport模块时为非虚拟模块。
总结
虚拟模块用于提高模型的可读性和可管理性,其作用可概括为:
- 组织和简化模型
- 信号路由和管理
- 定义接口
- 模型组织和导航
非虚拟模块是模型仿真和计算的核心部分,其作用包括:
- 数学运算和逻辑操作
- 信号生成和处理
- 控制系统设计
- 数据存储和操作