Simulink库浏览器中有大量的模型组件工具箱,包括Simulink工具箱、Autosar工具箱、电机控制工具箱等,其中Simulink工具箱包含了几十个的子模块,这里介绍下这些子模块的功能,帮助读者全面的了解这些功能模块,在今后的模型开发中,可以运用这些模块快速上手搭建功能模型。
ommonly Used Blocks:常用模块,包含经常使用的基础模块。
Continuous:连续模块,用于搭建连续系统模型,如积分器、微分器等。
Dashboard:仪表板模块,可用于创建可视化界面元素来监控和操作模型。
Discontinuities:不连续模块,模拟系统中的不连续特性,如继电器、死区等。
Discrete:离散模块,用于构建离散时间系统模型,像离散积分器等。
Logic and Bit Operations:逻辑与位运算模块,执行逻辑运算(如与、或、非等)和位操作。
Lookup Tables:查找表模块,用于实现基于表格的插值运算。
Math Operations:数学运算模块,进行各类数学计算,如加、减、乘、除等。
Matrix Operations:矩阵运算模块,处理矩阵相关操作,如矩阵乘法、转置等。
Messages & Events:消息与事件模块,处理模型中的消息和事件触发。
Model Verification:模型验证模块,用于检查模型的正确性和一致性。
Model - Wide Utilities:模型范围实用工具模块,提供与整个模型相关的工具。
Ports & Subsystems:端口与子系统模块,用于创建子系统和定义输入输出端口。
Signal Attributes:信号属性模块,用于设置和修改信号属性。
Signal Routing:信号路由模块,控制信号在模型中的流向,如多路复用器、解复用器等。
Sinks:接收器模块,用于接收和显示信号,如示波器、显示模块等。
Sources:信号源模块,产生各种信号,如常数、阶跃信号等。
String:字符串模块,处理字符串相关操作。
User - Defined Functions:用户自定义函数模块,允许用户编写自定义函数。
Additional Math & Discrete:附加数学与离散模块,提供更多相关功能模块。
下面详细介绍下各个常用的子模块,以及子模块中各模型组件的功能。
BusCreator 模块
在 Simulink 建模过程中,当存在多个相关信号需要一起处理时,为了避免大量信号线的混乱连接,可使用 BusCreator 模块将这些信号组合成一条总线Bus,总线是一种逻辑上的信号集合,它将多个信号捆绑在一起,作为一个整体进行传输和处理。
Commonly Used Blocks:常用模块,包含经常使用的基础模块。
Continuous:连续模块,用于搭建连续系统模型,如积分器、微分器等。
Dashboard:仪表板模块,可用于创建可视化界面元素来监控和操作模型。
Discontinuities:不连续模块,模拟系统中的不连续特性,如继电器、死区等。
Discrete:离散模块,用于构建离散时间系统模型,像离散积分器等。
Logic and Bit Operations:逻辑与位运算模块,执行逻辑运算(如与、或、非等)和位操作。
Lookup Tables:查找表模块,用于实现基于表格的插值运算。
Math Operations:数学运算模块,进行各类数学计算,如加、减、乘、除等。
Matrix Operations:矩阵运算模块,处理矩阵相关操作,如矩阵乘法、转置等。
Messages & Events:消息与事件模块,处理模型中的消息和事件触发。
Model Verification:模型验证模块,用于检查模型的正确性和一致性。
Model - Wide Utilities:模型范围实用工具模块,提供与整个模型相关的工具。
Ports & Subsystems:端口与子系统模块,用于创建子系统和定义输入输出端口。
Signal Attributes:信号属性模块,用于设置和修改信号属性。
Signal Routing:信号路由模块,控制信号在模型中的流向,如多路复用器、解复用器等。
Sinks:接收器模块,用于接收和显示信号,如示波器、显示模块等。
Sources:信号源模块,产生各种信号,如常数、阶跃信号等。
String:字符串模块,处理字符串相关操作。
User - Defined Functions:用户自定义函数模块,允许用户编写自定义函数。
Additional Math & Discrete:附加数学与离散模块,提供更多相关功能模块。
下面详细介绍下各个常用的子模块,以及子模块中各模型组件的功能。
BusCreator 模块
在 Simulink 建模过程中,当存在多个相关信号需要一起处理时,为了避免大量信号线的混乱连接,可使用 BusCreator 模块将这些信号组合成一条总线Bus,总线是一种逻辑上的信号集合,它将多个信号捆绑在一起,作为一个整体进行传输和处理。
DataType Conversion 模块
在 Simulink 建模过程中,不同的模块可能对输入信号的数据类型有不同的要求。例如,某些模块可能只接受整数类型的输入,而另一些模块可能输出的是浮点数类型。当信号在不同模块之间传递时,如果数据类型不匹配,就可能导致仿真错误或结果不准确
Data Type Conversion 模块的作用就是解决这个问题,它将输入信号的数据类型转换为指定的数据类型,确保信号能够在不同模块之间正确传递和处理。该模块接收一个输入信号,根据用户设置的目标数据类型,对输入信号进行相应的转换操作。转换过程可能涉及到数据的截断、舍入、扩展等操作,以确保转换后的数据符合目标数据类型的要求。
例如,将一个浮点数转换为整数时,可能需要进行截断或舍入操作;将一个低精度的整数转换为高精度的整数时,需要进行扩展操作。
Delay模块
一个非常实用的模块,用于对输入信号进行延迟处理。在许多动态系统中,信号的传输和处理往往存在一定的延迟。例如,在通信系统中,信号从发送端到接收端需要经过一定的传输时间;在机械系统中,执行器对控制信号的响应也可能存在延迟。
Delay 模块的作用就是模拟这种延迟现象,它可以将输入信号延迟指定的时间步长或采样周期后再输出,从而更准确地模拟实际系统的动态特性。Delay 模块接收一个输入信号,当仿真开始后,它会将输入信号存储在内部的缓冲区中。根据用户设置的延迟参数,模块会在经过指定的时间步长或采样周期后,从缓冲区中取出之前存储的信号并将其作为输出。
双击 Delay 模块,弹出的参数设置对话框中有几个关键参数:
Delay length(延迟长度):这是最核心的参数,用于指定信号延迟的时间步长或采样周期数。它可以是一个固定的整数,例如设置为 “5”,表示输入信号将被延迟 5 个采样周期后再输出;也可以是一个变量,通过外部输入信号来动态调整延迟长度。
Initial conditions(初始条件):用于设置延迟模块在仿真开始时的初始输出值。可以选择使用默认值(通常为零),也可以手动指定一个具体的值。例如,在某些情况下,需要让延迟模块在开始时输出一个特定的初始信号,就可以通过设置初始条件来实现。
Inport 模块
在复杂的 Simulink 模型中,为了提高模型的可读性、可维护性和可复用性,常常会将模型划分为多个子系统。Inport 模块就是子系统与外部环境进行信号交互的输入通道,它允许外部信号流入子系统,使得子系统能够接收外界提供的信息并进行相应的处理。Inport 模块作为子系统的输入边界,当仿真运行时,它会接收来自外部模型的信号,并将这些信号传递给子系统内部的其他模块进行进一步处理。其工作过程类似于一个 “信号入口”,确保外部信号能够准确无误地进入子系统,为子系统的正常运行提供必要的数据支持。
Logical Operator逻辑运算模块
对布尔值TRUE 或 FALSE进行操作,以得出逻辑判断的结果。Logical Operator 模块可以接收一个或多个输入信号,根据用户选择的逻辑运算符对这些输入信号进行运算,最终输出一个布尔值的结果。
该模块依据所选的逻辑运算符对输入信号进行相应的逻辑操作。例如,对于常见的逻辑运算符 “AND”(与),只有当所有输入信号都为 TRUE(1)时,输出才为 TRUE(1);只要有一个输入为 FALSE(0),输出就为 FALSE(0)。
Outport 模块
Outport 模块就是子系统的输出接口,它允许子系统内部经过处理的信号传递到子系统外部。Outport 模块作为子系统的输出边界,在仿真运行过程中,它会接收子系统内部模块输出的信号,并将这些信号传递给子系统外部与之相连的模块。其工作过程类似于一个 “信号出口”,确保子系统内部的处理结果能够准确无误地输出到外部,为外部系统提供必要的数据支持。
Switch 模块
本质上是一个信号选择器,它接收三个输入信号:两个数据输入信号(通常标记为输入 1 和输入 2)和一个控制输入信号。根据控制输入信号与预设阈值的比较结果,Switch 模块会选择将其中一个数据输入信号作为输出信号,从而实现信号的切换功能。
Switch 模块依据控制输入信号的值与设定的阈值进行比较,以此来决定输出哪个数据输入信号:
当控制输入信号大于或等于阈值时,模块输出输入 1 信号。
当控制输入信号小于阈值时,模块输出输入 2 信号。
Dashboard模型库
Dashboard 提供了一系列可视化组件,可将 Simulink 模型中的信号以直观的方式展示出来,同时还能通过界面元素对模型进行交互操作。它就像是一个虚拟的仪表盘,能实时呈现系统的运行状态,帮助用户更好地理解和控制模型,包括:
指示灯类:如汽车指示灯模块组中的各种指示灯(自适应巡航控制指示灯、发动机故障指示灯等),可根据输入信号的状态(通常为布尔值或特定范围的数值)改变颜色或亮灭状态,用于快速指示系统特定状态或故障。
仪表类:例如速度表、转速表等,以指针或刻度盘的形式显示信号的数值大小,适用于展示连续变化的物理量,如车辆速度、电机转速等。
滑块和旋钮类:用户可通过拖动滑块或旋转旋钮来改变输入信号的值,实现对模型参数的实时调整。比如在控制系统仿真中,可通过滑块调整控制器的增益参数。
按钮类:用于触发特定的事件或操作,如启动、停止仿真,切换控制模式等。
文本显示类:可显示信号的具体数值、状态信息等文本内容,方便用户获取精确的数据。
过零检测模块
Hit Crossing 模块能够监测输入信号是否穿过零值,并在检测到过零事件时产生相应输出。它可以帮助用户捕捉信号变化中的关键节点,以便进一步分析或触发其他操作。
该模块持续监控输入信号的数值。当输入信号从正值变为负值或者从负值变为正值时,即发生过零事件,模块会输出一个脉冲信号,表明检测到了过零。
当一个模块本身启用了过零检测功能后,其输出更加精细。
死区检测模块
有一个输入端口和一个输出端口。当输入信号的值处于预先设定的死区范围内时,模块输出为零;只有当输入信号超出这个死区范围,输出才会随着输入信号的变化而变化。
假设设定的死区范围为 [-a, a](a 为正数),当输入信号 u (t) 满足 -a ≤ u (t) ≤ a 时,输出 y (t) = 0;当 u (t) > a 时,y (t) = u (t) - a;当 u (t) < -a 时,y (t) = u (t) + a 。即输入在死区范围内时无输出,超出后输出为输入与死区边界值的差值。
Logic and Bit Operations逻辑和位操作模块库中包含如下模型组件:
Bit Clear(位清除模块):将输入二进制数指定位置的位清零。
Bit Set(位置位模块):把输入二进制数指定位置的位置1。
Bit to Integer Converter(位转整数模块):将表示二进制数的位向量转换为整数。
Bitwise Operator(按位运算符模块):对输入的二进制数进行按位逻辑运算,如与、或、非等。
Combinatorial Logic(组合逻辑模块):实现多种逻辑运算组合,根据输入逻辑值输出相应结果。
Compare To Constant(与常数比较模块):将输入信号与指定常数比较,输出比较结果。
Compare To Zero(与零比较模块):把输入信号和0比较,输出比较结果。
Detect Negative Fall(检测负跳变模块):检测输入信号从非负到负的跳变。
Detect Fall(检测下降沿模块):检测输入信号的下降沿。
Detect Negative Nonnegative(检测负 - 非负变化模块):检测输入信号正负状态变化。
Detect Rise(检测上升沿模块):检测输入信号的上升沿。
Detect Positive Rise(检测正上升沿模块):检测输入信号从非正到正的上升沿。
Detect Change(检测变化模块):检测输入信号是否发生变化。
Detect Decrease(检测减小模块):检测输入信号是否减小。
Detect Increase(检测增大模块):检测输入信号是否增大。
Extract Bits(提取位模块):从输入二进制数中提取指定位置的位。
Float Extract Bits(浮点数提取位模块):从输入浮点数的二进制表示中提取位。
Integer to Bit Converter(整数转位模块):将整数转换为表示二进制数的位向量。
Interval Test(区间测试模块):判断输入信号是否在指定区间内。
Interval Test Dynamic(动态区间测试模块):动态判断输入信号是否在指定区间内。
Logical Operator(逻辑运算符模块):执行基本逻辑运算,如与、或、非、异或等。
Relational Operator(关系运算符模块):进行关系比较运算,如大于、小于、等于等。
Arithmetic Shift(算术移位模块):对输入二进制数进行算术移位操作。
Lookup Tables查找表模块库中包含如下模块,以下是各模块介绍:
1 - D Lookup Table(一维查找表模块):根据一维输入信号,在预先定义的表格中查找对应输出值,常用于输入与输出为一维映射关系的场景,如根据温度查对应压力值。
2 - D Lookup Table(二维查找表模块):依据二维输入信号,在二维表格中查找输出值,适用于输入输出为二维映射关系的情况,像根据风速和风向查风力等级。
Cosine(余弦查找表模块):通过查找表方式计算输入角度的余弦值,可避免复杂的实时三角函数计算,提高仿真效率。
Direct Lookup Table (n - D)(直接n维查找表模块):支持n维输入信号的查找表操作,能处理多维输入输出映射关系,应用于复杂多维系统。
Interpolation Using Prelookup(使用预查找的插值模块):先进行预查找处理,再对查找结果进行插值计算,可提高查找精度和灵活性。
Lookup Table Dynamic(动态查找表模块):查找表的参数可动态变化,适用于系统参数随时间或其他条件改变的情况。
n - D Lookup Table(n维查找表模块):用于处理n维输入输出关系的查找表,满足多维数据映射需求。
Prelookup(预查找模块):对输入信号进行预处理,辅助后续查找表操作,优化查找流程。
Sine(正弦查找表模块):通过查找表计算输入角度的正弦值,和余弦查找表模块类似,可简化三角函数计算。 这些模块主要用于实现基于查找和插值的信号处理,在复杂系统建模等方面发挥作用。
查找表中的断点就是特定的横坐标,如下图所示,表是由给定的坐标点组成的,每个点可表示特定的一组关系,如(温度,压力),当给定一个温度输入,如3.5,该温度在3和4之间,而温度3和4对应的压力是已知的,将采用某种插值算法计算温度3.5时的压力,如线性插值方法。
Lookup Tables查找表模块库中包含如下模块,以下是各模块介绍:
1 - D Lookup Table(一维查找表模块):根据一维输入信号,在预先定义的表格中查找对应输出值,常用于输入与输出为一维映射关系的场景,如根据温度查对应压力值。
2 - D Lookup Table(二维查找表模块):依据二维输入信号,在二维表格中查找输出值,适用于输入输出为二维映射关系的情况,像根据风速和风向查风力等级。
Cosine(余弦查找表模块):通过查找表方式计算输入角度的余弦值,可避免复杂的实时三角函数计算,提高仿真效率。
Direct Lookup Table (n - D)(直接n维查找表模块):支持n维输入信号的查找表操作,能处理多维输入输出映射关系,应用于复杂多维系统。
Interpolation Using Prelookup(使用预查找的插值模块):先进行预查找处理,再对查找结果进行插值计算,可提高查找精度和灵活性。
Lookup Table Dynamic(动态查找表模块):查找表的参数可动态变化,适用于系统参数随时间或其他条件改变的情况。
n - D Lookup Table(n维查找表模块):用于处理n维输入输出关系的查找表,满足多维数据映射需求。
Prelookup(预查找模块):对输入信号进行预处理,辅助后续查找表操作,优化查找流程。
Sine(正弦查找表模块):通过查找表计算输入角度的正弦值,和余弦查找表模块类似,可简化三角函数计算。 这些模块主要用于实现基于查找和插值的信号处理,在复杂系统建模等方面发挥作用。
查找表中的断点就是特定的横坐标,如下图所示,表是由给定的坐标点组成的,每个点可表示特定的一组关系,如(温度,压力),当给定一个温度输入,如3.5,该温度在3和4之间,而温度3和4对应的压力是已知的,将采用某种插值算法计算温度3.5时的压力,如线性插值方法。
Lookup Tables查找表模块库中包含如下模块,以下是各模块介绍:
1 - D Lookup Table(一维查找表模块):根据一维输入信号,在预先定义的表格中查找对应输出值,常用于输入与输出为一维映射关系的场景,如根据温度查对应压力值。
2 - D Lookup Table(二维查找表模块):依据二维输入信号,在二维表格中查找输出值,适用于输入输出为二维映射关系的情况,像根据风速和风向查风力等级。
Cosine(余弦查找表模块):通过查找表方式计算输入角度的余弦值,可避免复杂的实时三角函数计算,提高仿真效率。
Direct Lookup Table (n - D)(直接n维查找表模块):支持n维输入信号的查找表操作,能处理多维输入输出映射关系,应用于复杂多维系统。
Interpolation Using Prelookup(使用预查找的插值模块):先进行预查找处理,再对查找结果进行插值计算,可提高查找精度和灵活性。
Lookup Table Dynamic(动态查找表模块):查找表的参数可动态变化,适用于系统参数随时间或其他条件改变的情况。
n - D Lookup Table(n维查找表模块):用于处理n维输入输出关系的查找表,满足多维数据映射需求。
Prelookup(预查找模块):对输入信号进行预处理,辅助后续查找表操作,优化查找流程。
Sine(正弦查找表模块):通过查找表计算输入角度的正弦值,和余弦查找表模块类似,可简化三角函数计算。 这些模块主要用于实现基于查找和插值的信号处理,在复杂系统建模等方面发挥作用。
查找表中的断点就是特定的横坐标,如下图所示,表是由给定的坐标点组成的,每个点可表示特定的一组关系,如(温度,压力),当给定一个温度输入,如3.5,该温度在3和4之间,而温度3和4对应的压力是已知的,将采用某种插值算法计算温度3.5时的压力,如线性插值方法。
如下图是使能子系统的使用demo,只有当条件口为真时,该模块才会启用并执行。
如下图是函数调用子系统的使用demo,只有当Function - Call Generator模型存在时,该模块才会启用并执行,可以用C语言中函数调用类比,就是当CPU执行到某个地方时,调用某个函数,这里就是Simulink软件执行仿真运行时,触发函数调用。
Sources信号源模块库中包含如下模块,以下是各模块介绍:
Band - Limited White Noise(带限白噪声模块):生成具有特定频率范围的白噪声信号,常用于模拟噪声环境对系统的影响。
Chirp Signal(啁啾信号模块):产生频率随时间变化的信号,其频率通常呈线性或非线性变化,在雷达、通信等领域的仿真中有应用。
Clock(时钟模块):输出仿真时间,可用于获取当前的仿真时刻,为模型提供时间相关的信号。
Constant(常数模块):输出一个固定的常数值,可用于为模型提供恒定的输入信号。
Counter Free - Running(自由运行计数器模块):输出一个不断递增的计数值,常用于需要计数功能的场景,如循环次数计数等。
Digital Clock(数字时钟模块):输出离散的时间信号,以数字形式表示时间,适用于离散系统的仿真。
Enumerated Constant(枚举常数模块):提供枚举类型的常数值,常用于定义具有特定取值集合的信号。
From File(从文件读取模块):从指定文件中读取数据作为输入信号,文件格式可以是MATLAB支持的多种格式,如.mat文件等。
From Spreadsheet(从电子表格读取模块):从电子表格(如.xlsx文件)中读取数据作为输入信号,方便利用外部表格数据进行仿真。
From Workspace(从工作区读取模块):从MATLAB工作区中读取数据作为输入信号,可灵活地将工作区中已有的数据引入模型。
In Bus Element(输入总线元素模块):作为总线信号的输入元素,用于构建总线信号,将单个信号组合到总线中。
In1(输入端口模块):作为模型或子系统的输入端口,用于接收外部输入信号,是信号进入模型的接口。
Playback(回放模块):回放预先录制的信号数据,可用于重现之前采集或生成的信号。
Pulse Generator(脉冲发生器模块):生成脉冲信号,可设置脉冲的周期、占空比、幅值等参数,常用于模拟脉冲相关的系统激励。
Ramp(斜坡信号模块):产生一个随时间线性变化的斜坡信号,可用于测试系统对渐变输入的响应。
Repeating Sequence(重复序列模块):输出一个重复的固定序列信号,可自定义序列内容和重复周期。
Repeating Sequence Interpolated(插值重复序列模块):与重复序列模块类似,但会对序列进行插值处理,使信号更加平滑。
Repeating Sequence Stair(阶梯重复序列模块):输出阶梯状的重复序列信号。
Signal Editor(信号编辑器模块):允许用户通过图形界面编辑和定义信号的波形、参数等,可创建复杂的自定义信号。
Signal Generator(信号发生器模块):可生成多种类型的标准信号,如正弦波、方波、锯齿波等,方便设置信号的频率、幅值、相位等参数。
Step(阶跃信号模块):产生一个阶跃信号,可设置阶跃的时间、幅值等参数,常用于测试系统的瞬态响应。
Uniform Random Number(均匀随机数模块):生成在指定范围内均匀分布的随机数信号,可用于模拟具有随机性的系统输入。
Waveform Generator(波形发生器模块):用于生成自定义的波形信号,可通过设置多个参数来定义波形的形状和特性。
字符串模块库中包含如下模块,以下是各模块介绍:
ASCII to String(ASCII转字符串模块):将ASCII码值转换为对应的字符串。比如输入一系列ASCII码数值,模块会输出相应字符组成的字符串。
Compose String(字符串组合模块):依据指定格式将输入的多个元素组合成一个字符串。例如可将数字、字符等按照特定格式要求拼成一个字符串。
Scan String(字符串扫描模块):按照给定格式扫描字符串,提取其中符合格式的内容。比如从一段包含数字和字符的字符串中,按指定格式提取出数字等信息。
String Compare(字符串比较模块):比较两个字符串是否相等,或者根据设定规则比较它们的大小关系,输出比较结果(如逻辑值)。
String Concatenate(字符串连接模块):把多个输入字符串连接成一个字符串。例如将“Hello”和“World”连接成“HelloWorld”。
String Constant(字符串常量模块):输出一个预先设定好的字符串常量,为模型提供固定的字符串输入。
String Contains(字符串包含模块):判断一个字符串是否包含另一个指定的子字符串,输出逻辑值表示判断结果。
String Count(字符串计数模块):统计指定子字符串在输入字符串中出现的次数。
String Ends With(字符串以……结尾模块):判断输入字符串是否以指定的子字符串结尾,输出逻辑值。
String Find(字符串查找模块):在输入字符串中查找指定子字符串的位置,返回其起始索引等信息。
String Length(字符串长度模块):计算输入字符串的长度,即字符的个数。
String Starts With(字符串以……开始模块):判断输入字符串是否以指定的子字符串开头,输出逻辑值。
String to ASCII(字符串转ASCII模块):将输入字符串转换为对应的ASCII码值。
String to Double(字符串转双精度浮点数模块):把表示数字的字符串转换为双精度浮点数。例如将字符串“3.14”转换为数值3.14。
String to Enum(字符串转枚举模块):将字符串转换为对应的枚举类型值,前提是字符串与枚举定义匹配。
String to Single(字符串转单精度浮点数模块):把表示数字的字符串转换为单精度浮点数。
Substring(子字符串模块):从输入字符串中提取指定位置和长度的子字符串。
To String(转字符串模块):将输入的非字符串数据(如数字等)转换为字符串类型。