SIMULINK仿真基础.docx
- 文档编号:5761103
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:14
- 大小:28.47KB
SIMULINK仿真基础.docx
《SIMULINK仿真基础.docx》由会员分享,可在线阅读,更多相关《SIMULINK仿真基础.docx(14页珍藏版)》请在冰豆网上搜索。
SIMULINK仿真基础
SIMULINK的启动
1、在MATLAB命令窗口中输入simulink
结果是在桌面上出现一个称为SimulinkLibraryBrowser的窗口,在这个窗口中列出了按功能分类的各种模块的名称。
当然用户也可以通过MATLAB主窗口的快捷按钮来打开SimulinkLibraryBrowser窗口。
2、在MATLAB命令窗口中输入simulink3
结果是在桌面上出现一个用图标形式显示的Library:
simulink3的Simulink模块库窗口。
两种模块库窗口界面只是不同的显示形式,用户可以根据各人喜好进行选用,一般说来第二种窗口直观、形象,易于初学者,但使用时会打开太多的子窗口。
SIMULINK的模块库介绍
SIMILINK模块库按功能进行分类,包括以下8类子库:
Continuous(连续模块)
Discrete(离散模块)
Function&Tables(函数和平台模块)
Math(数学模块)
Nonlinear(非线性模块)
Signals&Systems(信号和系统模块)
Sinks(接收器模块)
Sources(输入源模块)
1、连续模块(Continuous)continuous.mdl
Integrator:
输入信号积分
Derivative:
输入信号微分
State-Space:
线性状态空间系统模型
Transfer-Fcn:
线性传递函数模型
Zero-Pole:
以零极点表示的传递函数模型
Memory:
存储上一时刻的状态值
TransportDelay:
输入信号延时一个固定时间再输出
VariableTransportDelay:
输入信号延时一个可变时间再输出
2、离散模块(Discrete)discrete.mdl
Discrete-timeIntegrator:
离散时间积分器
DiscreteFilter:
IIR与FIR滤波器
DiscreteState-Space:
离散状态空间系统模型
DiscreteTransfer-Fcn:
离散传递函数模型
DiscreteZero-Pole:
以零极点表示的离散传递函数模型
First-OrderHold:
一阶采样和保持器
Zero-OrderHold:
零阶采样和保持器
UnitDelay:
一个采样周期的延时
3、Function&Tables(函数和平台模块)function.mdl
Fcn:
用自定义的函数(表达式)进行运算
MATLABFcn:
利用matlab的现有函数进行运算
S-Function:
调用自编的S函数的程序进行运算
Look-UpTable:
建立输入信号的查询表(线性峰值匹配)
Look-UpTable(2-D):
建立两个输入信号的查询表(线性峰值匹配)
4、Math(数学模块)math.mdl
Sum:
加减运算
Product:
乘运算
DotProduct:
点乘运算
Gain:
比例运算
MathFunction:
包括指数函数、对数函数、求平方、开根号等常用数学函数
TrigonometricFunction:
三角函数,包括正弦、余弦、正切等
MinMax:
最值运算
Abs:
取绝对值
Sign:
符号函数
LogicalOperator:
逻辑运算
RelationalOperator:
关系运算
ComplextoMagnitude-Angle:
由复数输入转为幅值和相角输出
Magnitude-AngletoComplex:
由幅值和相角输入合成复数输出
ComplextoReal-Imag:
由复数输入转为实部和虚部输出
Real-ImagtoComplex:
由实部和虚部输入合成复数输出
5、Nonlinear(非线性模块)nonlinear.mdl
Saturation:
饱和输出,让输出超过某一值时能够饱和。
Relay:
滞环比较器,限制输出值在某一范围内变化。
Switch:
开关选择,当第二个输入端大于临界值时,输出由第一个输入端而来,否则输出由第三个输入端而来。
ManualSwitch:
手动选择开关
6、Signal&Systems(信号和系统模块)sigsys.mdl
In1:
输入端。
Out1:
输出端。
Mux:
将多个单一输入转化为一个复合输出。
Demux:
将一个复合输入转化为多个单一输出。
Ground:
连接到没有连接到的输入端。
Terminator:
连接到没有连接到的输出端。
SubSystem:
建立新的封装(Mask)功能模块
7、Sinks(接收器模块)sinks.mdl
Scope:
示波器。
XYGraph:
显示二维图形。
ToWorkspace:
将输出写入MATLAB的工作空间。
ToFile(.mat):
将输出写入数据文件。
8、Sources(输入源模块)sources.mdl
Constant:
常数信号。
Clock:
时钟信号。
FromWorkspace:
来自MATLAB的工作空间。
FromFile(.mat):
来自数据文件。
PulseGenerator:
脉冲发生器。
RepeatingSequence:
重复信号。
SignalGenerator:
信号发生器,可以产生正弦、方波、锯齿波及随意波。
SineWave:
正弦波信号。
Step:
阶跃波信号。
SIMULINK简单模型的建立及模型特点
1、简单模型的建立
(1)建立模型窗口
(2)将功能模块由模块库窗口复制到模型窗口
(3)对模块进行连接,从而构成需要的系统模型
2、模型的特点
❑在SIMULINK里提供了许多如Scope的接收器模块,这使得用SIMULNK进行仿真具有像做实验一般的图形化显示效果。
❑SIMULINK的模型具有层次性,通过底层子系统可以构建上层母系统。
❑SIMULINK提供了对子系统进行封装的功能,用户可以自定义子系统的图标和设置参数对话框。
SIMULINK功能模块的处理
功能模块的基本操作,包括模块的移动、复制、删除、转向、改变大小、模块命名、颜色设定、参数设定、属性设定、模块输入输出信号等。
❑模块库中的模块可以直接用鼠标进行拖曳(选中模块,按住鼠标左键不放)而放到模型窗口中进行处理。
❑在模型窗口中,选中模块,则其4个角会出现黑色标记。
此时可以对模块进行以下的基本操作。
1)移动:
选中模块,按住鼠标左键将其拖曳到所需的位置即可。
若要脱离线而移动,可按住shift键,再进行拖曳。
2)复制:
选中模块,然后按住鼠标右键进行拖曳即可复制同样的一个功能模块。
3)删除:
选中模块,按Delete键即可。
若要删除多个模块,可以同时按住Shift键,再用鼠标选中多个模块,按Delete键即可。
也可以用鼠标选取某区域,再按Delete键就可以把该区域中的所有模块和线等全部删除。
4)转向:
为了能够顺序连接功能模块的输入和输出端,功能模块有时需要转向。
在菜单Format中选择FlipBlock旋转180度,选择RotateBlock顺时针旋转90度。
或者直接按Ctrl+F键执行FlipBlock,按Ctrl+R键执行RotateBlock。
5)改变大小:
选中模块,对模块出现的4个黑色标记进行拖曳即可。
6)模块命名:
先用鼠标在需要更改的名称上单击一下,然后直接更改即可。
名称在功能模块上的位置也可以变换180度,可以用Format菜单中的FlipName来实现,也可以直接通过鼠标进行拖曳。
HideName可以隐藏模块名称。
7)颜色设定:
Format菜单中的ForegroundColor可以改变模块的前景颜色,BackgroundColor可以改变模块的背景颜色;而模型窗口的颜色可以通过ScreenColor来改变。
8)参数设定:
用鼠标双击模块,就可以进入模块的参数设定窗口,从而对模块进行参数设定。
参数设定窗口包含了该模块的基本功能帮助,为获得更详尽的帮助,可以点击其上的help按钮。
通过对模块的参数设定,就可以获得需要的功能模块。
9)属性设定:
选中模块,打开Edit菜单的BlockProperties可以对模块进行属性设定。
包括Description属性、Priority优先级属性、Tag属性、Openfunction属性、Attributesformatstring属性。
其中Openfunction属性是一个很有用的属性,通过它指定一个函数名,则当该模块被双击之后,Simulink就会调用该函数执行,这种函数在MATLAB中称为回调函数。
10)模块的输入输出信号:
模块处理的信号包括标量信号和向量信号;标量信号是一种单一信号,而向量信号为一种复合信号,是多个信号的集合,它对应着系统中几条连线的合成。
缺省情况下,大多数模块的输出都为标量信号,对于输入信号,模块都具有一种“智能”的识别功能,能自动进行匹配。
某些模块通过对参数的设定,可以使模块输出向量信号。
SIMULINK线的处理
SIMULINK模型的构建是通过用线将各种功能模块进行连接而构成的。
用鼠标可以在功能模块的输入与输出端之间直接连线。
所画的线可以改变粗细、设定标签,也可以把线折弯、分支。
❑改变粗细:
线所以有粗细是因为线引出的信号可以是标量信号或向量信号,当选中Format菜单下的WideVectorLines时,线的粗细会根据线所引出的信号是标量还是向量而改变,如果信号为标量则为细线,若为向量则为粗线。
选中VectorLineWidths则可以显示出向量引出线的宽度,即向量信号由多少个单一信号合成。
❑设定标签:
只要在线上双击鼠标,即可输入该线的说明标签。
也可以通过选中线,然后打开Edit菜单下的SignalProperties进行设定,其中signalname属性的作用是标明信号的名称,设置这个名称反映在模型上的直接效果就是与该信号有关的端口相连的所有直线附近都会出现写有信号名称的标签。
❑线的折弯:
按住Shift键,再用鼠标在要折弯的线处单击一下,就会出现圆圈,表示折点,利用折点就可以改变线的形状。
❑线的分支:
按住鼠标右键,在需要分支的地方拉出即可以。
或者按住Ctrl键,并在要建立分支的地方用鼠标拉出即可。
SIMULINK自定义功能模块
自定义功能模块有两种方法,一种方法是采用Signal&Systems模块库中的Subsystem功能模块,利用其编辑区设计组合新的功能模块;另一种方法是将现有的多个功能模块组合起来,形成新的功能模块。
对于很大的SIMULINK模型,通过自定义功能模块可以简化图形,减少功能模块的个数,有利于模型的分层构建。
一、方法1将Signal&Systems模块库中的Subsystem功能模块复制到打开的模型窗口中。
1)双击Subsystem功能模块,进入自定义功能模块窗口,从而可以利用已有的基本功能模块设计出新的功能模块。
二、方法2
在模型窗口中建立所定义功能模块的子模块。
1)用鼠标将这些需要组合的功能模块框住,然后选择Edit菜单下的CreateSubsystem即可。
三、自定义功能模块的封装
❑上面提到的两种方法都只是创建一个功能模块而已,如果要命名该自定义功能模块、对功能模块进行说明、选定模块外观、设定输入数据窗口,则需要对其进行封装处理。
❑首先选中Subsystem功能模块,再打开Edit菜单中的MaskSubsystem进入mask的编辑窗口,可以看出有3个标签页。
1)Icon:
设定功能模块的外观。
2)Initialization:
设定输入数据窗口(PromptList)。
3)Documentation:
设计该功能模块的文字说明。
1、Icon标签页
❑此页最重要的部分是DrawingCommands,在该区域内可以用disp指令设定功能模块的文字名称,用plot指令画线,用dpoly指令画转换函数。
❑注意,尽管这些命令在名字上和以前讲的MATLAB函数相同,但它们在功能上却不完全相同,因此不能随便套用以前所讲的格式。
a)disp(‘text’)可以在功能模块上显示设定的文字内容。
disp(‘text1\ntext2’)分行显示文字text1和text2
b)plot([x1x2…xn],[y1y2…yn])指令会在功能模块上画出由[x1y1]经[x2y2]经[x3y3]…直到[xn,yn]为止的直线。
功能模块的左下角会根据目前的坐标刻度被正规化为[0,0],右上角则会依据目前的坐标刻度被正规化为[1,1]。
c)dpoly(num,den):
按s次数的降幂排序,在功能模块上显示连续的传递函数。
d)dpoly(num,den,’z’):
按z次数的降幂排序,在功能模块上显示离散的传递函数。
❑用户还可以设置一些参数来控制图标的属性,这些属性在Icon页右下端的下拉式列表中进行选择。
a)Iconframe:
Visible显示外框线;Invisible:
隐藏外框线。
b)IconTransparency:
Opaque隐藏输入输出的标签;Transparent:
显示输入输出的标签。
c)IconRotation:
旋转模块。
d)Drawingcoordinate:
画图时的坐标系。
2、Initialization标签页
❑此页主要用来设计输入提示(prompt)以及对应的变量名称(variable)。
在prompt栏上输入变量的含义,其内容会显示在输入提示中。
而variable是仿真要用到的变量,该变量的值一直存于maskworkspace中,因此可以与其他程序相互传递。
❑如果配合在initializationcommands内编辑程序,可以发挥功能模块的功能来执行特定的操作。
a)在prompt编辑框中输入文字,这些文字就会出现在prompt列表中;在variable列表中输入变量名称,则prompt中的文字对应该变量的说明。
如果要增加新的项目,可以点击边上的Add键。
Up和Down按钮用于执行项目间的位置调整。
b)Controltype列表给用户提供选择设计的编辑区,选择Edit会出现供输入的空白区域,所输入的值代表对应的variable;Popup则为用户提供可选择的列表框,所选的值代表variable,此时在下面会出现Popupstrings输入框,用来设计选择的内容,各值之间用逻辑或符号“|”隔开;如选择Checkbox则用于on与off的选择设定。
c)Assignment属性用于配合Controltype的不同选择来提供不同的变量值,变量值有Evaluate和Literal两种,其含义如下:
Assignment
ControltypeEvaluateLiteral
Edit输入的文字是程序执行时所用的变量值;输入内容作字符串处理
Popup为选择的序号,选第一项输出值为1,选择内容作字符串处理
往下类推;
Checkbox输出为1或0;输出为‘on’或‘off’的字符串
3、Documentation标签页
❑此页主要用来针对完成的功能模块来编写相应的说明文字和Help。
a)在Blockdescription中输入的文字,会出现在参数窗口的说明部分。
b)在Blockhelp中输入的文字则会显示在单击参数窗口中的help按钮后浏览器所加载的HTML文件中。
c)Masktype:
在此处输入的文字作为封装模块的标注性说明,在模型窗口下,将鼠标指向模块,则会显示该文字。
当然必须先在View菜单中选择BlockDataTips——ShowBlockDataTips。
SIMULINK仿真的运行
构建好一个系统的模型之后,接下来的事情就是运行模型,得出仿真结果。
运行一个仿真的完整过程分成三个步骤:
设置仿真参数,启动仿真和仿真结果分析。
一、设置仿真参数和选择解法器
❑设置仿真参数和选择解法器,选择Simulation菜单下的Parameters命令,就会弹出一个仿真参数对话框,它主要用三个页面来管理仿真的参数。
I.Solver页,它允许用户设置仿真的开始和结束时间,选择解法器,说明解法器参数及选择一些输出选项。
II.WorkspaceI/O页,作用是管理模型从MATLAB工作空间的输入和对它的输出。
III.Diagnostics页,允许用户选择Simulink在仿真中显示的警告信息的等级。
1、Solver页
❑此页可以进行的设置有:
选择仿真开始和结束的时间;选择解法器,并设定它的参数;选择输出项。
1)仿真时间:
注意这里的时间概念与真实的时间并不一样,只是计算机仿真中对时间的一种表示,比如10秒的仿真时间,如果采样步长定为0.1,则需要执行100步,若把步长减小,则采样点数增加,那么实际的执行时间就会增加。
一般仿真开始时间设为0,而结束时间视不同的因素而选择。
总的说来,执行一次仿真要耗费的时间依赖于很多因素,包括模型的复杂程度、解法器及其步长的选择、计算机时钟的速度等等。
2)仿真步长模式:
用户在Type后面的第一个下拉选项框中指定仿真的步长选取方式,可供选择的有Variable-step(变步长)和Fixed-step(固定步长)方式。
变步长模式可以在仿真的过程中改变步长,提供误差控制和过零检测。
固定步长模式在仿真过程中提供固定的步长,不提供误差控制和过零检测。
用户还可以在第二个下拉选项框中选择对应模式下仿真所采用的算法。
❑变步长模式解法器有:
ode45,ode23,ode113,ode15s,ode23s,ode23t,ode23tb和discrete。
a)ode45:
缺省值,四/五阶龙格-库塔法,适用于大多数连续或离散系统,但不适用于刚性(stiff)系统。
它是单步解法器,也就是,在计算y(tn)时,它仅需要最近处理时刻的结果y(tn-1)。
一般来说,面对一个仿真问题最好是首先试试ode45。
b)ode23:
二/三阶龙格-库塔法,它在误差限要求不高和求解的问题不太难的情况下,可能会比ode45更有效。
也是一个单步解法器。
c)ode113:
是一种阶数可变的解法器,它在误差容许要求严格的情况下通常比ode45有效。
ode113是一种多步解法器,也就是在计算当前时刻输出时,它需要以前多个时刻的解。
d)ode15s:
是一种基于数字微分公式的解法器(NDFs)。
也是一种多步解法器。
适用于刚性系统,当用户估计要解决的问题是比较困难的,或者不能使用ode45,或者即使使用效果也不好,就可以用ode15s。
e)ode23s:
它是一种单步解法器,专门应用于刚性系统,在弱误差允许下的效果好于ode15s。
它能解决某些ode15s所不能有效解决的stiff问题。
f)ode23t:
是梯形规则的一种自由插值实现。
这种解法器适用于求解适度stiff的问题而用户又需要一个无数字振荡的解法器的情况。
g)ode23tb:
是TR-BDF2的一种实现,TR-BDF2是具有两个阶段的隐式龙格-库塔公式。
h)discrtet:
当Simulink检查到模型没有连续状态时使用它。
❑固定步长模式解法器有:
ode5,ode4,ode3,ode2,ode1和discrete。
a)ode5:
缺省值,是ode45的固定步长版本,适用于大多数连续或离散系统,不适用于刚性系统。
b)ode4:
四阶龙格-库塔法,具有一定的计算精度。
c)ode3:
固定步长的二/三阶龙格-库塔法。
d)ode2:
改进的欧拉法。
e)ode1:
欧拉法。
f)discrete:
是一个实现积分的固定步长解法器,它适合于离散无连续状态的系统。
3)步长参数:
对于变步长模式,用户可以设置最大的和推荐的初始步长参数,缺省情况下,步长自动地确定,它由值auto表示。
a)Maximumstepsize(最大步长参数):
它决定了解法器能够使用的最大时间步长,它的缺省值为“仿真时间/50”,即整个仿真过程中至少取50个取样点,但这样的取法对于仿真时间较长的系统则可能带来取样点过于稀疏,而使仿真结果失真。
一般建议对于仿真时间不超过15s的采用默认值即可,对于超过15s的每秒至少保证5个采样点,对于超过100s的,每秒至少保证3个采样点。
b)Initialstepsize(初始步长参数):
一般建议使用“auto”默认值即可。
4)仿真精度的定义(对于变步长模式)
a)Relativetolerance(相对误差):
它是指误差相对于状态的值,是一个百分比,缺省值为1e-3,表示状态的计算值要精确到0.1%。
b)Absolutetolerance(绝对误差):
表示误差值的门限,或者是说在状态值为零的情况下,可以接受的误差。
如果它被设成了auto,那么simulink为每一个状态设置初始绝对误差为1e-6。
5)Mode(固定步长模式选择)
a)Multitasking:
选择这种模式时,当simulink检测到模块间非法的采样速率转换,它会给出错误提示。
所谓的非法采样速率转换指两个工作在不同采样速率的模块之间的直接连接。
在实时多任务系统中,如果任务之间存在非法采样速率转换,那么就有可能出现一个模块的输出在另一个模块需要时却无法利用的情况。
通过检查这种转换,Multitasking将有助于用户建立一个符合现实的多任务系统的有效模型。
使用速率转换模块可以减少模型中的非法速率转换。
Simulink提供了两个这样的模块:
unitdelay模块和zero-orderhold模块。
对于从慢速率到快速率的非法转换,可以在慢输出端口和快输入端口插入一个单位延时unitdelay模块。
而对于快速率到慢速率的转换,则可以插入一个零阶采样保持器zero-orderhold。
b)Singletasking:
这种模式不检查模块间的速率转换,它在建立单任务系统模型时非常有用,在这种系统就不存在任务同步问题。
c)Auto:
这种模式,simulink会根据模型中模块的采样速率是否一致,自动决定切换到multitasking和singletasking。
6)输出选项
a)Refineoutput:
这个选项可以理解成精细输出,其意义是在仿真输出太稀松时,simulink会产生额外的精细输出,这一点就像插值处理一样。
用户可以在refinefactor设置仿真时间步间插入的输出点数。
产生更光滑的输出曲线,改变精细因子比减小仿真步长更有效。
精细输出只能在变步长模式中才能使用,并且在ode45效果最好。
b)Produceadditionaloutput:
它允许用户直接指定产生输出的时间点。
一旦选择了该项,则在它的右边出现一个outputtimes编辑框,在这里用户指定额外的仿真输出点,它既可以是一个时间向量,也可以是表达式。
与精细因子相比,这个选项会改变仿真的步长。
c)Producespecifiedoutputonly:
它的意思是让simulink只在指定的时间点上产生输出。
为此解法器要调整仿真步长以使之和指定的时间点重合。
这个选项在比较不同的仿真时可以确保它们在相同的时间输出。
2、WorkspaceI/O页
❑此页主要用来设置SIMULINK与MATLAB工作空间交换数值的有关选项。
1)Loadfromworkspace:
选中前面的复选框即可从MATLAB工作空间获取时间和输
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SIMULINK 仿真 基础