
MATLAB与simulink.ppt
44页SIMULINK仿真基础2021/8/62021/8/61 1SIMULINK简介►►SIMULINKSIMULINK是是MATLABMATLAB软件的扩展,它是实现动态系统建模和软件的扩展,它是实现动态系统建模和仿真的一个软件包,它与仿真的一个软件包,它与MATLABMATLAB语言的主要区别在于,其语言的主要区别在于,其与用户交互接口是基于与用户交互接口是基于WindowsWindows的模型化图形输入,其结果的模型化图形输入,其结果是使得用户可以把更多的精力投入到系统模型的构建,而非是使得用户可以把更多的精力投入到系统模型的构建,而非语言的编程上语言的编程上►►所谓模型化图形输入是指所谓模型化图形输入是指SIMULINKSIMULINK提供了一些按功能分类提供了一些按功能分类的基本的系统模块,用户只需要知道这些模块的输入输出及的基本的系统模块,用户只需要知道这些模块的输入输出及模块的功能,而不必考察模块内部是如何实现的,通过对这模块的功能,而不必考察模块内部是如何实现的,通过对这些基本模块的调用,再将它们连接起来就可以构成所需要的些基本模块的调用,再将它们连接起来就可以构成所需要的系统模型(以系统模型(以.mdl.mdl文件进行存取),进而进行仿真与分析。
文件进行存取),进而进行仿真与分析►►SIMULINKSIMULINK的最新版本是的最新版本是SIMULINK4.0SIMULINK4.0(包含在(包含在MATLAB6.0MATLAB6.0里)里),,MATLAB5.3MATLAB5.3里的版本为里的版本为3.03.0版,它们的变化不大版,它们的变化不大2021/8/62SIMULINK的启动►►在在MATLABMATLAB命令窗口中输入命令窗口中输入simulinksimulink 结果是在桌面上出现一个结果是在桌面上出现一个称为称为Simulink Library Simulink Library BrowserBrowser的窗口,在这个窗的窗口,在这个窗口中列出了按功能分类的各口中列出了按功能分类的各种模块的名称种模块的名称 也可以通过也可以通过MATLABMATLAB主窗口主窗口的快捷按钮来打开的快捷按钮来打开Simulink Simulink Library BrowserLibrary Browser窗口2021/8/63SIMULINK的启动►►在在MATLABMATLAB命令窗口中输入命令窗口中输入simulink3simulink3 结果是在桌面上出现一个用图标形式显示的结果是在桌面上出现一个用图标形式显示的Library Library :simulink3:simulink3的的SimulinkSimulink模块库窗口。
模块库窗口 两种模块库窗口界面只是不同的显示形式,用户可以根两种模块库窗口界面只是不同的显示形式,用户可以根据各人喜好进行选用,一般说来第二种窗口直观、形象,据各人喜好进行选用,一般说来第二种窗口直观、形象,易于初学者,但使用时会打开太多的子窗口易于初学者,但使用时会打开太多的子窗口2021/8/64SIMULINK的模块库介绍►►SIMILINKSIMILINK模块库按功能进行分为以下模块库按功能进行分为以下8 8类子库:类子库:ØØContinuousContinuous(连续模块)(连续模块)ØØDiscreteDiscrete(离散模块)(离散模块)ØØFunction&TablesFunction&Tables(函数和平台模块)(函数和平台模块)ØØMathMath(数学模块)(数学模块)ØØNonlinearNonlinear(非线性模块)(非线性模块)ØØSignals&SystemsSignals&Systems(信号和系统模块)(信号和系统模块)ØØSinksSinks(接收器模块)(接收器模块)ØØSourcesSources(输入源模块)(输入源模块)2021/8/65连续模块(Continuous)continuous.mdlØØIntegratorIntegrator:输入信号积分:输入信号积分ØØDerivativeDerivative:输入信号微分:输入信号微分ØØState-SpaceState-Space:线性状态空间系统模型:线性状态空间系统模型ØØTransfer-Transfer-FcnFcn:线性传递函数模型:线性传递函数模型ØØZero-PoleZero-Pole:以零极点表示的传递函数模型:以零极点表示的传递函数模型ØØMemoryMemory:存储上一时刻的状态值:存储上一时刻的状态值ØØTransport DelayTransport Delay:输入信号延时一个固定时间再输:输入信号延时一个固定时间再输出出ØØVariable Transport DelayVariable Transport Delay:输入信号延时一个可变:输入信号延时一个可变时间再输出时间再输出2021/8/66离散模块(Discrete) discrete.mdlØØDiscrete-time IntegratorDiscrete-time Integrator:离散时间积分器:离散时间积分器ØØDiscrete FilterDiscrete Filter::IIRIIR与与FIRFIR滤波器滤波器ØØDiscrete State-SpaceDiscrete State-Space:离散状态空间系统模型:离散状态空间系统模型ØØDiscrete Transfer-Discrete Transfer-FcnFcn:离散传递函数模型:离散传递函数模型ØØDiscrete Zero-PoleDiscrete Zero-Pole:以零极点表示的离散传递函数:以零极点表示的离散传递函数模型模型ØØFirst-Order HoldFirst-Order Hold:一阶采样和保持器:一阶采样和保持器ØØZero-Order HoldZero-Order Hold:零阶采样和保持器:零阶采样和保持器ØØUnit DelayUnit Delay:一个采样周期的延时:一个采样周期的延时2021/8/67函数和平台模块函数和平台模块(Function&Tables) function.mdl(Function&Tables) function.mdlØØFcnFcn:用自定义的函数(表达式)进行运算:用自定义的函数(表达式)进行运算ØØMATLAB MATLAB FcnFcn:利用:利用matlabmatlab的现有函数进行运算的现有函数进行运算ØØS-FunctionS-Function:调用自编的:调用自编的S S函数的程序进行运算函数的程序进行运算ØØLook-Up TableLook-Up Table:建立输入信号的查询表(线性峰值:建立输入信号的查询表(线性峰值匹配)匹配)ØØLook-Up Table(2-D)Look-Up Table(2-D):建立两个输入信号的查询表:建立两个输入信号的查询表(线性峰值匹配)(线性峰值匹配)2021/8/68数学模块( Math ) math.mdlØØSumSum:加减运算:加减运算ØØProductProduct:乘运算:乘运算ØØDot ProductDot Product:点乘运算:点乘运算ØØGainGain:比例运算:比例运算ØØMath FunctionMath Function:包括指数函数、对数函数、求平方、开根号:包括指数函数、对数函数、求平方、开根号等常用数学函数等常用数学函数ØØTrigonometric FunctionTrigonometric Function:三角函数,包括正弦、余弦、正切:三角函数,包括正弦、余弦、正切等等ØØMinMaxMinMax:最值运算:最值运算ØØAbsAbs:取绝对值:取绝对值ØØSignSign:符号函数:符号函数2021/8/69ØØLogical OperatorLogical Operator:逻辑运算:逻辑运算ØØRelational OperatorRelational Operator:关系运算:关系运算ØØComplex to Magnitude-AngleComplex to Magnitude-Angle:由复数输入转为幅值和相角:由复数输入转为幅值和相角输出输出ØØMagnitude-Angle to ComplexMagnitude-Angle to Complex:由幅值和相角输入合成复数:由幅值和相角输入合成复数输出输出ØØComplex to Real-Complex to Real-ImagImag:由复数输入转为实部和虚部输出:由复数输入转为实部和虚部输出ØØReal-Real-ImagImag to Complex to Complex:由实部和虚部输入合成复数输出:由实部和虚部输入合成复数输出2021/8/610非线性模块( Nonlinear ) nonlinear.mdlØØSaturationSaturation:饱和输出,让输出超过某一值时能够饱:饱和输出,让输出超过某一值时能够饱和。
和ØØRelayRelay:滞环比较器,限制输出值在某一范围内变化滞环比较器,限制输出值在某一范围内变化ØØSwitchSwitch:开关选择,当第二个输入端大于临界值时,:开关选择,当第二个输入端大于临界值时,输出由第一个输入端而来,否则输出由第三个输入输出由第一个输入端而来,否则输出由第三个输入端而来ØØManual SwitchManual Switch:手动选择开关:手动选择开关2021/8/611信号和系统模块(信号和系统模块( Signal&SystemsSignal&Systems )) sigsys.mdlsigsys.mdlØØIn1In1:输入端ØØOut1Out1:输出端ØØMuxMux:将多个单一输入转化为一个复合输出将多个单一输入转化为一个复合输出ØØDemuxDemux:将一个复合输入转化为多个单一输出将一个复合输入转化为多个单一输出ØØGroundGround:连接到没有连接到的输入端连接到没有连接到的输入端ØØTerminatorTerminator:连接到没有连接到的输出端连接到没有连接到的输出端ØØSubSystemSubSystem:建立新的封装(:建立新的封装(MaskMask)功能模块)功能模块2021/8/612接收器模块( Sinks ) sinks.mdlØØScopeScope:示波器。
示波器ØØXY GraphXY Graph:显示二维图形显示二维图形ØØTo WorkspaceTo Workspace:将输出写入:将输出写入MATLABMATLAB的工作空间的工作空间ØØTo To File(.matFile(.mat) ):将输出写入数据文件将输出写入数据文件2021/8/613输入源模块( Sources ) sources.mdlØØConstantConstant:常数信号常数信号ØØClockClock:时钟信号时钟信号ØØFrom WorkspaceFrom Workspace:来自:来自MATLABMATLAB的工作空间的工作空间ØØFrom From File(.matFile(.mat) ):来自数据文件来自数据文件ØØPulse GeneratorPulse Generator:脉冲发生器脉冲发生器ØØRepeating SequenceRepeating Sequence:重复信号重复信号ØØSignal GeneratorSignal Generator:信号发生器,可以产生正弦、方:信号发生器,可以产生正弦、方波、锯齿波及随意波波、锯齿波及随意波。
ØØSine WaveSine Wave:正弦波信号正弦波信号ØØStepStep:阶跃波信号阶跃波信号2021/8/614SIMULINK简单模型的建立►►简单模型的建立简单模型的建立ØØ((1 1)建立模型窗口)建立模型窗口ØØ((2 2)将功能模块由模块库窗口复制到模型窗口)将功能模块由模块库窗口复制到模型窗口ØØ((3 3)对模块进行连接,从而构成需要的系统模型)对模块进行连接,从而构成需要的系统模型►►模型的特点模型的特点ØØ在在SIMULINKSIMULINK里提供了许多如里提供了许多如ScopeScope的接收器模块,这使得用的接收器模块,这使得用SIMULNKSIMULNK进行仿真具有像做实验一般的图形化显示效果进行仿真具有像做实验一般的图形化显示效果ØØSIMULINKSIMULINK的模型具有层次性,通过底层子系统可以构建上层母系统的模型具有层次性,通过底层子系统可以构建上层母系统ØØSIMULINKSIMULINK提供了对子系统进行封装的功能,用户可以自定义子系统提供了对子系统进行封装的功能,用户可以自定义子系统的图标和设置参数对话框的图标和设置参数对话框2021/8/615SIMULINK功能模块的处理q模块库中的模块可以直接用鼠标进行拖曳(选中模块,按住鼠标左键不放)而放到模型窗口中进行处理。
q在模型窗口中,选中模块,则其4个角会出现黑色标记此时可以对模块进行以下的基本操作1)移动:选中模块,按住鼠标左键将其拖曳到所需的位置即可若要脱离线而移动,可按住shift键,再进行拖曳2)复制:选中模块,然后按住鼠标右键进行拖曳即可复制同样的一个功能模块3)删除:选中模块,按Delete键即可若要删除多个模块,可以同时按住Shift键,再用鼠标选中多个模块,按Delete键即可也可以用鼠标选取某区域,再按Delete键就可以把该区域中的所有模块和线等全部删除功能模块的基本操作,包括模块的移动、复制、删除、转向、改变大小、模块命名、颜色设定、参数设定、属性设定、模块输入输出信号等2021/8/6164)转向:为了能够顺序连接功能模块的输入和输出端,功能模块有时需要转向在菜单Format中选择Flip Block旋转180度,选择Rotate Block顺时针旋转90度或者直接按Ctrl+F键执行Flip Block,按Ctrl+R键执行Rotate Block5)改变大小:选中模块,对模块出现的4个黑色标记进行拖曳即可6)模块命名:先用鼠标在需要更改的名称上单击一下,然后直接更改即可。
名称在功能模块上的位置也可以变换180度,可以用Format菜单中的Flip Name来实现,也可以直接通过鼠标进行拖曳Hide Name可以隐藏模块名称7)颜色设定: Format菜单中的Foreground Color可以改变模块的前景颜色,Background Color可以改变模块的背景颜色;而模型窗口的颜色可以通过Screen Color来改变2021/8/6178)参数设定:用鼠标双击模块,就可以进入模块的参数设定窗口,从而对模块进行参数设定参数设定窗口包含了该模块的基本功能帮助,为获得更详尽的帮助,可以点击其上的help按钮通过对模块的参数设定,就可以获得需要的功能模块9)属性设定:选中模块,打开Edit菜单的Block Properties可以对模块进行属性设定包括Description属性、 Priority优先级属性、Tag属性、Open function属性、Attributes format string属性其中Open function属性是一个很有用的属性,通过它指定一个函数名,则当该模块被双击之后,Simulink就会调用该函数执行,这种函数在MATLAB中称为回调函数。
10)模块的输入输出信号:模块处理的信号包括标量信号和向量信号;标量信号是一种单一信号,而向量信号为一种复合信号,是多个信号的集合,它对应着系统中几条连线的合成缺省情况下,大多数模块的输出都为标量信号,对于输入信号,模块都具有一种“智能”的识别功能,能自动进行匹配某些模块通过对参数的设定,可以使模块输出向量信号2021/8/618SIMULINK线的处理q改变粗细:线所以有粗细是因为线引出的信号可以是标量信号或向量信号,当选中Format菜单下的Wide Vector Lines时,线的粗细会根据线所引出的信号是标量还是向量而改变,如果信号为标量则为细线,若为向量则为粗线选中Vector Line Widths则可以显示出向量引出线的宽度,即向量信号由多少个单一信号合成q设定标签:只要上双击鼠标,即可输入该线的说明标签也可以通过选中线,然后打开Edit菜单下的Signal Properties进行设定,其中signal name属性的作用是标明信号的名称,设置这个名称反映在模型上的直接效果就是与该信号有关的端口相连的所有直线附近都会出现写有信号名称的标签q线的折弯:按住Shift键,再用鼠标在要折弯的线处单击一下,就会出现圆圈,表示折点,利用折点就可以改变线的形状。
q线的分支:按住鼠标右键,在需要分支的地方拉出即可以或者按住Ctrl键,并在要建立分支的地方用鼠标拉出即可SIMULINK模型的构建是通过用线将各种功能模块进行连接而构成的用鼠标可以在功能模块的输入与输出端之间直接连线所画的线可以改变粗细、设定标签,也可以把线折弯、分支2021/8/619A SIMULINK Example: The Rossler Attractor►►Goal is to simulate the evolution of the following Goal is to simulate the evolution of the following system of differential equations...system of differential equations...►►Chaotic behavior is known to occur for constantsChaotic behavior is known to occur for constants►►Other values ofOther values of c c to try include to try include 2.4, 3.5, 4.0, 4.3, 2.4, 3.5, 4.0, 4.3, 5.05.02021/8/620SIMULINK Diagram for Rossler AttractorState Variables1/sIntegrator1---x2-x31/sIntegrator2++x1+ax2*a x2-+x1-cMuxMux0.2a5.7c1/sIntegrator3++b+x3(x1-c)*x3(x1-c)0.2bxtTimeScopeClockx1x2x32021/8/621Post Analysis of Attractor►►UsingUsing comet3(x(:,1),x(:,2),x(:,3)) comet3(x(:,1),x(:,2),x(:,3)) after 100 after 100 seconds of simulation, automatic step size using Adams seconds of simulation, automatic step size using Adams method andmethod and x0=[1 1 1]’ x0=[1 1 1]’-1001020-20-1001005101520252021/8/622典型PID控制系统R(s)Y(t)2021/8/6232021/8/624SIMULINK自定义功能模块►►一种方法是采用Signal&Systems 模块库中的Subsystem功能模块,利用其编辑区设计组合新的功能模块;1.将将Signal&SystemsSignal&Systems 模块库中的模块库中的SubsystemSubsystem功能功能模块复制到打开的模型窗口中模块复制到打开的模型窗口中。
2.双击双击SubsystemSubsystem功能模块,进入自定义功能模功能模块,进入自定义功能模块窗口,从而可以利用已有的基本功能模块设块窗口,从而可以利用已有的基本功能模块设计出新的功能模块计出新的功能模块2021/8/625►►另一种方法是将现有的多个功能模块组合起来,形成新的功能模块对于很大的SIMULINK模型,通过自定义功能模块可以简化图形,减少功能模块的个数,有利于模型的分层构建1.在模型窗口中建立所定义功能模块的子模块在模型窗口中建立所定义功能模块的子模块2.用鼠标将这些需要组合的功能模块框住,然后用鼠标将这些需要组合的功能模块框住,然后选择选择EditEdit菜单下的菜单下的Create SubsystemCreate Subsystem即可2021/8/626自定义功能模块的封装►►Mask SubsystemMask Subsystem1.1.IconIcon:设定功能模块的:设定功能模块的外观2.2.InitializationInitialization:设定输:设定输入数据窗口(入数据窗口(Prompt Prompt ListList)3.3.DocumentationDocumentation:设计:设计该功能模块的文字说明。
该功能模块的文字说明2021/8/627n nIconIcon标签页标签页►►此页最重要的部分是此页最重要的部分是Drawing CommandsDrawing Commands,在该区域内可以,在该区域内可以用用dispdisp指令设定功能模块的文字名称,用指令设定功能模块的文字名称,用plotplot指令画线,用指令画线,用dpolydpoly指令画传递函数指令画传递函数►►注意,尽管这些命令在名字上和以前讲的注意,尽管这些命令在名字上和以前讲的MATLABMATLAB函数相同,函数相同,但它们在功能上却不完全相同,因此不能随便套用以前所讲但它们在功能上却不完全相同,因此不能随便套用以前所讲的格式ØØdisp(‘textdisp(‘text’) ’)可以在功能模块上显示设定的文字内容可以在功能模块上显示设定的文字内容disp(‘text1disp(‘text1\n\ntext2’)text2’)分行显示文字分行显示文字text1text1和和text2text2ØØplot([x1 x2 … xn],[y1 y2 … plot([x1 x2 … xn],[y1 y2 … ynyn])])指令会在功能模块上画出由指令会在功能模块上画出由[x1 y1][x1 y1]经经[x2 y2][x2 y2]经经[x3 y3] … [x3 y3] … 直到直到[ [xn,ynxn,yn] ]为止的直线。
功能模块的左下角会为止的直线功能模块的左下角会根据目前的坐标刻度被正规化为根据目前的坐标刻度被正规化为[0,0][0,0],右上角则会依据目前的坐标,右上角则会依据目前的坐标刻度被正规化为刻度被正规化为[1,1][1,1]ØØdpoly(num,dendpoly(num,den) ):按:按s s次数的降幂排序,在功能模块上显示连续的传次数的降幂排序,在功能模块上显示连续的传递函数ØØdpoly(num,den,’zdpoly(num,den,’z’) ’):按:按z z次数的降幂排序,在功能模块上显示离散的次数的降幂排序,在功能模块上显示离散的传递函数传递函数2021/8/628►►用户还可以设置一些参数来控制图标的属性,这些用户还可以设置一些参数来控制图标的属性,这些属性在属性在IconIcon页右下端的下拉式列表中进行选择页右下端的下拉式列表中进行选择ØØIcon frameIcon frame::Visible Visible 显示外框线;显示外框线;InvisibleInvisible:隐藏外框:隐藏外框线ØØIcon TransparencyIcon Transparency::Opaque Opaque 隐藏输入输出的标签;隐藏输入输出的标签;TransparentTransparent:显示输入输出的标签。
显示输入输出的标签ØØIcon RotationIcon Rotation:旋转模块旋转模块ØØDrawing coordinateDrawing coordinate:画图时的坐标系画图时的坐标系2021/8/629nInitialization标签页►►此页主要用来设计输入提示(此页主要用来设计输入提示(promptprompt)以及对应的变量名称)以及对应的变量名称((variablevariable)在promptprompt栏上输入栏上输入变量的含义变量的含义,其内容会显,其内容会显示在输入提示中而示在输入提示中而variablevariable是仿真要用到的变量,该变量是仿真要用到的变量,该变量的值一直存于的值一直存于mask workspacemask workspace中,因此可以与其他程序相互中,因此可以与其他程序相互传递►►如果配合在如果配合在initialization commandsinitialization commands内编辑程序,可以发挥功内编辑程序,可以发挥功能模块的功能来执行特定的操作能模块的功能来执行特定的操作ØØ在在promptprompt编辑框中输入文字,这些文字就会出现在编辑框中输入文字,这些文字就会出现在promptprompt列表中;在列表中;在variablevariable列表中输入变量名称,则列表中输入变量名称,则promptprompt中的文字对应该变量的说明。
如果中的文字对应该变量的说明如果要增加新的项目,可以点击边上的要增加新的项目,可以点击边上的AddAdd键UpUp和和DownDown按钮用于执行项目间按钮用于执行项目间的位置调整的位置调整ØØControl typeControl type列表给用户提供选择设计的编辑区,选择列表给用户提供选择设计的编辑区,选择EditEdit会出现供输入的空会出现供输入的空白区域,所输入的值代表对应的白区域,所输入的值代表对应的variablevariable;;PopupPopup则为用户提供可选择的列表则为用户提供可选择的列表框,所选的值代表框,所选的值代表variablevariable,此时在下面会出现,此时在下面会出现Popup stringsPopup strings输入框,用来输入框,用来设计选择的内容,各值之间用逻辑或符号设计选择的内容,各值之间用逻辑或符号“ “|”|”隔开;如选择隔开;如选择CheckboxCheckbox则用则用于于onon与与offoff的选择设定的选择设定2021/8/630►►AssignmentAssignment属性用于配合属性用于配合Control typeControl type的不同选择的不同选择来提供不同的变量值,变量值有来提供不同的变量值,变量值有EvaluateEvaluate和和LiteralLiteral两种,其含义如下:两种,其含义如下:AssignmentAssignmentControl typeControl typeEvaluateEvaluateLiteralLiteralEditEdit输入的文字是程序执行输入的文字是程序执行时所用的变量值;时所用的变量值;输入内容作字符串处理输入内容作字符串处理PopupPopup为选择的序号,选第一为选择的序号,选第一项输出值为项输出值为1 1,往下类,往下类推;推;选择内容作字符串处理选择内容作字符串处理 CheckboxCheckbox输出为输出为1 1或或0 0;; 输出为输出为‘ ‘on’on’或或‘ ‘off’off’的字符串的字符串2021/8/631nDocumentationDocumentation标签页标签页►►此页主要用来针对完成的功能模块来编写相应的说此页主要用来针对完成的功能模块来编写相应的说明文字和明文字和HelpHelp。
1.1.在在Block descriptionBlock description中输入的文字,会出现在参数窗口的中输入的文字,会出现在参数窗口的说明部分说明部分2.2.在在Block helpBlock help中输入的文字则会显示在单击参数窗口中的中输入的文字则会显示在单击参数窗口中的helphelp按钮后浏览器所加载的按钮后浏览器所加载的HTMLHTML文件中3.3.Mask typeMask type:在此处输入的文字作为封装模块的标注性说:在此处输入的文字作为封装模块的标注性说明,在模型窗口下,将鼠标指向模块,则会显示该文字明,在模型窗口下,将鼠标指向模块,则会显示该文字当然必须先在当然必须先在ViewView菜单中选择菜单中选择Block Data Tips——Show Block Data Tips——Show Block Data TipsBlock Data Tips2021/8/632SIMULINK仿真的运行一、设置仿真参数和选择解法器q设置仿真参数和选择解法器,选择Simulation菜单下的Parameters命令,就会弹出一个仿真参数对话框,它主要用三个页面来管理仿真的参数。
I.Solver页,它允许用户设置仿真的开始和结束时间,选择解法器,说明解法器参数及选择一些输出选项II.Workspace I/O页,作用是管理模型从MATLAB工作空间的输入和对它的输出III.Diagnostics页,允许用户选择Simulink在仿真中显示的警告信息的等级构建好一个系统的模型之后,接下来的事情就是运行模型,得出仿真结果运行一个仿真的完整过程分成三个步骤:设置仿真参数,启动仿真和仿真结果分析2021/8/6331、Solver页q此页可以进行的设置有:选择仿真开始和结束的时间;选择解法器,并设定它的参数;选择输出项1)仿真时间:注意这里的时间概念与真实的时间并不一样,只是计算机仿真中对时间的一种表示,比如10秒的仿真时间,如果采样步长定为0.1,则需要执行100步,若把步长减小,则采样点数增加,那么实际的执行时间就会增加一般仿真开始时间设为0,而结束时间视不同的因素而选择总的说来,执行一次仿真要耗费的时间依赖于很多因素,包括模型的复杂程度、解法器及其步长的选择、计算机时钟的速度等等2)仿真步长模式:用户在Type后面的第一个下拉选项框中指定仿真的步长选取方式,可供选择的有Variable-step(变步长)和Fixed-step(固定步长)方式。
变步长模式可以在仿真的过程中改变步长,提供误差控制和过零检测固定步长模式在仿真过程中提供固定的步长,不提供误差控制和过零检测用户还可以在第二个下拉选项框中选择对应模式下仿真所采用的算法2021/8/634q变步长模式解法器有:ode45,ode23,ode113,ode15s,ode23s,ode23t,ode23tb和discretea)ode45:缺省值,四/五阶龙格-库塔法,适用于大多数连续或离散系统,但不适用于刚性(stiff)系统它是单步解法器,也就是,在计算y(tn)时,它仅需要最近处理时刻的结果y(tn-1)一般来说,面对一个仿真问题最好是首先试试ode45b)ode23:二/三阶龙格-库塔法,它在误差限要求不高和求解的问题不太难的情况下,可能会比ode45更有效也是一个单步解法器c)ode113:是一种阶数可变的解法器,它在误差容许要求严格的情况下通常比ode45有效ode113是一种多步解法器,也就是在计算当前时刻输出时,它需要以前多个时刻的解d)ode15s:是一种基于数字微分公式的解法器(NDFs)也是一种多步解法器适用于刚性系统,当用户估计要解决的问题是比较困难的,或者不能使用ode45,或者即使使用效果也不好,就可以用ode15s。
2021/8/635e)ode23s:它是一种单步解法器,专门应用于刚性系统,在弱误差允许下的效果好于ode15s它能解决某些ode15s所不能有效解决的stiff问题f)ode23t:是梯形规则的一种自由插值实现这种解法器适用于求解适度stiff的问题而用户又需要一个无数字振荡的解法器的情况g)ode23tb:是TR-BDF2的一种实现, TR-BDF2 是具有两个阶段的隐式龙格-库塔公式h)discrtet:当Simulink检查到模型没有连续状态时使用它2021/8/636q固定步长模式解法器有:ode5,ode4,ode3,ode2,ode1和discretea)ode5:缺省值,是ode45的固定步长版本,适用于大多数连续或离散系统,不适用于刚性系统b)ode4:四阶龙格-库塔法,具有一定的计算精度c)ode3:固定步长的二/三阶龙格-库塔法d)ode2:改进的欧拉法e)ode1:欧拉法f)discrete:是一个实现积分的固定步长解法器,它适合于离散无连续状态的系统2021/8/6373)步长参数:对于变步长模式,用户可以设置最大的和推荐的初始步长参数,缺省情况下,步长自动地确定,它由值auto表示。
a)Maximum step size(最大步长参数):它决定了解法器能够使用的最大时间步长,它的缺省值为“仿真时间/50”,即整个仿真过程中至少取50个取样点,但这样的取法对于仿真时间较长的系统则可能带来取样点过于稀疏,而使仿真结果失真一般建议对于仿真时间不超过15s的采用默认值即可,对于超过15s的每秒至少保证5个采样点,对于超过100s的,每秒至少保证3个采样点b)Initial step size(初始步长参数):一般建议使用“auto”默认值即可4)仿真精度的定义(对于变步长模式)a)Relative tolerance(相对误差):它是指误差相对于状态的值,是一个百分比,缺省值为1e-3,表示状态的计算值要精确到0.1%b)Absolute tolerance(绝对误差):表示误差值的门限,或者是说在状态值为零的情况下,可以接受的误差如果它被设成了auto,那么simulink为每一个状态设置初始绝对误差为1e-62021/8/6385)Mode(固定步长模式选择)a)Multitasking:选择这种模式时,当simulink检测到模块间非法的采样速率转换,它会给出错误提示。
所谓的非法采样速率转换指两个工作在不同采样速率的模块之间的直接连接在实时多任务系统中,如果任务之间存在非法采样速率转换,那么就有可能出现一个模块的输出在另一个模块需要时却无法利用的情况通过检查这种转换,Multitasking将有助于用户建立一个符合现实的多任务系统的有效模型b) 使用速率转换模块可以减少模型中的非法速率转换Simulink提供了两个这样的模块:unit delay模块和zero-order hold模块对于从慢速率到快速率的非法转换,可以在慢输出端口和快输入端口插入一个单位延时unit delay模块而对于快速率到慢速率的转换,则可以插入一个零阶采样保持器zero-order holdb)Singletasking:这种模式不检查模块间的速率转换,它在建立单任务系统模型时非常有用,在这种系统就不存在任务同步问题c)Auto:这种模式,simulink会根据模型中模块的采样速率是否一致,自动决定切换到multitasking和singletasking2021/8/6396)输出选项a)Refine output:这个选项可以理解成精细输出,其意义是在仿真输出太稀松时,simulink会产生额外的精细输出,这一点就像插值处理一样。
用户可以在refine factor设置仿真时间步间插入的输出点数b) 产生更光滑的输出曲线,改变精细因子比减小仿真步长更有效精细输出只能在变步长模式中才能使用,并且在ode45效果最好b)Produce additional output:它允许用户直接指定产生输出的时间点一旦选择了该项,则在它的右边出现一个output times编辑框,在这里用户指定额外的仿真输出点,它既可以是一个时间向量,也可以是表达式与精细因子相比,这个选项会改变仿真的步长c)Produce specified output only:它的意思是让simulink只在指定的时间点上产生输出为此解法器要调整仿真步长以使之和指定的时间点重合这个选项在比较不同的仿真时可以确保它们在相同的时间输出2021/8/6402、Workspace I/O页q此页主要用来设置SIMULINK与MATLAB工作空间交换数值的有关选项1)Load from workspace:选中前面的复选框即可从MATLAB工作空间获取时间和输入变量,一般时间变量定义为t,输入变量定义为u Initial state用来定义从MATLAB工作空间获得的状态初始值的变量名。
2)Save to workspace:用来设置存往MATLAB工作空间的变量类型和变量名,选中变量类型前的复选框使相应的变量有效一般存往工作空间的变量包括输出时间向量(Time)、状态向量(States)和输出变量(Output) Final state用来定义将系统稳态值存往工作空间所使用的变量名3)Save option:用来设置存往工作空间的有关选项Limit rows to last用来设定SIMULINK仿真结果最终可存往MATLAB工作空间的变量的规模,对于向量而言即其维数,对于矩阵而言即其秩;Decimation设定了一个亚采样因子,它的缺省值为1,也就是对每一个仿真时间点产生值都保存,而若为2,则是每隔一个仿真时刻才保存一个值Format用来说明返回数据的格式,包括矩阵matrix、结构struct及带时间的结构struct with time2021/8/6413、Diagnostics页q此页分成两个部分:仿真选项和配置选项1.配置选项下的列表框主要列举了一些常见的事件类型,以及当SIMULINK检查到这些事件时给予的处理2.仿真选项options主要包括是否进行一致性检验、是否禁用过零检测、是否禁止复用缓存、是否进行不同版本的SIMULINK的检验等几项。
2021/8/642二、启动仿真q设置仿真参数和选择解法器之后,就可以启动仿真而运行q选择Simulink菜单下的start选项来启动仿真,如果模型中有些参数没有定义,则会出现错误信息提示框如果一切设置无误,则开始仿真运行,结束时系统会发出一鸣叫声q除了直接在SIMULINK环境下启动仿真外,还可以在MATLAB命令窗口中通过函数进行,格式如下: [t,x,y]=sim(‘模型文件名’,[to tf],simset(‘参数1’,参数值1,‘参数2’,参数值2, …))q其中to为仿真起始时间,tf为仿真终止时间[t,x,y]为返回值,t为返回的时间向量值,x为返回的状态值,y为返回的输出向量值simset定义了仿真参数,包括以下一些主要参数:AbsTol:默认值为1e-6设定绝对误差范围Decimation:默认值为1,决定隔多少个点返回状态和输出值Solver:解法器的选择2021/8/643MaxRows:默认值为0,表示不限制若为大于零的值,则表示限制输 出和状态的规模,使其最大行数等于该数值InitialState:一个向量值,用于设定初始状态FixedStep:用一个正数表示步阶的大小,仅用于固定步长模式。
MaxStep:默认值为auto用于变步长模式,表示最大的步阶大小如果知道模型文件名称,可以用以下命令得到该模型的仿真参数:simget(‘模型文件名’)2021/8/644。
