您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 企业文化 > MATLAB7.0使用详解-第10章 SIMULINK高级仿真技术
第10章SIMULINK高级仿真技术•在上面的章节中,对SIMULINK使用的一些基础知识、动态系统建模方法及仿真的方法做了详细的介绍,这些对于简单的模型仿真已经足够,但事实上,SIMULINK在许多领域有着更为广泛的应用,如航空、航天、控制、通信等,这就要求用户了解一些SIMLINK的高级技术,如子系统的创建、模型调试、S-函数等。•本章主要介绍SIMULINK的高级仿真技术,主要包括:SIMULINK子系统、SIMULINK高级子系统、SIMULINK模型调试、仿真分析以及系统代数环形成与处理、S函数的创建与使用等。10.1创建SIMULINK子系统•对于简单的系统,可以使用前面介绍的方法建立SIMULINK仿真模型进行动态系统仿真。然而,对于复杂的系统,直接建立的模型会显得功能模块繁多、输入输出关系复杂,这将给用户的仿真和分析带来极大不便。子系统技术就可以很好的解决遇到的这种情形,通常把复杂的框图进行分解,然后对分解后若干独立功能子系统进行处理。此外,用户还可以将自己开发的模块做成模块组,作为系统的一个子系统。•使用子系统技术,可以使整个模型更加简洁、可读性更强、操作分析更为便捷。创建子系统有两种方法:•将已经存在的模型的某些部分或全部使用模型窗口菜单栏【Edit/CreateSubsystem】子项,将其压缩转换,使之成为子系统。•使用Subsystems模块库中的Subsystem模块直接创建子系统。•通过创建子系统,可以实现以下作用:•减少模型窗中的显示模块的个数,使得模型显得简洁整齐,可读性提高。•模型层次化增强,便于用户按照层次来设计模型。•子系统可以反复调用,节省建模时间。10.1.1压缩已有模块创建子系统•这是一种比较简单的方法,也易于用户操作。压缩已有模块创建子系统的方法其实也是一种自下而上的设计方法。这里将通过一个实例来说明通过压缩来创建子系统的具体方法。10.1.2利用子系统模块创建子系统•通过子系统创建模型的方法又称作子上而下的设计方法。在创建模型的时候,直接使用子系统模块,然后,再在模块中添加组成该子系统的相应的模块。下面是利用该方法创建子系统的演示步骤:10.2子系统的封装•使用子系统技术可以很好的优化系统模型得界面,是系统模型的可读性更强。在对系统进行仿真时,首先要对系统模块参数进行设置,对子系统也是如此,需要对子系统所有模块进行合适的参数设置。•在第8章的例子中,子系统中模块的参数是逐一设置的,这会给用户带来极大的不便。子系统的封装技术则是对子系统的包装,使其成为一个真正意义上的SIMULINK模块,通过封装,可以简化模型,用户使用一个动态设置的对话框代替多个静态对话框,省去了对子系统内部结构的了解,为用户的直接调用提供了方便。•一个已经创建的子系统的封装方法主要是通过使用下图所示的封装编辑器来实现的,在封装编辑器中用户可以设置封装参数设置、图标、初始以及文本。归纳起来,即设定子系统初始值及特性、生成模块图标以及创建模块帮助文档和描述信息。10.2.1Parameters标签页•子系统封装的目的之一就是提供一个友好的参数设置界面。用户无需了解子系统内部结构,只需输入参数就可以对系统进行设计和仿真。只有使用了子系统编辑器中的Parameters标签页进行了参数设置,才算是真正意义上的完成可封装,从而使得封装之后,双击模块能够出现与SIMULINK模块库中模块一样的参数设置界面。•子系统封装编辑器界面Parameters标签页如图所示。10.2.2Initialization标签页•初始化设置标签页如图10.10所示。其中的对话变量表是在用户设置了参数设置页(Parameters)之后自动生成的。初始化命令(Initializationconmmands)一般是MATLAB指令,可以通过MATLAB命令定义封装后子系统空间中的各种变量,以便这些变量在被封子系统模块图标绘制指令或其他初始化指令中使用。10.2.3Icon标签页•Icon标签页(如图所示)的作用就是让用户能够自定义系统模块图标,同时给使用者提供一个更为友好的框图,并且使得模块功能更加明确化。默认状态下封装子系统是不使用图标的。Icon标签页包括图标选项栏Iconoption、绘图命令栏Drawingcommands以及绘图命令举例栏Examplesofdrawingcommands。10.2.4Documentation标签页•为了方便用户的理解和使用,Documentation标签页(如图所示)可以帮助用户建立全面的帮助文档。10.2.5子系统封装举例•【例】对如图10.18所示的模型进行封装。•改变封装子系统参数设置对话框中Gain和Constant的值,设置Gain为1,Constant为2,即表示赋值k=1、n=2,将变量值传递给子系统内的模块。在Display中可以实时看到输出值的变化。图中Display中显示的值就是上图参数设置的模块输出值。10.3SIMULINK高级子系统技术•在SIMULINK模块库中有这样一类子系统,他只有在满足一定条件下,才有动作。也就是说,系统的输出受出输入信号之外的另一个信号控制。这个控制信号是从子系统的一个单独端口输入的。这类子系统就是SIMULINK中的条件执行子系统。按照控制方式的不同,可以将控制施行子系统划分为以下几类。•使能子系统(EnableSubsystem):当子系统为正时,子系统将被执行。•触发子系统(TriggeredSubsystem):当控制信号的符号发生变化时,即当信号过零时,自系统将被执行。其触发方式有三种,控制信号上升沿时触发,控制信号下降沿时触发,控制信号上升或下降沿时触发。•使能触发子系统(EnableandTriggeredSubsystem):在使能状态下被触发时执行子系统。即在控制信号为正的同时出现触发信号,子系统才被执行。10.3.1使能子系统(EnableSubsystem)•使能子系统(EnableSubsystem)将控制信号分为允许(enable)和禁止(disenable)两种。当控制信号为正时,即控制信号为允许状态,系统可以执行使能子系统中的模块;否则就禁止模块功能。10.3.2触发子系统(TriggeredSubsystem)•触发子系统是指当控制信号发生符号变换时(包括信号由负变正和信号由正变负),子系统才开始执行。当控制信号触发子系统之后,子系统将保持系统的输出状态,直到下一次触发信号的到来。按照控制信号符号变化方式的不同,触发子系统可分为三类:上升沿触发子系统、下降沿触发子系统、以及上升或下降沿(双边沿)触发子系统。10.3.3使能触发子系统•当触发模块和使能模块同时设置在同一个系统中时,就构成了使能触发子系统。该系统的工作原理和上两节介绍的使能子系统和触发子系统工作原理相似。这里不再赘述。•注意:•1、系统在使能的状态下被触发才会执行。即系统在接受到触发事件后,将监测使能信号,若使能信号为正,则子系统执行一次,否则不执行。•2、当系统由多个使能或触发信号时,可先将相关的信号组合,以便接入单一的使能或触发输入端口。10.4SIMULINK的模型调试•如同诸多系统设置平台一样,SIMULINK也具有界面友好、功能强大的调试功能。SIMULINK提供了一个图形化的调试界面,简化了调试操作。simulink调试器是一个定位和诊断模型错误的工具.通过SIMULINK调试工具,用户可以采用多种方式对模型进行调试,发现其中可能存在的问题并加以修改,从而使得用户的模型设计、仿真、分析更加快速、便捷。10.4.1SIMULINK调试器的启动•SIMULINK图形调试界面的启动方式有两种:•单击模型窗口工具栏按钮,打开图形调试窗口。•选择菜单栏【Tools/Debugger】子项,打开图形调试窗口,如图所示。10.4.2SIMULINK调试窗口•如上图所示的是SIMULINK调试器窗口,在窗口的标题栏中显示被调试模型的名称。调试器由三部分组成:工具栏、断点显示及断点设置条件、仿真回路窗和信息显示标签页。10.4.3设置断点•如果用户知道自己系统执行到某些点或者满足一定条件就会出错,那么设置断点就将显得很有用。简单来说,断点就是仿真执行到该处时会暂停仿真,这时用户可以通过Continue指令跳过这一断点继续执行到下一断点。SIMULINK调试器允许用户设置的断点有两类:无条件中断和有条件中断。10.4.4系统调试举例•【例】以例1所建模型说明SIMULINK调试技术,例1建立的系统仿真模型见图所示。10.5对仿真进行分析•10.5.1使用sim指令运行模型•10.5.2线性化的方法•10.5.3平衡点的分析•10.5.4仿真速度和精度10.5.1使用sim指令运行模型•在SIMULINK中进行仿真,用户除了使用模型窗口菜单栏外,还可以使用MATLAB指令来进行仿真。这使得模型参数值和输入值得更改更加方便,给模型仿真和分析带来了方便。在MATLAB中,可以通过sim、simset、simget指令来实现SIMULINK的MATLAB指令仿真。•1..sim指令•2.simset指令•3.simget指令10.5.2线性化的方法•有这样一种通用的解决问题的办法,那就是复杂问题简单化,未知问题已知化。非线性问题也是如此,常用的方法是通过一定的方式将其线性化,得到线性化模型之后,就利用成熟的线性分析方法来研究非线性问题。•1.非线性系统的线性化描述•2.连续系统的线性化函数•3.离散系统和混合系统的线性化函数10.5.3平衡点的分析•平衡点(Equilibriumpoints)在数学上描述为使状态一阶导数为零的点。其对于非线性系统的系统稳定性的分析和评估是很有用的。•MATLAB中用于求取平衡点的函数是trim。trim函数的工作原理是先从一个指定的初始值开始,借助数值运算,搜索最接近初始值的平衡点。事实上,该指令并不保证搜索到的平衡点就一定是最接近初始值,当trim指令找不到导数为零的平衡点时,将返回搜索中使得状态导数最大绝对值最接近零的点。如果搜索失败,可以改变初始值再进行尝试。10.5.4仿真速度和精度•SIMULINK仿真性能和精度受很多因素的影响,其中包括模型的设计和仿真参数的选择。在大多数情况下,用户只需要使用系统默认的算法和仿真参数值就可以解决问题了。但对于一些特殊的模型,用户必须选择适当的仿真参数和解法器,才可以得到更加理想的仿真结果。10.6代数环的形成与处理•在介绍代数环(AlgebraicLoops)前,先看这样一个简单例子。•(1)建立如图所示的模型(含有代数环)。•(2)设置仿真模块参数。•(3)运行仿真。将在MATLAB命令窗口中看到如下信息。•Foundalgebraicloopcontaining:•'li14/k2'•'li14/Sum'(algebraicvariable)10.6.1构成代数环的常见模块快及表征•在上面的例子中,我们看到了一个这样的提示:系统中发现代数环,且代数环包括k2(Gain)模块和Sun模块。在代数环中包含的模块都具有这样的特性:当前时刻模块的输出依赖于当前时刻模块的输入。这种输入输出关系在时间上“无延时”模块被称为直通模块(Directfeedthrough)。10.6.2如何处理代数环问题•计算机在处理代数环计算时,采用的是一种迭代算法,也就是说每个时间步里,计算机都将进行这样的计算,这会使得计算机的计算时间增长。同时,由于这种代数环包含的模块的“无延时”特性,要求环上所有模块的输出在同一时刻计算,这与系统顺序仿真的要求不符。•要解决代数环问题,可以采取以下方式:•设计模型时尽量不采用代数环设计。•在计算速度可以忍受的范围内,可以不必介意代数环问难。•对代数环采取代数约束。•切断模型中的代数环。10.7S-函数(系统函数)的创建和使用•SIMULINK为用户提供了许多内置模块库,诸如连续模块库(Continous)、离散系统模块库(Discontinous)等,用户通过使用这
本文标题:MATLAB7.0使用详解-第10章 SIMULINK高级仿真技术
链接地址:https://www.777doc.com/doc-3869680 .html