《Simulink仿真软件.ppt》由会员分享,可在线阅读,更多相关《Simulink仿真软件.ppt(69页珍藏版)》请在三一办公上搜索。
1、MATLAB SDU GMLI,1,MATLAB Simulink仿真软件Simulink操作基础系统仿真模型系统的仿真使用命令操作对系统进行仿真子系统及其封装技术S函数的设计与应用,MATLAB SDU GMLI,2,I Simulink操作基础,Simulink简介 Simulink是MATLAB的重要组成部分,提供建立系统模型、选择仿真参数和数值算法、启动仿真程序对该系统进行仿真、设置不同的输出方式来观察仿真结果等功能。,MATLAB SDU GMLI,3,Simulink的启动与退出,1Simulink的启动在MATLAB的命令窗口输入simulink或单击MATLAB主窗口工具栏上的
2、Simulink命令按钮即可启动Simulink。Simulink启动后会显示Simulink模块库浏览器(Simulink Library Browser)窗口。,MATLAB SDU GMLI,4,在MATLAB主窗口File菜单中选择New菜单项下的Model命令,在出现Simulink模块库浏览器的同时,还会出现一个名字为untitled的模型编辑窗口。在启动Simulink模块库浏览器后再单击其工具栏中的Create a new model命令按钮,也会弹出模型编辑窗口。利用模型编辑窗口,可以通过鼠标的拖放操作创建一个模型。,MATLAB SDU GMLI,5,模型创建完成后,从模型
3、编辑窗口的File菜单项中选择Save或Save As命令,可以将模型以模型文件的格式(扩展名为.mdl)存入磁盘。如果要对一个已经存在的模型文件进行编辑修改,需要打开该模型文件,其方法是,在MATLAB命令窗口直接输入模型文件名(不要加扩展名.mdl)。在模块库浏览器窗口或模型编辑窗口的File菜单中选择Open命令,然后选择或输入欲编辑模型的名字,也能打开已经存在的模型文件。另外,单击模块库浏览器窗口工具栏上的Open a model命令按钮或模型编辑窗口工具栏上的Open model命令按钮,也能打开已经存在的模型文件。,MATLAB SDU GMLI,6,2Simulink的退出为了退
4、出Simulink,只要关闭所有模型编辑窗口和Simulink模块库浏览器窗口即可。,MATLAB SDU GMLI,7,II 系统仿真模型,Simulink仿真模型概述 Simulink仿真模型(Model)在视觉上表现为直观的方框图,在文件上则是扩展名为.mdl的ASCII代码,在数学上体现了一组微分方程或者是差分方程,在行为上模拟了物理器件构成的实际系统的动态特性。模块(Block)是构成系统仿真模型的基本单元。用适当的方式把各种模块连接在一起就能够建立动态系统的仿真模型。从宏观角度来看,Simulink模型通常包含了3类模块:信源(Source)、系统(System)及信宿(Sink)
5、。,MATLAB SDU GMLI,8,Simulink的模块库提供了大量模块。单击模块库浏览器中Simulink前面的“+”号,将看到Simulink模块库中包含的子模块库,单击所需要的子模块库,在右边的窗口中将看到相应的基本模块,选择所需基本模块,可用鼠标将其拖到模型编辑窗口。同样,在模块库浏览器左侧的Simulink栏上单击鼠标右键,在弹出的快捷菜单中单击Open the Simulink Libray 命令,将打开Simulink基本模块库窗口。单击其中的子模块库图标,打开子模块库,找到仿真所需要的基本模块。,MATLAB SDU GMLI,9,模块的编辑,1添加模块 在library
6、 Browser窗口直接点击需要的模块,拖动到model文件中。2选取模块 只要用鼠标在模块上单击,模块饺上出现黑色小方块。若选择多个模块,则鼠标大框选中即可。3复制与删除模块(1)在不同窗口,用鼠标左键点住要复制的模块,按住左键移动到相应窗口,释放。(2)同一窗口,用鼠标左键点住要复制的模块,按住左键,同时按住ctrl键,到适当位置松开鼠标。(3)删除模块,选中模块,选择cut或clear命令。,MATLAB SDU GMLI,10,4模块外形的调整(1)改变大小:选定模块,用鼠标左键点住其周围的4个黑方块中的任何一个并拖动。(2)调整方向。选定模块,选择format菜单中的 Rotate
7、Block命令使模块按顺时针方向旋转90度,Flip Block命令使模块旋转180度。(主要是接口变化)(3)给模块加阴影。选定模块,选择Format菜单中的show Drop Shadow命令使模块产生阴影效果。,MATLAB SDU GMLI,11,5模块名的处理模块名的显示:选定模块,Format菜单中的Hide Name命令,模块名子被隐藏,同时Hide name变为Show name。修改模块名:鼠标单击模块名的区域。改变模块名位置:当模块接口在上下侧,模块名只能在左右;接口在左右侧,名只能在上下侧,Format中的Flip name。,MATLAB SDU GMLI,12,1连接
8、两个模块2模块间连线的调整3连线的分支4标注连线5删除连线,MATLAB SDU GMLI,13,模块的连接,1连接两个模块 移动鼠标到输出端,鼠标箭头会变成十字光标,点住鼠标左键,移动鼠标到另一个模块的输入点,当十字光标出现重影时,释放鼠标完成连接。如果两模块不在同一水平线上,连线是折线。,2模块间连线的调整 把鼠标移动到需要移动的线段位置,按住鼠标左键,移动鼠标到达目标位置,释放鼠标。,MATLAB SDU GMLI,14,3连线之间插入模块 把该模块用鼠标拖到连线上,然后释放鼠标即可。4连线的分支。连好一条线后,把鼠标移动到分支点的位置,先按下ctrl键,然后按住鼠标拖动到目标模块的输入
9、端,释放鼠标和Ctrl键。5删除连线。右键cut命令。6连线信息(1)显示数据类型。Format中的Port data types。显示前一个模块的数据类型。(2)信号标记。双击要做标记的线段,出现一个小文本编辑器,在里面输入标记的文本。,MATLAB SDU GMLI,15,模块的参数和属性设置,模块的参数设置 Simulink中几乎所有模块的参数都允许用户进行设置,只要*双击要设置的模块或*在模块上按鼠标右键并在弹出的快捷菜单中选择相应模块的参数设置命令就会弹出模块参数对话框。该对话框分为两部分,上面一部分是模块功能说明,下面一部分用来进行模块参数设置。*同样,先选择要设置的模块,再在模型
10、编辑窗口Edit菜单下选择相应模块的参数设置命令也可以打开模块参数对话框。,MATLAB SDU GMLI,16,2模块的属性设置*选定要设置属性的模块,然后在模块上按鼠标右键并在弹出的快捷菜单中选择Block properties,*或先选择要设置的模块,再在模型编辑窗口的Edit菜单下选择Block properties命令,将打开模块属性对话框。该对话框包括General、Block annotation和Callbacks 3个可以相互切换的选项卡。其中选项卡中可以设置3个基本属性:Description(说明)、Priority(优先级)、Tag(标记)。,MATLAB SDU GM
11、LI,17,SIMULINK的模块库介绍,SIMILINK模块库按功能进行分为以下8类子库:Continuous(连续模块)Discrete(离散模块)Function&Tables(函数和平台模块)Math(数学模块)Nonlinear(非线性模块)Signals&Systems(信号和系统模块)Sinks(接收器模块)Sources(输入源模块),MATLAB SDU GMLI,18,连续模块(Continuous)continuous.mdl,Integrator:输入信号积分Derivative:输入信号微分State-Space:线性状态空间系统模型Transfer-Fcn:线性传递
12、函数模型Zero-Pole:以零极点表示的传递函数模型Memory:存储上一时刻的状态值Transport Delay:输入信号延时一个固定时间再输出Variable Transport Delay:输入信号延时一个可变时间再输出,MATLAB SDU GMLI,19,离散模块(Discrete)discrete.mdl,Discrete-time Integrator:离散时间积分器Discrete Filter:IIR与FIR滤波器Discrete State-Space:离散状态空间系统模型Discrete Transfer-Fcn:离散传递函数模型Discrete Zero-Pole:
13、以零极点表示的离散传递函数模型First-Order Hold:一阶采样和保持器Zero-Order Hold:零阶采样和保持器Unit Delay:一个采样周期的延时,MATLAB SDU GMLI,20,函数和平台模块(Function&Tables)function.mdl,Fcn:用自定义的函数(表达式)进行运算MATLAB Fcn:利用matlab的现有函数进行运算S-Function:调用自编的S函数的程序进行运算Look-Up Table:建立输入信号的查询表(线性峰值匹配)Look-Up Table(2-D):建立两个输入信号的查询表(线性峰值匹配),MATLAB SDU GM
14、LI,21,数学模块(Math)math.mdl,Sum:加减运算Product:乘运算Dot Product:点乘运算Gain:比例运算Math Function:包括指数函数、对数函数、求平方、开根号等常用数学函数Trigonometric Function:三角函数,包括正弦、余弦、正切等MinMax:最值运算Abs:取绝对值Sign:符号函数,MATLAB SDU GMLI,22,Logical Operator:逻辑运算Relational Operator:关系运算Complex to Magnitude-Angle:由复数输入转为幅值和相角输出Magnitude-Angle to
15、 Complex:由幅值和相角输入合成复数输出Complex to Real-Imag:由复数输入转为实部和虚部输出Real-Imag to Complex:由实部和虚部输入合成复数输出,MATLAB SDU GMLI,23,非线性模块(Nonlinear)nonlinear.mdl,Saturation:饱和输出,让输出超过某一值时能够饱和。Relay:滞环比较器,限制输出值在某一范围内变化。Switch:开关选择,当第二个输入端大于临界值时,输出由第一个输入端而来,否则输出由第三个输入端而来。Manual Switch:手动选择开关,MATLAB SDU GMLI,24,信号和系统模块(S
16、ignal&Systems)sigsys.mdl,In1:输入端。Out1:输出端。Mux:将多个单一输入转化为一个复合输出。Demux:将一个复合输入转化为多个单一输出。Ground:连接到没有连接到的输入端。Terminator:连接到没有连接到的输出端。SubSystem:建立新的封装(Mask)功能模块,MATLAB SDU GMLI,25,接收器模块(Sinks)sinks.mdl,Scope:示波器。XY Graph:显示二维图形。To Workspace:将输出写入MATLAB的工作空间。To File(.mat):将输出写入数据文件。,MATLAB SDU GMLI,26,输入
17、源模块(Sources)sources.mdl,Constant:常数信号。Clock:时钟信号。From Workspace:来自MATLAB的工作空间。From File(.mat):来自数据文件。Pulse Generator:脉冲发生器。Repeating Sequence:重复信号。Signal Generator:信号发生器,可以产生正弦、方波、锯齿波及随意波。Sine Wave:正弦波信号。Step:阶跃波信号。,MATLAB SDU GMLI,27,SIMULINK简单模型的建立,简单模型的建立(1)建立模型窗口(2)将功能模块由模块库窗口复制到模型窗口(3)对模块进行连接,从
18、而构成需要的系统模型模型的特点在SIMULINK里提供了许多如Scope的接收器模块,这使得用SIMULNK进行仿真具有像做实验一般的图形化显示效果。SIMULINK的模型具有层次性,通过底层子系统可以构建上层母系统。SIMULINK提供了对子系统进行封装的功能,用户可以自定义子系统的图标和设置参数对话框。,MATLAB SDU GMLI,28,示例1 对满足数学规律的过程进行仿真,结果用示波器显示,仿真时间为10个单位,MATLAB SDU GMLI,29,示例2:设一定的温度情况下,一病毒得出生率与当前的病毒总数成正比,死亡率与当期的病毒总数平方成正比。设初始时病毒总数为1000,研究病毒
19、总数及总数的变化率随时间的变换规律(设两个比例系数分别为1和0.5),MATLAB SDU GMLI,30,步骤1 数学模型 设时刻t的病毒总数为x步骤2 确定模块为 积分模块,2增益模块,求和模块,乘法模块以及示波器步骤3 模块调整和链接步骤4 模块参数设置和仿真运行分析,MATLAB SDU GMLI,31,例1 有系统的微分方程,试建立系统仿真模型。操作过程如下:(1)在MATLAB主菜单中,选择File菜单中New菜单项的Model命令,打开一个模型编辑窗口。(2)将所需模块添加到模型中。(3)设置模块参数并连接各个模块组成仿真模型。设置模块参数后,用连线将各个模块连接起来组成系统仿真
20、模型。模型建好后,从模型编辑窗口的File菜单中选择Save或Save as命令将它存盘。,MATLAB SDU GMLI,32,III 系统的仿真设置仿真参数 打开系统仿真模型,从模型编辑窗口的Simulation菜单中选择Simulation parameters命令,打开一个仿真参数对话框,在其中可以设置仿真参数。仿真参数对话框包含多个选项页(版本不同,选项也不同),基本选项如下:(1)Solver:用于设置仿真起始和停止时间,选择微分方程求解算法并为其规定参数,以及选择某些输出选项。(2)Workspace I/O:用于管理对MATLAB工作空间的输入和输出。(3)Diagnostic
21、s:用于设置在仿真过程中出现各类错误时发出警告的等级。(4)Real-time Workshop:用于设置若干实时工具中的参数。如果没有安装实时工具箱,则将不出现该选项。,MATLAB SDU GMLI,33,1、Solver页,此页可以进行的设置有:选择仿真开始和结束的时间;选择解法器,并设定它的参数;选择输出项。仿真时间:注意这里的时间概念与真实的时间并不一样,只是计算机仿真中对时间的一种表示,比如10秒的仿真时间,如果采样步长定为0.1,则需要执行100步,若把步长减小,则采样点数增加,那么实际的执行时间就会增加。一般仿真开始时间设为0,而结束时间视不同的因素而选择。总的说来,执行一次仿
22、真要耗费的时间依赖于很多因素,包括模型的复杂程度、解法器及其步长的选择、计算机时钟的速度等等。仿真步长模式:用户在Type后面的第一个下拉选项框中指定仿真的步长选取方式,可供选择的有Variable-step(变步长)和Fixed-step(固定步长)方式。变步长模式可以在仿真的过程中改变步长,提供误差控制和过零检测。固定步长模式在仿真过程中提供固定的步长,不提供误差控制和过零检测。用户还可以在第二个下拉选项框中选择对应模式下仿真所采用的算法。,MATLAB SDU GMLI,34,变步长模式解法器有:ode45,ode23,ode113,ode15s,ode23s,ode23t,ode23t
23、b和discrete。ode45:缺省值,四/五阶龙格库塔法,适用于大多数连续或离散系统,但不适用于刚性(stiff)系统。它是单步解法器,也就是,在计算y(tn)时,它仅需要最近处理时刻的结果y(tn-1)。一般来说,面对一个仿真问题最好是首先试试ode45。ode23:二/三阶龙格库塔法,它在误差限要求不高和求解的问题不太难的情况下,可能会比ode45更有效。也是一个单步解法器。ode113:是一种阶数可变的解法器,它在误差容许要求严格的情况下通常比ode45有效。ode113是一种多步解法器,也就是在计算当前时刻输出时,它需要以前多个时刻的解。ode15s:是一种基于数字微分公式的解法器
24、(NDFs)。也是一种多步解法器。适用于刚性系统,当用户估计要解决的问题是比较困难的,或者不能使用ode45,或者即使使用效果也不好,就可以用ode15s。,MATLAB SDU GMLI,35,ode23s:它是一种单步解法器,专门应用于刚性系统,在弱误差允许下的效果好于ode15s。它能解决某些ode15s所不能有效解决的stiff问题。ode23t:是梯形规则的一种自由插值实现。这种解法器适用于求解适度stiff的问题而用户又需要一个无数字振荡的解法器的情况。ode23tb:是TR-BDF2的一种实现,TR-BDF2 是具有两个阶段的隐式龙格库塔公式。discrtet:当Simulink
25、检查到模型没有连续状态时使用它。,MATLAB SDU GMLI,36,固定步长模式解法器有:ode5,ode4,ode3,ode2,ode1和discrete。ode5:缺省值,是ode45的固定步长版本,适用于大多数连续或离散系统,不适用于刚性系统。ode4:四阶龙格库塔法,具有一定的计算精度。ode3:固定步长的二/三阶龙格库塔法。ode2:改进的欧拉法。ode1:欧拉法。discrete:是一个实现积分的固定步长解法器,它适合于离散无连续状态的系统。,MATLAB SDU GMLI,37,步长参数:对于变步长模式,用户可以设置最大的和推荐的初始步长参数,缺省情况下,步长自动地确定,它由
26、值auto表示。Maximum step size(最大步长参数):它决定了解法器能够使用的最大时间步长,它的缺省值为“仿真时间/50”,即整个仿真过程中至少取50个取样点,但这样的取法对于仿真时间较长的系统则可能带来取样点过于稀疏,而使仿真结果失真。一般建议对于仿真时间不超过15s的采用默认值即可,对于超过15s的每秒至少保证5个采样点,对于超过100s的,每秒至少保证3个采样点。Initial step size(初始步长参数):一般建议使用“auto”默认值即可。仿真精度的定义(对于变步长模式)Relative tolerance(相对误差):它是指误差相对于状态的值,是一个百分比,缺省
27、值为1e-3,表示状态的计算值要精确到0.1%。Absolute tolerance(绝对误差):表示误差值的门限,或者是说在状态值为零的情况下,可以接受的误差。如果它被设成了auto,那么simulink为每一个状态设置初始绝对误差为1e-6。,MATLAB SDU GMLI,38,Mode(固定步长模式选择)Multitasking:选择这种模式时,当simulink检测到模块间非法的采样速率转换,它会给出错误提示。所谓的非法采样速率转换指两个工作在不同采样速率的模块之间的直接连接。在实时多任务系统中,如果任务之间存在非法采样速率转换,那么就有可能出现一个模块的输出在另一个模块需要时却无法
28、利用的情况。通过检查这种转换,Multitasking将有助于用户建立一个符合现实的多任务系统的有效模型。使用速率转换模块可以减少模型中的非法速率转换。Simulink提供了两个这样的模块:unit delay模块和zero-order hold模块。对于从慢速率到快速率的非法转换,可以在慢输出端口和快输入端口插入一个单位延时unit delay模块。而对于快速率到慢速率的转换,则可以插入一个零阶采样保持器zero-order hold。Singletasking:这种模式不检查模块间的速率转换,它在建立单任务系统模型时非常有用,在这种系统就不存在任务同步问题。Auto:这种模式,simuli
29、nk会根据模型中模块的采样速率是否一致,自动决定切换到multitasking和singletasking。,MATLAB SDU GMLI,39,输出选项Refine output:这个选项可以理解成精细输出,其意义是在仿真输出太稀松时,simulink会产生额外的精细输出,这一点就像插值处理一样。用户可以在refine factor设置仿真时间步间插入的输出点数。产生更光滑的输出曲线,改变精细因子比减小仿真步长更有效。精细输出只能在变步长模式中才能使用,并且在ode45效果最好。Produce additional output:它允许用户直接指定产生输出的时间点。一旦选择了该项,则在它的
30、右边出现一个output times编辑框,在这里用户指定额外的仿真输出点,它既可以是一个时间向量,也可以是表达式。与精细因子相比,这个选项会改变仿真的步长。Produce specified output only:它的意思是让simulink只在指定的时间点上产生输出。为此解法器要调整仿真步长以使之和指定的时间点重合。这个选项在比较不同的仿真时可以确保它们在相同的时间输出。,MATLAB SDU GMLI,40,2、Workspace I/O页,此页主要用来设置SIMULINK与MATLAB工作空间交换数值的有关选项。Load from workspace:选中前面的复选框即可从MATLA
31、B工作空间获取时间和输入变量,一般时间变量定义为t,输入变量定义为u。Initial state用来定义从MATLAB工作空间获得的状态初始值的变量名。Save to workspace:用来设置存往MATLAB工作空间的变量类型和变量名,选中变量类型前的复选框使相应的变量有效。一般存往工作空间的变量包括输出时间向量(Time)、状态向量(States)和输出变量(Output)。Final state用来定义将系统稳态值存往工作空间所使用的变量名。Save option:用来设置存往工作空间的有关选项。Limit rows to last用来设定SIMULINK仿真结果最终可存往MATLAB
32、工作空间的变量的规模,对于向量而言即其维数,对于矩阵而言即其秩;Decimation设定了一个亚采样因子,它的缺省值为1,也就是对每一个仿真时间点产生值都保存,而若为2,则是每隔一个仿真时刻才保存一个值。Format用来说明返回数据的格式,包括矩阵matrix、结构struct及带时间的结构struct with time。,MATLAB SDU GMLI,41,3、Diagnostics页,此页分成两个部分:仿真选项和配置选项。配置选项下的列表框主要列举了一些常见的事件类型,以及当SIMULINK检查到这些事件时给予的处理。仿真选项options主要包括是否进行一致性检验、是否禁用过零检测、
33、是否禁止复用缓存、是否进行不同版本的SIMULINK的检验等几项。,MATLAB SDU GMLI,42,启动系统仿真与仿真结果分析 设置完仿真参数之后,从Simulation中选择Start菜单项或单击模型编辑窗口中的Start Simulation命令按钮,便可启动对当前模型的仿真。此时,Start菜单项变成不可选,而Stop菜单项变成可选,以供中途停止仿真使用。从Simulation菜单中选择Stop项停止仿真后,Start项又变成可选。,MATLAB SDU GMLI,43,为了观察仿真结果的变化轨迹可以采用3种方法:(1)把输出结果送给Scope模块或者XY Graph模块。(2)把
34、仿真结果送到输出端口并作为返回变量,然后使用MATLAB命令画出该变量的变化曲线。(3)把输出结果送到To Workspace模块,从而将结果直接存入工作空间,然后用MATLAB命令画出该变量的变化曲线。,MATLAB SDU GMLI,44,例2 利用Simulink构建函数曲线y=5t2+16。仿真过程如下:(1)启动Simulink并打开模型编辑窗口。(2)将所需模块添加到模型中。(3)设置模块参数并连接各个模块组成仿真模型。设置模块参数后,用连线将各个模块连接起来组成仿真模型。(4)设置系统仿真参数。(5)开始系统仿真。(6)观察仿真结果。,MATLAB SDU GMLI,45,例3
35、利用Simulink仿真求定积分仿真过程如下:(1)打开一个模型编辑窗口。(2)将所需模块添加到模型中。(3)设置模块参数并连接各个模块组成仿真模型。(4)设置系统仿真参数。(5)开始系统仿真。(6)观察仿真结果。,I=,MATLAB SDU GMLI,46,系统仿真实例至此,可以总结出利用Simulink进行系统仿真的步骤如下:(1)建立系统仿真模型,这包括添加模块、设置模块参数以及进行模块连接等操作。(2)设置仿真参数。(3)启动仿真并分析仿真结果。,MATLAB SDU GMLI,47,例4 有初始状态为0的二阶微分方程x“+0.2x+0.4x=0.2u(t),其中u(t)是单位阶跃函数
36、,试建立系统模型并仿真。方法1:用积分器直接构造求解微分方程的模型。方法2:利用传递函数模块建模。,MATLAB SDU GMLI,48,IV 使用命令操作对系统进行仿真从命令窗口运行仿真的函数有4个,即sim、simset、simget和set_param。1sim函数sim函数的作用是运行一个由Simulink建立的模型,其调用格式为:t,x,y=sim(modname,timespan,options,data);t:仿真时间向量x:状态模块的状态矩阵y:仿真输出矩阵,每一列对应一个输出端口的输出数据。Modname:指定模型名字Timespan:仿真时间区域Options:仿真参数这些
37、参数中,只有Modname是必须的。,MATLAB SDU GMLI,49,仿真模型Simul,X有三列表示模型中含有3个状态向量,其中Integrator中有一个,TransferFcn中有两个。输出y有两列,对应与out1和out2,时间范围为2s到8s只在4个指定时刻有值,MATLAB SDU GMLI,50,2simset函数simset 函数用来为sim函数建立或编辑仿真参数或规定算法,并把设置结果保存在一个结构变量中。它有如下4种用法:(1)options=simset(property,value,):把property代表的参数赋值为value,结果保存在结构options中。
38、(2)options=simset(old_opstruct,property,value,):把已有的结构old_opstruct(由simset产生)中的参数property重新赋值为value,结果保存在新结构options中。(3)options=simset(old_opstruct,new_opstruct):用结构new_opstruct的值替代已经存在的结构old_opstruct的值。(4)simset:显示所有的参数名和它们可能的值。,MATLAB SDU GMLI,51,3simget函数simget函数用来获得模型的参数设置值。如果参数值是用一个变量名定义的,simge
39、t返回的也是该变量的值而不是变量名。如果该变量在工作空间中不存在(即变量未被赋值),则Simulink给出一个出错信息。该函数有如下3种用法:(1)struct=simget(modname):返回指定模型model的参数设置的options结构。(2)value=simget(modname,property):返回指定模型model的参数property的值。(3)value=simget(options,property):获取options结构中的参数property的值。如果在该结构中未指定该参数,则返回一个空阵。用户只需输入能够唯一识别它的那个参数名称的前几个字符即可,对参数名称中
40、字母的大小写不作区别。,MATLAB SDU GMLI,52,4set_param函数set_param函数的功能很多,这里只介绍如何用set_param函数设置Simulink仿真参数以及如何开始、暂停、终止仿真进程或者更新显示一个仿真模型。(1)设置仿真参数调用格式为:set_param(modname,property,value,)其中modname为设置的模型名,property为要设置的参数,value是设置值。这里设置的参数可以有很多种,而且和用simset设置的内容不尽相同,相关参数的设置可以参考有关资料。(2)控制仿真进程调用格式为:set_param(modname,Sim
41、ulationCommand,cmd)其中mode为仿真模型名称,而cmd是控制仿真进程的各个命令,包括start、stop、pause、comtinue或update。在使用这两个函数的时候,需要注意必须先把模型打开。,MATLAB SDU GMLI,53,V 子系统及其封装技术子系统的建立 建立子系统有两种方法:通过Subsystem模块建立子系统和通过已有的模块建立子系统。两者的区别是:前者先建立子系统,再为其添加功能模块;后者先选择模块,再建立子系统。1通过Subsystem模块建立子系统操作步骤为:(1)先打开Simulink模块库浏览器,新建一个仿真模型。(2)打开Simulink
42、模块库中的Ports&Subsystems模块库,将Subsystem模块添加到模型编辑窗口中。(3)双击Subsystem模块打开一个空白的Subsystem窗口,将要组合的模块添加到该窗口中,另外还要根据需要添加输入模块和输出模块,表示子系统的输入端口和输出端口。这样,一个子系统就建好了。,MATLAB SDU GMLI,54,2通过已有的模块建立子系统操作步骤为:(1)先选择要建立子系统的模块,不包括输入端口和输出端口。(2)选择模型编辑窗口Edit菜单中的Create Subsystem 命令,这样,子系统就建好了。在这种情况下,系统会自动把输入模块和输出模块添加到子系统中,并把原来的
43、模块变为子系统的图标。,MATLAB SDU GMLI,55,例5 PID控制器是在自动控制中经常使用的模块,在工程应用中其标准的数学模型为 其中采用了一阶环节来近似纯微分动作,为保证有良好的微分近似的效果,一般选N10。试建立PID控制器的模型并建立子系统。步骤如下:(1)先建立PID控制器的模型。(2)建立子系统。,MATLAB SDU GMLI,56,子系统的条件执行,子系统的执行可以由输入信号来控制,用于控制子系统的信号称为控制信号,而由控制信号控制的子系统称为条件执行子系统。分 1使能子系统,2 触发子系统,3 使能加触发子系统1使能子系统:控制信号由负变正时子系统开始执行,直到控制
44、信号再次变为负时结束 建立使能子系统的方法是:打开Simulink模块库中的Ports&Subsystems模块库,将Enable模块复制到子系统模型中,则系统的图标发生了变化。*也可用enable subsystem模块建构,MATLAB SDU GMLI,57,例6 利用使能子系统构成一个正弦半波整流器。操作步骤如下:(1)打开Simulink模块库浏览器并新建一个仿真模型。(2)将Sine Wave、Enabled Subsystem、Scope 3个模块拖至新打开的模型编辑窗口,连接各模块并存盘。其中使能信号端接Sine Wave模块。为了便于比较,除显示半波整流波形外,还显示正弦波,
45、故在示波器属性窗口将Number of axes设置为2。使能子系统建立好后,可对Enable模块进行参数设置。(3)选择Simulink菜单中的Start命令,就可看到半波整流波形和正弦波形。,MATLAB SDU GMLI,58,2触发子系统 触发子系统是指当触发事件发生时开始执行子系统。与使能子系统相类似,触发子系统的建立要把Ports&Subsystems模块库中的Trigger模块添加到子系统中或直接选择Triggered Subsystem模块来建立触发子系统。Trigger type:*rising:控制信号从负值或者零上升到正值时子系统开始执行*falling:从正值或零下降到
46、负值时*either:满足上跳沿或者下跳沿触发条件*function call:函数触发 由s函数的内部逻辑确定,MATLAB SDU GMLI,59,例7 利用触发子系统将一锯齿波转换成方波。操作步骤如下:(1)用Signal Generator、Triggered Subsystem和Scope模块构成子系统。(2)选择Simulink菜单中的Start命令,就可看到波形。,MATLAB SDU GMLI,60,3使能加触发子系统所谓使能加触发子系统就是把Enable和Tirgger模块都加到子系统中,使能控制信号和触发控制信号共同作用子系统的执行,也就是前两种子系统的综合。该系统的行为方
47、式与触发子系统相似,但只有当使能信号为正时,触发事件才起作用。,MATLAB SDU GMLI,61,子系统的封装 所谓子系统的封装(Masking),就是为子系统定制对话框和图标,使子系统本身有一个独立的操作界面,把子系统中的各模块的参数对话框合成一个参数设置对话框,在使用时不必打开每个模块进行参数设置,这样使子系统的使用更加方便。子系统的封装过程很简单,先选中所要封装的子系统,再选择模型编辑窗口Edit菜单中的Mask subsystem命令,这时将出现封装编辑器(Mask Editor)对话框。Mask Editor对话框中共包括4个选项卡:Icon、Parameters、Initial
48、ization和Documentation。子系统的封装主要就是对这4页参数进行设置。,MATLAB SDU GMLI,62,ICON,Drawing commands编辑框 用来建立封装图标 1.显示文本的函数有4个 disp,text,fprintf,port_lable port_lable用法-根据端口类型和端口为端口号添加标记 格式 port_lable(port_type,port_number,lable)例如 port_lable(input,1,IN1)2.显示图形可用plot函数,显示图像可以用image函数,例如plot(sin(0:0.1:2*pi),cos(0:0.1
49、:2*pi)image(imread(.jpg)3.显示传递函数可以用dpoly函数 格式 dpoly(num,den,character)num,den分别为传递函数的分子和分母的系数行向量,默认变量为s,可以用character 指定 droots函数显示零极点模型的传递函数,调用格式 droots(z,p,k,character),MATLAB SDU GMLI,63,设置封装图标特性Frame:invisible隐藏图标边框;visible显示边框Transparency 设置图标的透明度Rotation 设置图标是否跟模块一起翻转Units设置drawing commands编辑框中
50、使用命令plot,text时的坐标系,MATLAB SDU GMLI,64,Parameters参数设置:用来确定被封装子系统的内部变量和对话框中输入量之间的联系Initialization设置初始化命令,在仿真开始,导入模型,更换模块图标和重设封装子系统的图标时被调用Documentation设置封装类型、描述文本和帮助文本,MATLAB SDU GMLI,65,VI S函数的设计与应用,S函数称为系统函数(System Function),它有固定的程序格式。用MATLAB语言可以编写S函数,此外还可以采用C、C+、FORTRAN等语言编写。,MATLAB SDU GMLI,66,用MAT