10 -simulink系统仿真

simulink用于对动态系统进行仿真与建模
10 -simulink系统仿真

一、simulink仿真基础

本节内容:
10 -simulink系统仿真
simulink启动方式
启动之后,点击black model,从而打开模型编辑窗口。
10 -simulink系统仿真
10 -simulink系统仿真
10 -simulink系统仿真
看一下simulink中的simulink Library Browser,
注1:左面窗口是模块库列表,单击左面某个模块库则右面显示该模块的子模块库,双击其中一个子模块库图表,则列出此子模块库的所有模块。
注2:注意看:左侧窗口的simulink是基本模块库,左侧窗口除了simulink之外的模块库是专业模块库。
注3:模块是构成仿真模型的基本单元,在模型编辑窗口中,添加所需要的模块,并将各种模块连接在一起,就构成了系统的仿真模型。
10 -simulink系统仿真
simulink模块操作
10 -simulink系统仿真
10 -simulink系统仿真
10 -simulink系统仿真
模型创建完成之后,将模型存盘:
10 -simulink系统仿真
模块参数的设置
10 -simulink系统仿真
10 -simulink系统仿真
仿真参数的设置
打开仿真参数设置的方法:
10 -simulink系统仿真
你要重点了解的是左侧窗口的solver的设置,其内容为下图右侧窗口的三个红圈分别代表仿真起始时间、结束时间、选择微分方程求解算法。
10 -simulink系统仿真
10 -simulink系统仿真
运行当前模型:
10 -simulink系统仿真
例:
正弦信号由信号源模块中的正弦信号模块提供
余弦信号还是由正弦信号模块提供,只是相角设置为pi/2
把仿真结果送给示波器模块和XY Graph模块
其中示波器模块设置两个输入端口,分别显示sin t 和con t随仿真时间的变化曲线。
XY Graph模块显示sint对cont的变化曲线。
10 -simulink系统仿真
模型建好后将模型存盘,设置仿真起始时间为0 ~ 2pi,仿真算法为固定步长ode5算法(即5阶龙格库塔算法)
启动仿真,双击示波器模块和XY Graph模块,仿真结果如下:
10 -simulink系统仿真
本节总结:
10 -simulink系统仿真

二、子系统的创建与封装

子系统是指将若干个模块组合到一起形成的新的模块。使用子系统可以减少模型中模块的数量,便于模块的组织与原理。子系统作为独立的模块可以在仿真模型中直接作为标准的simulink模块使用。
本节内容:
10 -simulink系统仿真
1、子系统的创建
两种方法:
10 -simulink系统仿真
例:
以创建y = kx + b子系统为例:

方法一:通过Subsystem(即子系统)来创建子系统。
首先选中Subsystem子系统模块库,将Subsystem模块拖拽到空白区。
10 -simulink系统仿真双击子系统模块,打开子系统编辑窗口,如下图中间所示。我们添加模块最终形成下图右侧所示:
10 -simulink系统仿真
然后输入端添加一个正弦波(即下图的y=sint),输出端添加一个示波器,并将输入端和输出端都连接到示波器。
注:你需要在MATLAB命令行窗口对k、b赋值。
10 -simulink系统仿真
方法二:将已有的模块转换为子系统
10 -simulink系统仿真
操作方法为:
先添加所有模块并创建模块之间关系,然后选中所有模块,然后按下图右侧的三个红圈进行点击选中,然后就形成了下下一幅图的效果。
10 -simulink系统仿真
10 -simulink系统仿真2、对子系统进行封装
首先选中子系统,然后按下图操作,这时将出现封装编辑对话框,如下下一幅图所示
10 -simulink系统仿真
注:我们上面所说的k、b参数就可以在第二个选项卡中设置,从而封装了起来,避免你再去MATLAB命令行窗口赋值了。
10 -simulink系统仿真
下面介绍一下子系统封装编辑器的第二个选项卡
左侧区域为控件,中间区域显示对话框中的控件,右侧显示和修改控件的属性。
双击左侧的edit,中间将出现k、b的编辑,我们可以编辑二者的提示信息的名称。
点击子系统封装编辑器的OK,这时就会让你输入k、b的值。
10 -simulink系统仿真
3、条件执行子系统
10 -simulink系统仿真
使能子系统
注:控制信号既可以是标量也可以是向量。
控制信号为标量时,其大于0时,子系统执行。
控制信号为向量时,其任一个元素大于0,子系统执行。
10 -simulink系统仿真
我们可以直接添加使能子系统,当然了,也可以把原来不是使能子系统的模块添加一个使能模块从而1变成了一个使能子系统。
10 -simulink系统仿真
例:
输入端的分支接到了子系统使能端。
运行如右图所示,这里正弦信号当控制信号。控制信号为负值时,子系统停止执行,输出是零。
10 -simulink系统仿真
触发子系统
10 -simulink系统仿真
触发子系统的触发方式有4种形式
10 -simulink系统仿真
例:
最左侧的是一个信号发生器,双击信号发生器,显示右侧参数编辑框。
幅值设置为4,频率设置为1Hz.
示波器接输入端和输出端,以便于将二者比较。
10 -simulink系统仿真
然后再打开触发子系统参数编辑模块,选择触发事件方式为双边沿触发:
10 -simulink系统仿真
运行结果,示波器图形:
每当锯齿波过0时,子系统开始接受输入值;在两次触发事件之间,子系统维持前一点数值不变。
10 -simulink系统仿真
使能加触发子系统
注:使能信号为正时,触发事件才起作用。
10 -simulink系统仿真

三、S函数的设计与应用

虽然simulink提供了很多模块,但是当这些模块不能满足我们的需求时,我们可以自定义一个模块,即S函数。
本节内容
10 -simulink系统仿真
S函数是非可视化的,需要我们自己去编程
10 -simulink系统仿真
我们使用MATLAB语言编写S函数,为了高效,我们在模板文件上进行写S文件。
在模板文件中,在主函数中可是使用switch case选择六个子函数之一。
10 -simulink系统仿真
10 -simulink系统仿真
10 -simulink系统仿真
S函数的应用
10 -simulink系统仿真
看case为0的初始化函数mdlInitializeSizes函数定义:
10 -simulink系统仿真
mdlOutputs函数定义
注:k、b为自定义参数。
10 -simulink系统仿真
好,以上一个主函数,两个子函数,用各自函数名存盘这样S函数就建好了。

在sinmulink模型中使用S函数,必须从用户自定义函数模块库中向模型编辑窗口添加S函数模块,然后在S函数模块的对话框中,输入S函数的文件名。
下图是正弦波模块、S函数模块、示波器模块。双击S函数模块,打开其参数对话框,输入S函数名(因为你可能会有很多个S函数啊,你得选一个吧),输入外部参数k、b
10 -simulink系统仿真
S函数参数对话框:
10 -simulink系统仿真
然后选中S函数模块,打开封装编辑器,在第二个选项卡,设置k、b参数。设置完毕后单击OK按钮,然后退出并赋予k、b值。
运行得到仿真结果:
10 -simulink系统仿真