MATLAB实验SIMULINK仿真Word下载.docx
《MATLAB实验SIMULINK仿真Word下载.docx》由会员分享,可在线阅读,更多相关《MATLAB实验SIMULINK仿真Word下载.docx(28页珍藏版)》请在冰点文库上搜索。
Real-TimeWorkshop
(实时工作空间库)
Stateflow(状态流程库)
SimulinkExtras
(Simulink附加库)
SystemIDBlockset(系统辨识模块集)
✓Simulink的基本模块按功能进行分类,包括以下8类子库:
Continuous(连续系统模块)
Discrete(离散系统模块)
Function&
Tables(函数和平台模块)
Math(数学运算模块)
Nonlinear(非线性模块)
Signals&
Systems(信号和系统模块)
Sinks(接收器模块)
Sources(输入源模块)
下面列出一些基本模块的功能说明,以供实际使用时查询。
表1:
连续系统模块(Continuous)功能
模块名
功能简介
Integrator
输入信号积分
Derivative
输入信号微分
State-Space
线性状态空间系统模型
TransportDelay
输入信号延时一个固定时间再输出
Transfer-Fcn
线性传递函数模型
VariableTransportDelay
输入信号延时一个可变时间再输出
Zero-Pole
以零极点表示的传递函数模型
表2:
离散系统模块(Discrete)功能
Discrete-timeIntegrator
离散时间积分器
DiscreteFilter
IIR与FIR滤波器
DiscreteState-Space
离散状态空间系统模型
DiscreteZero-Pole
以零极点表示的离散传递函数模型
DiscreteTransfer-Fcn
离散传递函数模型
Zero-OrderHold
零阶采样和保持器
First-OrderHold
一阶采样和保持器
UnitDelay
一个采样周期的延时
表3:
函数和平台模块(Function&
Tables)功能
Fcn
用自定义的函数(表达式)进行运算
MATLABFcn
利用matlab的现有函数进行运算
S-Function
调用自编的S函数的程序进行运算
Look-UpTable
建立输入信号的查询表(线性峰值匹配)
Look-UpTable(2-D)
建立两个输入信号的查询表(线性峰值匹配)
表4:
数学运算模块(Math)功能
Sum
加减运算
Product
乘运算
DotProduct
点乘运算
Gain
增益模块
MathFunction
包括指数函数、对数函数、求平方、开根号等常用数学函数
TrigonometricFunction
三角函数,包括正弦、余弦、正切等
MinMax
最值运算
Abs
取绝对值
Sign
符号函数
LogicalOperator
逻辑运算
Real-ImagtoComplex
由实部和虚部输入合成复数输出
ComplextoMagnitude-Angle
由复数输入转为幅值和相角输出
Magnitude-AngletoComplex
由幅值和相角输入合成复数输出
ComplextoReal-Imag
由复数输入转为实部和虚部输出
RelationalOperator
关系运算
表5:
非线性模块(Nonlinear)功能
Saturation
饱和输出,让输出超过某一值时能够饱和
Relay
滞环比较器,限制输出值在某一范围内变化
Switch
开关选择,依据第二输入端的值,选择输出第一或第三输入端的值
ManualSwitch
手动选择开关
表6:
信号和系统模块(Signal&
Systems)功能
In1
输入端
Out1
输出端
Mux
将多个单一输入转化为一个复合输出
Demux
将一个复合输入转化为多个单一输出
Ground
给未连接的输入端接地,输出0
Terminator
连接到没有连接的输出端,终止输出
SubSystem
空的子系统
Enable
使能子系统
表7:
接收器模块(Sinks)功能
Scope
示波器
XYGraph
显示二维图形
ToWorkspace
输出到MATLAB的工作空间
ToFile(.mat)
输出到数据文件
Display
实时的数值显示
StopSimulation
输入非0时停止仿真
表8:
输入源模块(Sources)功能
Constant
常数信号
Clock
时钟信号
FromWorkspace
输入信号来自MATLAB的工作空间
FromFile(.mat)
输入信号来自数据文件
SignalGenerator
信号发生器,可以产生正弦、方波、锯齿波及随意波
RepeatingSequence
重复信号
PulseGenerator
脉冲发生器
SineWave
正弦波信号
Step
阶跃波信号
注:
在simulnk模块库浏览器的help菜单系统中可查询以上各模块的详细功能和使用说明。
通常,用户创建的Simulink模型包含下列三部分“组件”:
●输入信号源(Sources):
可以是常数、时钟、白噪声、正弦波、阶梯波、扫频信号、脉冲生成器、随机数产生器等信号源或者是用户自定义的信号;
●系统(System):
即被模拟系统的SIMULINK方框图;
系统模块作为中心模块是Simulink仿真建模所要解决的主要部分。
●接收器(即输出、显示部分Sink):
可以是示波器、图形记录仪(XYGraph)等。
当然对于具体的SIMULINK模型而,不一定完全地包含这三大组件。
例如:
研究初始条件对系统影响就不必包含信号源组件。
⏹创建SIMULINK模型
在simulink中创建系统模型的步骤:
1新建一个空白的模型窗口(只有在模型窗口中才能创建用户自己的系统模型)。
方式是:
依次单击simulink模块库浏览器的“File”菜单NewModel,将弹出一个如图2所示的模型窗口。
2在simulink模块库浏览器中,将创建系统模型所需要的功能模块用鼠标拖放到新建的模型窗口中,如图2所示。
3将各个模块用信号线连接,设置仿真参数,保存所创建的模型(后缀名.mdl)。
4
点击模型窗口中的
按钮,运行仿真。
例1:
已知某振动系统的振动速度
,初始条件x(0)=0,利用simulink仿真该系统的振动位移。
分析:
要计算振动位移必须解上述微分方程,因此需要一个积分模块(Integrator),被积函数是sin(t),因此需要一个正弦波输入源模块(SineWave),积分器的输出(i.e.振动位移x(t))用示波器观察,因此需要一个显示输出模块Scope。
所用各模块如下所示:
步骤1:
如上所述新建模型窗口;
步骤2:
从源模块库(Sources)中用鼠标拖放一个正弦波模块(SineWave)至模型窗口中,然后从连续模块库(Continuous)中拖放一个积分模块(Integrator),再从输出显示模块库(Sinks)拖放一个示波器模块(Scope)。
步骤3:
将各模块的输入、输出用信号线按如下所示依次连接(连接方法:
将鼠标移动到模块的输出端,此时鼠标箭头成十字形,按住左键,移动鼠标到另一个模块的输入端,当出现两个十字形光标重影时,释放左键完成信号线的连接),然后保存模型。
步骤4:
运行仿真,然后双击示波器模块,可观察到仿真结果如图3所示。
2.Simulink功能模块的处理与修饰
下面介绍对模块的一些基本操作,包括模块的移动、复制、删除、转向、改变大小、模块命名、颜色设定、参数设定等。
操作模块前要先选定模块,鼠标左键点击模块即选中,此时模块四角出现4个黑色标记,若要同时选中多个模块,则按住Shift键,同时点击想要选中的模块即可。
⏹模块的移动
选中模块,按住鼠标左键将其拖曳到所需的位置即可。
若要脱离信号线而移动,可按住shift键,再进行拖曳。
⏹模块的复制
方法1:
选中模块,然后按住鼠标右键进行拖曳即可复制同样的一个功能模块。
方法2:
选中模块,Ctrl+C复制,Ctrl+V粘贴;
⏹模块的删除
选中模块,按Delete键即可。
若要删除多个模块,可以同时按住Shift键,再用鼠标选中多个模块,按Delete键即可。
也可以用鼠标选取某区域,再按Delete键就可以把该区域中的所有模块和线等全部删除。
⏹模块的旋转
为了能够顺序连接功能模块的输入和输出端,功能模块有时需要转向。
选中模块,在菜单Format中选择FlipBlock旋转180度,选择RotateBlock顺时针旋转90度。
⏹调整模块的大小
选中模块,对模块四角出现的4个黑色标记进行拖曳即可。
⏹模块的命名
先用鼠标在需要更改的名称上单击一下,然后直接更改即可。
名称在功能模块上的位置也可以变换180度,可以用Format菜单中的FlipName来实现,也可以直接通过鼠标进行拖曳。
HideName可以隐藏模块名称。
⏹设定模块的颜色
Format菜单中的ForegroundColor可以改变模块的前景颜色,BackgroundColor可以改变模块的背景颜色;
而模型窗口的颜色可以通过ScreenColor来改变。
⏹设定模块参数
用鼠标双击模块,就可以进入模块的参数设定窗口,从而对模块进行参数设定。
参数设定窗口包含了该模块的基本功能帮助,为获得更详尽的帮助,可以点击其上的help按钮。
通过对模块的参数设定,就可以获得需要的功能模块。
3.信号线的处理与修饰
信号线也即功能模块之间的连接线。
对simulink信号线的操作包括绘制信号线、移动线段、移动节点、删除信号线、信号线分支、设定信号线的标签。
⏹绘制信号线
由模块的输出端口拖曳鼠标到另一模块的输入端口,或拖曳鼠标由输入端口到输出端口,如下图所示。
拖动模块还可以调整所绘信号线的弯折状态。
⏹移动线段
若想移动信号线的某段,单击选中此段。
移动鼠标到目标线段上,则鼠标的形状变为移动图标。
按住鼠标,并拖曳到新位置。
放开鼠标,则信号线被移动到新的位置。
⏹移动节点
单击选中某个节点,如图。
按住鼠标左键拖曳节点到新位置,然后释放鼠标,则可将节点移动到新的位置。
⏹删除信号线
同删除模块一样,删除信号线可以选中信号线,然后按Delete键,或者利用菜单【Edit/Clear】或【Edit/Cut】选项进行删除。
⏹设定信号线的标签
每段信号线都可以有一个标签。
双击要标注的信号线,则信号线的附近就会出现一个编辑区,在编辑区内输入标签的内容即可,如左下图所示。
⏹给信号线加分支
若要给信号线加分支,只需将鼠标移动到分支的起点位置,按住Ctrl键+鼠标左键,拖动到目标模块的输入端,释放鼠标和Ctrl键即可,如右上图所示。
4.设置仿真参数(选读)
【说明:
该部分属本次实验的进阶内容,如因时间关系可跳过不看。
在一般情况下,如无特殊要求,仿真参数无需特别设置,使用系统默认值即可。
】
设置模型的仿真参数是Simulink仿真重要的一环。
通常在完成建模之后就可以对模型进行动态仿真了,但是在仿真前必须对模型的仿真参数进行相关的设置才能保证仿真的有效性。
在模型窗口中依次点击顶层菜单SimulationConfigurationParameters,弹出设置仿真参数的对话框如下:
仿真参数设置对话框主要包含以下五个选项卡:
①解法设置(Solver)
它允许用户设置仿真的开始和结束时间,选择解法器,说明解法器参数及选择一些输出选项。
②数据的输入/输出(DataImport/Export)
它允许用户从MATLAB的工作空间(Workspace)输入模型所需参数或将运行结果输出到工作空间。
③优化选项(Optimization)
主要是对仿真性能进行优化设置。
④诊断项(Diagnostics)
允许用户选择Simulink在仿真中显示的警告信息的等级。
⑤实时工具对话框诊断项(Real-TimeWorkshop)
主要用于与C语言编辑器的交换,通过它可以直接从SIMULINK模型生成代码并且自动建立可以在不同环境下运行的程序,这些环境包括实时系统和单机仿真。
一般情况下,主要使用前面2个选项卡,因此下面主要介绍1、2两个选项卡的参数设置:
⏹解法器(Solver)选项卡的参数设置
✓仿真时间(Simulationtime)
Starttime和Stoptime设置仿真的起始和停止时间,单位是秒。
注意这里的时间概念与真实的时间并不一样,因为实际的运行时间和计算机的性能、模型的复杂程度、解法、步长、误差要求等等因素有关。
✓解法器(Solver)选择
一般情况下,被模拟系统的工作过程都可以由一组微分方程来描述,因此用于系统动态仿真的解法器和求解微分方程组的解法器相同。
这些解法器分为两种:
变步长模式解法器:
ode45,ode23,ode113,ode15s,ode23s,ode23t,ode23tb和discrete。
除discrete方法外,其他的解法在实验二中有介绍。
Discrete方法使用于模型中没有连续状态的情况,这时系统会自动选择这种方法。
系统默认的变步长解法器是ode45。
固定步长模式解法器:
ode5,ode4,ode3,ode2,ode1和discrete。
ode5:
系统默认的定步长解法器,是ode45的固定步长版本,适用于大多数连续,不适用于刚性系统。
ode4:
四阶龙格-库塔法,具有一定的计算精度。
ode3:
固定步长的ode23解法。
ode2:
改进的欧拉法。
ode1:
欧拉法。
discrete:
是一个实现积分的固定步长解法器,它适合于离散无连续状态的系统。
✓仿真步长选择
Type选项中指定仿真的步长选取方式,可供选择的有Variable-step(变步长)和Fixed-step(固定步长)方式。
变步长模式可以在仿真的过程中改变步长,提供误差控制和过零检测。
固定步长模式在仿真过程中提供固定的步长,不提供误差控制和过零检测。
✓步长参数
对于变步长模式,用户可以设置最大的和推荐的初始步长参数,缺省情况下,步长自动地确定,它由值auto表示。
(a)Maximumstepsize(最大步长参数):
它决定了解法器能够使用的最大时间步长,它的缺省值为“仿真时间/50”,即整个仿真过程中至少取50个取样点,但这样的取法对于仿真时间较长的系统则可能带来取样点过于稀疏,而使仿真结果失真。
一般建议对于仿真时间不超过15s的采用默认值即可,对于超过15s的每秒至少保证5个采样点,对于超过100s的,每秒至少保证3个采样点。
(b)Initialstepsize(初始步长参数):
一般建议使用“auto”默认值即可。
✓仿真精度(对于变步长模式)
(a)Relativetolerance(相对误差):
它是指误差相对于状态的值,是一个百分比,缺省值为1e-3,表示状态的计算值要精确到0.1%。
(b)Absolutetolerance(绝对误差):
表示误差值的门限,或者是说在状态值为零的情况下,可以接受的误差。
如果它被设成了auto,那么simulink为每一个状态设置初始绝对误差为1e-6。
⏹数据的输入/输出(DataImport/Export)选项卡的参数设置
此页主要用来设置SIMULINK与MATLAB工作空间交换信息的有关选项,通过此页的设置可以从MATLAB的工作空间(Workspace)获取模型所需参数或将SIMULINK运行结果输出到工作空间。
它包含三项(如图):
①从MATLAB工作空间获得系统输入(Loadfromworkspace)
②仿真结果输出到MATLAB的工作空间(Savetoworkspace)
③存储选项(Saveoption)
✓从MATLAB工作空间加载(Loadfromworkspace)
虽然Simulink提供了多种系统输入信号,但并不能完全满足需要。
Simulink允许使用用户自定义的信号作为系统输入信号。
在Loadfromworkspace框中,用户可以设置MATLAB中的变量作为系统输入信号或系统状态初值,如下所述:
(1)Input:
用来设置系统输入信号,其格式为[t,u],其中t、u均为列向量,t为输入信号的时间向量,u为相应时刻的信号取值。
可以使用多个信号输入,如[t,u1,u2]。
输入信号与Simulink的接口由Inport模块(In1模块)实现。
在Matlab命令窗口输入:
>
t=1:
20;
t=t'
;
u=[sin(t),cos(t)];
xInitial=[01];
后运行上述模型即可从Matlab的工作空间获得信号输入与结果输出。
(2)Initialstate:
用来设置系统状态变量的初始值。
初始值xInitial可为列向量。
注意:
使用xInitialstate所设置的状态变量初始值会自动覆盖系统模块中的设置。
✓仿真结果输出到MATLAB的工作空间(Savetoworkspace)
此选项可以将系统的仿真结果、系统仿真时刻、系统中的状态或指定的信号输出到MATLAB的工作空间中,以便用户对其进行定量分析,如下所述:
(1)Time:
输出系统仿真时刻。
(2)States:
输出系统模型中的所有状态变量。
(3)Output:
输出系统模型中的所有由Output模块(即Out1模块)表示的信号。
(4)Finalstate:
输出系统模型中的状态变量的最终取值,即最后仿真时刻处的状态值。
✓存储选项(Saveoption)
(1)Limitdatapointstolast:
表示输出数据的长度(从信号的最后数据点记起)。
对于向量而言即其维数,对于矩阵而言即其秩。
(2)Format:
表示输出数据类型。
共有三种形式:
StructurewithTime(带有仿真时间变量的结构体)、Structure(不带仿真时间变量的结构体)、Array(信号数组)。
(3)Decimation:
设定了一个亚采样因子,它的缺省值为1,也就是对每一个仿真时间点产生值都保存,而若为2,则是每隔一个仿真时刻才保存一个值。
(4)Outputoptions:
输出选项,包含3个可选项
●Refineoutput(细化输出):
可以增加输出数据的点数,使得输出数据更加平滑。
一般当仿真输出太稀松时,使用此选项。
与该选项配套的参数设置是refinefactor(细化因子),若细化因子定为2,则输出数据点数加倍,若为3则输出3倍的数据点数,依次类推,默认值是1。
通常要产生更光滑的输出曲线,通过改变精细因子比减小仿真步长更有效。
精细输出只能在变步长模式中才能使用,并且在ode45效果最好。
●Produceadditionaloutput:
它允许用户直接指定产生输出的时间点。
一旦选择了该项,则在它的右边出现一个outputtimes编辑框,在这里用户指定额外的仿真输出点,它既可以是一个时间向量,也可以是表达式。
与精细因子相比,这个选项会改变仿真的步长。
●Producespecifiedoutputonly:
它的意思是让simulink只在指定的时间点上产生输出。
为此解法器要调整仿真步长以使之和指定的时间点重合。
这个选项在比较不同的仿真时可以确保它们在相同的时间输出。
5.启动仿真
设置仿真参数和选择解法器之后,就可以启动仿真而运行。
方法:
选择Simulink菜单下的start选项来启动仿真,如果模型中有些参数没有定义,则会出现错误信息提示框。
如果一切设置无误,则开始仿真运行。
下面给出一个实际