概述
1.Simulink仿真基础
Simulink的启动
- 在 MATLAB主窗口选择“主页”选项卡,再单击“文件”命令组的“新建命令按钮,然后从下拉菜单中选择“ Simulink Model”命令。
- 在 MATLAB主窗口选择“主页”选项卡,再单击“ SIMULINK”命令组中的“ Simulink”命令按钮。
- 在 MATLAB的命令行窗口输入 simulink,命令。
- 利用File→New命令,可以建立新的仿真模型;利用 File→Open命令,可以打开已经建立好的模型文件。
- 单击 "Library Browser"按钮,将打开 Simulink模块库浏览器窗口,此时,可以通过鼠标将模块库中的模块拖动到模型编辑窗口,再将各个模块连接起来,就构成了仿真模型。
系统仿真模型的创建
(1)Simulink Library Browser窗口
(2)Simulink模块的操作
- 模块的添加:首先要在 Simulink模块库浏览器窗口中找到该模块,然后用鼠标将这个模块拖曳到模型编辑窗口中即可。
- 模块的删除或复制:需要先选定模块,再按删除键;或在模型编辑窗口选择Edit菜单项中的Cut、Copy、Paste等剪贴板操作命令。
- 两个模块的连接:先将鼠标指针移动到一个模块的输出端,当鼠标指针变成十字形光标时按住鼠标左键,移动鼠标指针到另一个模块的输入端,当连接线由虚线变成实线时,释放鼠标左键就完成了两个模块的连接。
- 连线的分支:在先连好一条线之后,把鼠标指针移到分支点的位置,先按下Ctrl键,然后按住鼠标拖曳到目标模块的输入端,释放鼠标和Ctrl键。
(3)模型存盘
- 在 Simulink模型编辑窗口选择File→Save命令或Save as命令。
- 单击模型编辑窗口工具栏中的Save命令按钮。
(4)模块参数的设置
- 双击要设置的模块。
- 选择要设置的模块,再选择 Diagram→Block Parameters命令。
- 右击要设置的模块,从快捷菜单中选择 Block Parameters命令。
仿真参数的设置
- 选择Simulink→Model Conifiguration Paramerers命令。
- 单击工具栏中的Model Conifiguration Paramerers按钮。
2.子系统的创建与封装
子系统的创建
- 通过Subsystem模块创建子系统
- 将已有的模块转化为子系统
以y=kx+b为例创建子系统:
(1)通过Subsystem模块创建子系统
(2)将已有的模块转化为子系统
先选择构成子系统的全部模块,然后执行创建子系统的命令,这样原来的全部模块便成为一个子系统。
子系统的封装
- 第一个选项卡用于设置被封装模块的图标。
- 第二个选项卡用来设置子系统参数设置对话框,选择edit添加变量。
- 第三个选项卡用于设置初始化命令。
- 第四个选项卡用于定义封装模块的类型、描述和帮助文本。
子系统的条件执行
(1)使能子系统表示控制信号由负变正时子系统开始执行,直到控制信号再次变为负时结束。
(2)触发子系统
触发子系统是指当触发事件发生时开始执行子系统。
与使能子系统相类似,触发子系统的建立可直接选择 Triggered Subsystem模块,或者展开已有子系统,添加Ports& Subsystems模块库中的 Trigger模块,将该子系统转换为触发子系统。
- rising(上跳沿触发):控制信号从负值或0上升到正值时子系统开始执行。
- falling(下跳沿触发):控制信号从正值或0下降到负值时子系统开始执行。
- either(上跳沿或下跳沿触发):当控制信号满足上跳沿或下跳沿触发条件时,子系统开始执行。
- function-call(函数调用触发):这种触发方式必须与S函数配合使用。
(3)使能加触发子系统
所谓使能加触发子系统就是当使能控制信号和触发控制信号共同作用时执行子系统。
3.S函数的设计与应用
什么叫S函数
- S函数是系统函数 (System Function)的简称,是指采用一种程序设计语言描述的一个功能模块。
- 用户可以采用 MATLAB语言,也可以采用C、C++或FORTRAN等语言来编写S函数。
- S函数有自己特定的语法构成规则,可以用来描述并实现连续系统、离散系统以及复合系统。
- S函数能够接收来自 Simulink求解算法的相关信息,并对求解算法发出的命令做出适当的响应,这种交互作用类似于 Simulink系统模块与求解算法的相互作用。
用MATLAB语言编写S函数
在MATLAb命令窗口输入命令,打开模板文件
模板文件sfuntmpl.m包括:
- 1个主函数
- 6个子函数
(1)主函数
主函数的引导语句为:
- fname是S函数的函数名。
- 输入形参t、x、u、flag分别为仿真时间、状态向量、输入向量和子函数调用标志。
- 输出形参sys代表一种返回参数;x0是初始状态值;对于M文件S函数,str将被置成一个空阵;ts是一个两列矩阵。
(2)子函数
S函数共有6个子函数,这些子函数的前辍为mdl,由flag的值来控制在仿真的各阶段调用S函数的哪一个子函数。
- flag取0:调用初始化子函数 mdlInitializeSizes
- flag取1:调用子函数 mdlDerivatives实现连续状态的更新。
- flag取2:调用子函数 mdlUpdate实现离散状态的更新。
- flag取3:调用输出子函数 mdlOutputs
S函数的应用
采用S函数实现y=kx+b。
(1)定义S函数
- 主函数
- 初始化子函数
- 输出子函数
(2)在Simulink模型中使用S函数
4.Simulink仿真应用举例
蹦极(Bungee Jumping)系统的建模与仿真
采用 Simulink对蹦极跳系统进行仿真研究。要求如下:
①建立蹦极跳系统的 Simulink仿真模型。
②分析蹦极跳系统的安全性,包括
- 当弹力绳弹性系数一定时,求蹦极者的安全体重。
- 当蹦极者体重一定时,求弹力绳的最小弹性系数。
系统分析
第三项,第四项代表空气阻力
仿真模型
仿真结果及分析
设置条件:
- m=65;
- g=9.8;
- k=20;
- a1=1;
- a2=1;
- h=100;
- s=40;
- 积分器初值分别为0和-s
(1)求最大安全体重
假设人与水面的最小距离为1.5m,系统其它参数不变,求此时的最大安全体重。
for m=100:-0.5:20
[t,x,y_w]=sim('bengji',0:0.01:100);
if min(y_w)>1.5
break;
end
end
disp(['最大安全体重是',num2str(m)])
d=min(y_w);
disp(['最小安全距离是',num2str(d)])
plot(t,y_w)
grid on
(2)求最小弹性系数
m=65;
for k=10:0.1:50
[t,x,y_w]=sim('bengji',0:0.01:100);
if min(y_w)>1.5
break;
end
end
disp(['最小弹性系数是',num2str(k)])
d=min(y_w);
disp(['最小安全距离是',num2str(d)])
plot(t,y_w)
grid on
最后
以上就是无语曲奇为你收集整理的Simulink系统仿真1.Simulink仿真基础2.子系统的创建与封装3.S函数的设计与应用4.Simulink仿真应用举例的全部内容,希望文章能够帮你解决Simulink系统仿真1.Simulink仿真基础2.子系统的创建与封装3.S函数的设计与应用4.Simulink仿真应用举例所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复