文章说明:
该文章主要是为了记录SIMULINK中各个模块的基本定义,基础功能描述以及功能实现的简单方块图搭建,做一个知识记录,也希望能给大家带来一点帮助
文章目录
- 1. 简介
- 2. 基础模块库
- 1. Ground(接地模块)
- 2. Terminator(终端模块)
- 3.Constant(常数模块)
- 4. Sum(加法运算模块)
- 5. Product(乘法运算模块)
- 6.Bus Creator(总线模块)
- 7. Scope(示波器模块)
- 8. Demux(分路器模块)
- 9.开关模块
- 10.Gain(增益模块)
- 11. Relational Operator(关系运算模块)
- 12. Logical Operator(逻辑运算模块)
- 13.积分模块
- 14.单位延迟模块
- 15. Discrete-Time Integrator(离散时间积分模块)
- 16. (Data Type Conversion)数据类型转换模块
- 3. 线性模块库
- 4. 非线性模块库
- 5. 离散模块库
- 6.逻辑运算,位运算库
- 7. 表查询模块库
- 8. 数学运算库
- 1. Add(加法模块)
- 2. Bias(偏移模块)
- 3. Slider Gain(滑动增益模块)
- 4. 数学函数模块(Math Function)
- 5. 多项式模块(Polynomial)
- 6. 圆整函数(Rounding Function)
- 7. 最值函数(MinMax)
- 8. 动态最值函数(MinMax Running Resettable)
- 9. 三角函数模块(Trigonometric Function)
- 10. 代数约束模块(Algebraic Constraint)
- 11. 分配模块(Assignment)
- 12. 变形模块(Reshape)
- 13. 矩阵拼接模块
- 14. 复数相关的模块
- 9. 模块校验库
- 10. 模型扩展功能库
- 11. 端口及子系统库
- 1.使能子系统(Enabled Subsystem)
- 2. 触发子系统(Trigger Subsystem)
- 3. 微型子系统(Atomic Subsystem)
- 4. 代码重用子系统(CodeReuseSubsystem)
- 5. 模型模块(Model)
- 6. 函数调用发生器(Function-Call Generator)
- 7. 可配置子系统模块(Configurable Subsystem)
- 8. 触发使能子系统(Enabled and Triggered Subsystem)
- 9. 函数调用子系统(Function-Call Subsystem)
- 10. for循环子系统(For Iterator Subsystem)
- 11. while循环子系统(While Iterator Subsystem)
- 12. if-if action子系统
- 13. switch-switch case子系统
- 14. 子系统实例模块(Subsystem Example)
- 12. 信号属性库
- 1. 数据类型复制模块(Data Type Duplicate)
- 2. 数据类型传播模块(Data Type Propagation)
- 3. 数据比例剥离模块(Data Type Scaling Strip)
- 4. 初始条件模块(IC)
- 5. 信号转换模块(Signal Conversion)
- 6. 传输率过渡模块(Rate Transtition)
- 7. 信号规则模块(Signal Specification)
- 8. 数据类型传播模块实例(Data Type Propagation Examples)
- 9. 探测模块(Probe)
- 10. 加权采样时间模块(Weighted Sample Time)
- 11. 宽度模块(Width)
- 13. 信号通路库
- 14. 信号输出库
- 15. 信号源库
- 1. From输入源模块(From Workspace / From File)
- 2. 线性调频模块(Chirp Signal)
- 3. 重复序列模块(Repeating Sequence)
- 4. 信号构造器(Signal Builder)
- 5. 随机数发生器(Random Number / Uniform Random Number)
- 6. 带限白噪声(Band-Limited White Noise)
- 7. 阶梯形的重复序列(Repeating Sequence Stair)
- 8. 差分的重复序列(Repeating Sequence Interporated)
- 9. 计数器模块(Counter Free-Runing / Counter Limited)
- 10. 时钟模块(Clock / Digital Clock)
- 16. 用户定义函数库
- 17. 补充离散库
- 18. 补充数学库
1. 简介
- 仿真对象
可以使用数学来描述的系统----涉及连续,离散,非线性,时变,条件执行,多速率混合等用解析方法难以求解的系统,可以通过simulink来建模和仿真,来指导系统的设计。
- 特点
(1) 交互式建模
(2) 交互式仿真
(3) 可以将不同语言编写的算法进行拓展,集成到框图中
(4) 提供了不同行业和领域的专业模型库
- 仿真流程
(1) 根据实际问题得到对应数学模型
(2) 将数学模型用框图形式表示
(3) 将框图用simulink中的模块来实现
(4) 配置不同模块中的参数,给不同模块命名
(5) 设置仿真运行参数
(6) 进行仿真
(7) 对仿真结果进行分析
2. 基础模块库
1. Ground(接地模块)
定义:将未连接的输入模块进行接地
注意: 不连接不影响最终输出,但是会有warning
2. Terminator(终端模块)
定义:将未连接的输出模块进行接入终端
注意: 如果只有一维输出会有warning,说明无意义,如果是多维的输出,则正常使用
3.Constant(常数模块)
定义:可以生成常数,向量,矩阵
注意:向量指的是类似数组的一组数,运算方式为对每个数单独计算,不同于线性代数中的向量。
4. Sum(加法运算模块)
定义:可以进行常数,向量,矩阵的加减运算
注意:运算元素的维度要相同,维度不同时,一定情况下模块会将元素进行维度拓展处理再运算。
5. Product(乘法运算模块)
定义:可以进行常数,向量,矩阵的乘除(* /)运算
注意:
- 可以选择运算方式为矩阵乘法或者元素乘法
- Number of inputs中可以输入*或者/来选定乘除运算
6.Bus Creator(总线模块)
定义:将不同信号合并到同一根信号线上
参数:
- 选择需要合并的信号线数目
- 配置信号线命名的两种方式
7. Scope(示波器模块)
使用:配置总线进行显示,先将不同信号接到同一根总线上,再接到示波器进行显示
8. Demux(分路器模块)
定义:将混合的信号按照给定的规则输出到子线上
说明:若规则为-1,则代表系统自动分配,系统会尽量平均分配到每个子线
9.开关模块
10.Gain(增益模块)
定义:对常数项作元素乘积或矩阵乘积
注意:选择矩阵乘积的时候,由于矩阵乘法的不可逆性,要注意相乘的次序。
11. Relational Operator(关系运算模块)
simulink提供的单目运算符:
- isInf:是否为无穷
- isNaN:是否为数值
- isFinite:是否有限
12. Logical Operator(逻辑运算模块)
与关系运算模块的使用类似
13.积分模块
初始条件:可使用内部或者外部初始条件
限制:可设置上下限【也可以使用Saturation(饱和模块)来实现】,注意,初始条件也要在界限范围内
复位:符合某一条件时,积分器恢复为初始条件
14.单位延迟模块
应用:用于搭建数字滤波器
15. Discrete-Time Integrator(离散时间积分模块)
前向欧拉法:
后向欧拉法:
梯形法:将每段的斜率用起点和终点斜率的平均值替代
16. (Data Type Conversion)数据类型转换模块
应用:注意定点数和浮点数的转换,其他的转换跟C语言转换类似
3. 线性模块库
1. Derivative(微分模块)
注意: 下图一开始有一个斜率很大的直线是由于微分初值为0
2. State-Space(状态空间模块)
使用范围:多输入多输出的系统
举例:常系数四阶微分方程
连续系统使用linmod提取状态状态矩阵(离散系统用dlinmod)
3. Transfer Fcn(传递函数模块)
应用:给定输入和输出的对应项的系数即可,注意是降幂的顺序
拓展:使用tf函数以及bode函数来绘制bode图,用于判断传递函数的性质
4. Zero-Pole(零极点增益模块)
应用:对于某一传递函数,使分子为0的点为零点,使分母为0的点为极点,增益为最终化简后的系数,输入即可得到对应的传递函数
函数应用:
tf — 用于构造普通的传递函数
zpk — 用于构造零极点增益的传递函数
ss — 用于构造状态空间矩阵
5. PID模块
模式选择:有理想和并行模式,不同模式下P,I,D的表示有区别
进阶:PID Controller(2DOF),可以设置参考点
6. Variable Transport Delay(可变传输延迟)
4. 非线性模块库
1. 动态饱和模块(Saturation Dynamic)
注:模块的上下界限可以是常数,也可以是变化的函数
2. 动态死区模块(Dead Zone Dynamic)
输出值:
- 输入值在死区范围内,输出为0
- 输入值在死区外,输出为输入减去对应的死区边界值(上下越界分别减去上下边界值)
3. 齿隙模块(Backlash)
参数:
- 死区宽度
- 初始输入
注:死区平均分布在初始输入值两边
4. 继电器模块(Relay)
参数:
- 开启点(关闭点)的阈值
- 开启时(关闭时)的输出
应用:
防止
5. 比例极限模块(Rate Limiter)
应用:限制输出信号函数的斜率
6. 穿越点检测模块(Hit Crossing)
定义:在信号达到某个数值时输出1,不然输出0
参数:检测边缘条件:上升,下降,双边
注意:该模块输出为布尔类型的值,处理时要注意数据类型转换
7. 量化模块(Quantizer)
定义:y = q * round(u/q) , y是输出,u是输入,q是采样时间间隔,round-to-nearest为向最接近的值舍入
8. 归零模块(Wrap To Zero)
定义:输入信号大于阈值,则输出0
9. 库伦摩擦和粘滞摩擦模块
参数:Offset为不同理论下的偏移量,只研究一种理论的话可以设置为标量!
5. 离散模块库
1. 延迟模块
类别: 单位延迟,积分延迟,拍延迟
应用:以拍延迟为例,它与积分延迟的区别在于它将每一次延时之后函数都输出了
2. 离散传函,零极点,状态空间模块
应用:与连续系统使用类似,以零极点模块为例
3. 离散滤波器模块(Discrete Fliter和Discrete FIR Fliter)
4. 差分模块(Difference)
定义:输出当前采样值减上一次采样值
5. 离散微分模块(Discrete Derivative)
定义:即求离散数值的微分
6. 连续系统和离散系统的转换
函数:bilinear, c2d,可将连续系统中的参数矩阵转换为离散系统的参数矩阵
7. 惯性环节(Transfer Fcn First Order)
注意:惯性与延迟不同,惯性是由于系统本身的输出相对于输入具有反应延后,而延迟是某一时刻的输出在延时一段时间后再输出
8. 超前滞后环节(Transfer Fcn Lead or Lag)
参数:可调整零点和极点的大小来调整系统为超前或滞后补偿系统
9. 记忆模块(Memory)
定义:输出 = 上一次的输入
10. 零阶保持器(Zero-Order Hold)
定义:零阶定步长拟合
11. 一阶保持器(First Order Hold)
定义:一阶定步长拟合
12. 离散PID模块
用法:与连续PID模块使用类似
6.逻辑运算,位运算库
1. 逻辑运算模块(Logical Operator)
定义:即C++语言中的逻辑运算AND,OR,NOR等
2. 关系运算模块(Relational Operator)
定义:即进行输入值大于小于等于的关系比较
3. 区间检测模块(Interval Test Dynamic)
类型:动态和静态,一般使用动态
4. 组合逻辑模块(Combinatorial Logic)
用处:产生真值表
行:不同输入的组合效果
列:模块的输出数目
运算过程:
输入值按二进制布尔值形式输入,按二进制数从小到大排列即对应真值表的值
R-S触发器
由两个与非门的输入输出端交叉连接而成,是组合逻辑块的典型应用
5. 比较模块(Compare)
类型:常数比较模块,零比较模块
输出:输入为标量/向量,则输出为标量/向量
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Sm0qwsWJ-1630850081200)(https://s3.ax1x.com/2021/01/03/spvtFf.png)]](https://imgchr.com/i/D6VhNV)
6. 位设置模块(Bit Set)
应用:即将二进制的某一位置1
注意:数据类型要匹配,这个模块处理的是定点数
7. 位清除模块(Bit Clear)
应用:即将二进制的某一位置0
应用:与位设置模块相同
8. 位运算模块(Bitwise Operator)
应用:即C语言中的位运算
输入输出:可以选择输入的参数数目
9. 位提取模块(Extract Bits)
应用:即提取二进制数的某连续几位
10. 移位运算模块(Shift Arithmatic)
参数:
- 数字移位位数
- 小数点移位位数
注意:数值左移为负,右移为正
11. 检测模块
应用:比较该时刻与上一时刻的数值大小,配合其他附加条件,输出逻辑值
7. 表查询模块库
1. 表查询模块(n-D Lookup Table)
定义:给定不同维度下的唯一坐标对应的函数值,查询时查询该坐标则返回对应值,非给定坐标则返回插值函数对应值
- 在给的断点位置, 查询模块的值和普通函数值相同
- 在非断点位置,则利用内插和外插法来求得对应值
- n维的查询模块与一维类似,只是插值法用的是n维线性插值法
[[
2. 预查询表模块(Interpolation Using Prelookup)
定义:实则为向量表,通过给定的不同维度下的向量下标找到对应表的值,非整数下标则取插值函数的值,可以配合Prelookup模块使用
Prelookup:下标查询模块,可以查询在自定义的变量范围内,给定参数的下标的整数和小数部分
3. 直接查询表模块(Direct Lookup Table)
定义:给定一个矩阵,通过下标去访问对应元素,下标从0开始
- 超过给定范围则取表中的延长线上的最接近给定坐标的元素
4. 动态查询表模块(Lookup Table Dynamic)
定义:与普通表查询模块类似,只是表的值可以在过程中改变
5. 正余弦表查询模块(Sine)
用法:结合该模块可以将满足迪利克雷条件的周期函数转化为傅里叶级数
8. 数学运算库
1. Add(加法模块)
模块可以设置单目或多目,单目的话输入必须是矩阵,实现的功能即为累加。
2. Bias(偏移模块)
将输入值加上一个常数进行输出,可以用于将函数图像进行上下位移
3. Slider Gain(滑动增益模块)
用法与增益模块类似,只是拥有图形化界面,便于调节参数
4. 数学函数模块(Math Function)
输入可以是标量,向量或矩阵,输出也是。
5. 多项式模块(Polynomial)
系数以矩阵的方式表示,以降幂的形式表示
6. 圆整函数(Rounding Function)
方式:
floor: 负无穷方向上离输入值最近的整数
ceil: 正无穷方向上离输入值最近的整数
round: 四舍五入法取值
fix: 朝0方向上离输入值最近的整数
7. 最值函数(MinMax)
- 输入端口若为两个,则输入可以是同维度的向量或标量和向量。
- 若标量和向量比较,则会先将标量拓展再逐一维度比较
8. 动态最值函数(MinMax Running Resettable)
R输入的是0 1向量,1代表重置,输出为自定义初始值,0输出重置后的最值
9. 三角函数模块(Trigonometric Function)
- 运算输入输出都是弧度制
- 输入参数个数可以改变,弧度制则一个参数,坐标制则两个参数
10. 代数约束模块(Algebraic Constraint)
作用 :使用迭代方式求解f(z) = 0
11. 分配模块(Assignment)
- 模式:可选择基于0或基于1,即从0或者1开始计数
- 作用:将某个维度的矩阵的指定位置的值为指定数值。
12. 变形模块(Reshape)
- 注意事项:低维变成高维度时,优先填充列。
[[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tko52qv8-1630850081208)(https://s3.ax1x.com/2021/01/12/sYJgKJ.png)]
13. 矩阵拼接模块
- 进行矩阵拼接时,对应的维度要匹配
14. 复数相关的模块
- Complex to Magnitude-Angle
- Magnitude-Angle to Complex
- Complex to Real-Imag
- Real-Imag to Complex
- 作用:都是复数表示形式的转换
- 技巧:在相角输出前乘上180/pi的增益,即可换算角度和弧度。
9. 模块校验库
1. 动静态校验模块(Check Static xxx,Check Dynamic xxx)
功能: 大于上限(小于下限)则停止仿真(也可以不停止),输出指定错误信息。
2. 声明模块(Assertion)
功能: 保证输入的值是非零值
3. 离散梯度校验模块(Check Discrete Gradient)
功能: 保证离散梯度的值小于某个值
注意事项: 仿真设置中,类型为定步长(Fixed-step),编译器为离散编译(discrete)
4. 输入分辨率校验模块 (Check Input Resolution)
功能: 保证输入的分辨率在一定范围内
应用: 模拟信号与数字信号的转换
10. 模型扩展功能库
1. 基于触发的线性化模型(Trigger-Based Linearization)
功能: 将某一系统某个时间点的状态转换为状态矩阵,并存储在工作空间
2. 基于时间的线性化模型(Time-Based Linearization)
- 功能与上一模块类似
3. 模型信息模块(Model Info)
功能: 添加模型的信息,如版本信息,修改信息等
4. 文本信息模块(DocBlock)
功能: 保存文本信息,不影响模型运行
5. 模块支持表(Block Support Table)
11. 端口及子系统库
1.使能子系统(Enabled Subsystem)
用法: 在子系统中加个ENABLE模块则变成了使能子系统,需要外加一个输入端口,输入大于0时使能子系统
2. 触发子系统(Trigger Subsystem)
用法: 与使能子系统用法类似,外加的模块为Trigger
3. 微型子系统(Atomic Subsystem)
功能: 与子系统类似,但它不依附于主系统,即独立参与运算
端口数: 多输入,单输出
4. 代码重用子系统(CodeReuseSubsystem)
端口数: 多输入,多输出
5. 模型模块(Model)
功能: 即为模型创建一个快捷方式
6. 函数调用发生器(Function-Call Generator)
功能: 调配函数调用子系统
7. 可配置子系统模块(Configurable Subsystem)
注意事项: 该模块应用于库中
功能: 将多个子系统合并为一个,用的时候可以选择使用哪个子系统
8. 触发使能子系统(Enabled and Triggered Subsystem)
定义: 触发子系统和使能子系统的结合
9. 函数调用子系统(Function-Call Subsystem)
10. for循环子系统(For Iterator Subsystem)
功能: 与程序中的for类似
11. while循环子系统(While Iterator Subsystem)
配置:
- while或者do while模式
- 开始状态可以为held或者reset
- 最大循环次数
12. if-if action子系统
使用方法: if action模块作为if模块的输出,实现if else的功能
13. switch-switch case子系统
使用方法: switch action模块作为switch模块的输出,实现switch case的功能
14. 子系统实例模块(Subsystem Example)
功能: 封装了多种子系统的Demo
12. 信号属性库
1. 数据类型复制模块(Data Type Duplicate)
功能: 检测输入的数据类似是否一致,起提示作用
2. 数据类型传播模块(Data Type Propagation)
功能: 根据输入的参考信号的数据类型,对传播的数据类型进行调整
3. 数据比例剥离模块(Data Type Scaling Strip)
4. 初始条件模块(IC)
功能: 设置输入信号t = 0时的值
5. 信号转换模块(Signal Conversion)
功能: 将信号转换为新的数据类型,且不改变信号的数值大小。可以将不同空间的信号合并到通一空间中。
6. 传输率过渡模块(Rate Transtition)
作用对象: 采样速率不同的模块之间,用该模块进行协调
常用模式: ZOH(零阶保持器),Unit Delay(单位延迟)
7. 信号规则模块(Signal Specification)
作用: 设定输入信号的周期,若不同则发出警告
8. 数据类型传播模块实例(Data Type Propagation Examples)
作用: 给出了各个数据类型模块的Demo
9. 探测模块(Probe)
作用: 探测出输入信号的各种信息,如宽度,周期等
10. 加权采样时间模块(Weighted Sample Time)
作用: 配合输入信号值和权值计算采样时间大小
11. 宽度模块(Width)
作用: 输出值为输入信号的维度
13. 信号通路库
1. 总线分配模块(Bus Assignment)
作用: 用指定信号来替换总线当中的某一信号
2. 选择器(Selector)
作用: 选择输入信号的某维度的值,重新构造为新的矩阵
3. 下标向量模块(Index Vector)
作用: 输入为多路信号,输出指定下标对应的那一路的信号
4. 合并模块(Merge)
功能: 将不同的输入信号合并为一个信号输出
5. 环境控制模块(Environment Controller)
作用: 区分系统处理仿真环境或实时工作室环境
6. 手动开关模块(Manual Switch)
功能: 手动切换开关的位置,并保留最后一次的设置
7. 多端口开关模块(Multiport Switch)
用法与下标向量模块类似
8. Goto From模块
作用: Goto接收输入信号,From输出该信号,相当于隐藏的线将其相连
- 注意事项 两者的Tag需要相, 才可匹配
- Tag的作用范围也可调节为本地,全局等
- Tag作用范围为Scoped时,需要配合Goto Tag Visibility来使用
9. 信号存储模块(Data Store Memory / Data Store Read / Data Store Write)
作用: 解决不同层级间的数据通信
注意事项: 只能读写同层或上层的数据存储记忆模块中的数据
14. 信号输出库
1. 文件模块(To File)
作用: 将仿真数据存储到指定文件名的文件中
2. 工作空间模块(To Workspace)
作用: 将仿真数据存储到matlab工作空间中
3. 浮动示波器(Floating Scope)
区别: 与普通示波器的区别在于不需要与信号输入相连,而只需在设置参数中选择所需显示的信号
4. 图像显示器(XY Graph)
功能: 将输入的XY坐标连线,形成一幅连续的图像
5. 终止仿真模块(Stop Simulation)
功能: 输入值存在0时终止仿真,一般与关系运算符模块配合使用
15. 信号源库
1. From输入源模块(From Workspace / From File)
功能: 从指定位置提取数据输入到模型中
2. 线性调频模块(Chirp Signal)
功能: 信号的波形与正弦波类似,但是频率随时间增长而增长。
3. 重复序列模块(Repeating Sequence)
功能: 在每个时间周期内输出数值线性增加,然后在进入下个周期前迅速减小
4. 信号构造器(Signal Builder)
功能: 根据自己的需要构造所需的信号波形
5. 随机数发生器(Random Number / Uniform Random Number)
说明: 前者服从正态分布,后者服从均一分布。
6. 带限白噪声(Band-Limited White Noise)
7. 阶梯形的重复序列(Repeating Sequence Stair)
8. 差分的重复序列(Repeating Sequence Interporated)
9. 计数器模块(Counter Free-Runing / Counter Limited)
功能: 设置了上限后,计数达到上限则归零,重复
10. 时钟模块(Clock / Digital Clock)
注意事项: 时钟用于连续系统,数字时钟用于离散系统,数字时钟可以调节时间间隔使曲线平滑。
16. 用户定义函数库
1. 函数模块(Fcn)
功能: 定义一个函数,可以带未知参数,并用u(1),u(2)…来表示,然后传进自变量以及参数值,输出即为函数值。
2. Matlab函数模块(MATLAB Fcn)
功能: 该模块可以使用Matlab内置的函数。
3. 嵌入式Matlab函数模块(Embedded MATLAB Fcn)
定义: 该模块独立编译,不受外部模型的影响。使用该模块需要系统安装编译器
4. S函数(S-Function)
功能: 可以用C语言等其他语言与matlab进行交互
17. 补充离散库
1. 直接传函
2. 定点状态空间(Fixed-Ponit State-Space)
3. 外部IC单位延迟(Unit Delay External IC)
4. 补充的单位延迟模块
作用: 在普通的单位延迟模块上加上使能以及重置端口,使用更灵活
5. 带预览的单位延迟模块
功能: 输出端口有两个,一个是有延迟功能的,一个是不经过延迟的,方便进行比较
18. 补充数学库
1. 自加/自减模块(Increment Real world / Decrement Real world)
功能: 与C语言中的++和–类似
2. 递减模块(Decremet Time To Zero / Decrement To Zero)
功能: 递减输入数值至0