Simulink从0搭建模型09-P10 各类常用子系统介绍
- 今日学习内容
- 1. 使能子系统 Enabled Subsystem
- 2. 触发子系统 Triggered Subsystem
- 3. 函数调用子系统 Function-Call Subsystem
- 3.1. 使用Function-Call Generator 产生一个f()信号
- 3.2. 使用Stateflow产生f()一个信号
- 3.2.1. Chart模块
- 4. 定义函数 Simulink Function和 调用函数Function Caller
- 4.1. 例子1:加法器myAdd
- 4.2. 例子2:数组加法 myArrayAdd
- 4.2.1. 定义函数
- 4.2.2. 调用函数
- 4.2.3. 参数设置
- 4.2.4. 运行结果
- 4.2.5. help文档
今天这节课主要是对前面学过的使能子系统和其他没有学过的常用的子系统进行对比学习。
今日学习内容
b站视频 【Simulink 0基础入门教程 P10 各类常用子系统介绍】
上述5个子系统在库的位置:
1. 使能子系统 Enabled Subsystem
使能信号为1或0。这个在前面课程专门学过:Simulink从0搭建模型03-Enabled Subsystem 使能子系统。
例子:
内部是累加器:
脉冲信号参数:
运行结果:
fixed-step size设置为0.1s,也即每0.1s执行一次。
可以看到脉冲为1时使能子系统每0.1s累加1,脉冲为0时保持。
2. 触发子系统 Triggered Subsystem
上升沿rising
或下降沿falling
或上升沿&下降沿either
都能触发。
- 上升沿触发:
此时每次上升沿触发,累加器执行+1。
- 下降沿触发:
此时每次上升沿触发,累加器执行+1。
3. 函数调用子系统 Function-Call Subsystem
3.1. 使用Function-Call Generator 产生一个f()信号
注意:Function-Call Generator和Function-Call Subsystem内部的f()的Sample time需要设置一样的,且都是fixed step size的整数倍,比如这里设置fixed step size=0.1,Sample time=0.1.
如果Sample time不是一样的,会报错:
如果不是fixed step size整数倍也报错:
3.2. 使用Stateflow产生f()一个信号
目前还没讲到Stateflow这块知识点。这块后面再学习。
3.2.1. Chart模块
进入内部:
view–Model Explorer
4. 定义函数 Simulink Function和 调用函数Function Caller
Simulink Function和Function Caller搭配使用。
4.1. 例子1:加法器myAdd
详细:
在Simulink Function内部设计加法器。把f()改名为"myAdd",退到Simulink Function外部就看到名字自动更为了sum = myAdd(u1,u2)。
光有定义函数还需要调用它,因此需要用Function Caller来调用Simulink Function。
修改Function Caller参数:
最后就可以运行结果。
4.2. 例子2:数组加法 myArrayAdd
4.2.1. 定义函数
内部:
4.2.2. 调用函数
设计一个数组的加法。输入u1是一个3维的数组(添加Mux模块),u2是一个常数。
小技巧:鼠标放在Simulink Function1模块上,会出现蓝色的箭头图标。按住鼠标左键拖拽得到Function Caller1,如下:<img
4.2.3. 参数设置
- Simulink Function1参数设置:
- u1维度改为3,sum维度改为3
- f()改名为myArrayAdd
- Function Caller1参数设置:
4.2.4. 运行结果
求和结果就是,数组的每一个数都加3,输出维度也是3.
4.2.5. help文档
关于对模块的使用方法,还可以通过查看自带的help(帮助)文档来学习。比如上图的"Function Caller1参数设置”,可以点击Help
键跳转到Function Caller Documentation界面。
-END-