SIMULINK高级技术.ppt
《SIMULINK高级技术.ppt》由会员分享,可在线阅读,更多相关《SIMULINK高级技术.ppt(47页珍藏版)》请在三一办公上搜索。
1、第23章 SIMULINK高级技术,在第22章中,对SIMULINK使用的一些基础知识、动态系统建模方法及仿真的方法做了详细的介绍。在22章的介绍中读者可以看到,SIMULINK环境中可运行的工具包很多,已经涵盖了航空、航天、控制、通信、DSP、电力等诸多领域,所涉及的内容专业性极强。为此,本章将向读者介绍一些SIMLINK的高级技术,以求给读者一个更加深刻的印象。本章主要介绍SIMULINK的高级仿真技术,主要包括:数据显示、高级积分器、过零以及系统代数环形成与处理、SIMULINK条件执行子系统、SIMULINK调试技术、模块库的扩展及函数的创建与使用等。,23.1 数据显示,在工程设计中
2、,对于大多数工程设计人员来说,查看和分析结果曲线对于了解模型的内部结构,以及判断结果的准确性具有重要意义。SIMULINK仿真模型后,绘制模型输出轨迹的方法有以下几种:将信号输出到Scope模块或XY Graph模块;使用悬浮Scope模块或Display模块;将输出数据写入到返回变量,并用MATLAB的绘图命令绘制曲线;将输出数据用To Workspace模块写入到工作区,并用MATLAB的绘图命令绘制结果曲线。,23.1.1 使用Scope模块,Scope模块是示波器模块,它与实验室中使用的示波器功能类似,在模型仿真运行结束后,用户可以再通过双击打开Scope模块,观察输出轨迹。Scope
3、模块显示对应于仿真时间的输入信号,该模块可以在一个坐标系中,以不同的颜色同时显示出多个输入信号,用户可以调整需要显示的时间范围和输入值范围。当用户运行模型仿真时,虽然SIMULINK会把结果数据写入到相应的Scope中,但它并不打开Scope窗口,用户在仿真结束运行后双击Scope模块打开示波器窗口,此时示波器窗口会显示Scope模块的输入信号。如果信号是连续的,Scope会生成有点构成的连续曲线;如果信号是离散的,Scope会生成阶梯状曲线。此外,用户还可以在仿真运行期间移动Scope窗口或改变窗口的大小,或Scope窗口的参数值。使用Scope模块提供的工具栏按钮,可以缩放被显示的数据,保
4、存此次仿真的坐标轴设置,限制被显示的数据量,把数据存储到工作区等。,23.1.2 使用XY Graph模块,XY Graph模块是SIMULINK中Sinks模块库中的模块,该模块利用MATLAB的图形窗口绘制信号的XY曲线,这个模块有两个标量输入,它把第一个输入作为X轴数据,第二个输入作为Y轴数据,X轴和Y轴的坐标范围可以在模块的参数对话框内设置,如图23.5所示,超出指定范围的数据在图形窗口中不显示。此外,如果模型中有多个XY Graph模块,SIMULINK仿真的起始时刻会为每个XY Graph模块打开一个图形显示窗口。,23.1.3 使用悬浮Scope模块,悬浮Scope模块也是一个可
5、以显示一个或多个信号的示波器模块,用户启用悬浮Scope模块的方式有:从SIMULINK的Sinks库中把Scope复制到模型中并按下“悬浮示波器”按钮,将Scope模块设置为悬浮示波器;直接从Sinks库中把Floating Scope模块复制到模型窗口中。悬浮示波器是不带输入端口的模块,它可以在仿真过程中显示任何一个被选择的信号,悬浮示波器通过示波器窗口中的蓝框来辨别,下面,将结合如图23.9所示的模型,演示浮动示波器的使用。,23.1.4 使用命令绘制输出曲线,关于使用命令绘制输出曲线,这里将通过一个建模的例子向读者说明。【例23.1】求解微分方程。其中是单位阶跃函数,初始值为0。要求解
6、这样一个问题,关键是建立能够表征例中微分方程的模型,故其模型实现步骤如下。(1)改写微分方程为:。(2)选择模块、构建模型。在微分问题中,往往是通过积分来解决微分问题,基本思路是:经过积分得到,再经过积分得到,而可由(1)中的代数运算得到。,23.2 过零检测,在运行动态系统仿真时,SIMULINK利用过零检测来检查每个时间步上系统状态变量的不连续性,如果SIMULINK在当前工作时刻检测到不连续性,它会确定不连续性状态出现的准确时刻,并在该时刻的前后选取另外的时间步来求取仿真结果。,23.2.1 过零检测的工作方式,在动态系统中,状态变量的不连续性往往表征了系统的重要事件。以篮球撞击地面系统
7、为例,在篮球撞击地面的时刻,撞击的位置是不连续的,在仿真中,如果篮球是在两次时间步之间撞击了地面,那么仿真的结果可能是篮球在半空中就已经翻转方向,这与我们实际情况是不相符的,因此,对不连续点的精确仿真是非常重要的。,23.2.2 执行过零检测,过零检测可以使SIMULINK精确的仿真不连续点,而不必过多的选用小步长。事实上,SIMULINK中的许多模块都支持过零检测。在实际仿真中,如果用户对所有的系统,包括含有不连续状态的系统,利用过零检测进行仿真,不仅可以加快仿真速度,也可以提高仿真精度。对于SIMULINK中不同模块来说,产生过零的类型是不同的,如Abs模块是在输入信号符号发生变化时产生过
8、零,而积分模块进入饱和区段时产生过零。后一种模块我们称为饱和(Saturation)模块,当过零检测功能检测到饱和模块发生如下事件时产生过零:输入信号达到上限;输入信号离开上限;输入信号到达下限;输入信号离开下限。,23.3 代数环的概念及解决方案,在SIMULINK仿真中,读者可能看到如下的代码信息:Found algebraic loop containing:li14/k2 li14/Sum(algebraic variable)这说明在模型中存在代数环(Algebraic Loops),SIMULINK中代数环与数学上的代数循环的概念是一样的。通常,在代数环中包含的某些模块都具有这样的
9、特性:当前时刻模块的输出依赖于当前时刻模块的输入。这种输入输出关系在时间上“无延时”模块被称为直接馈通模块(Direct feedthrough)。在SMULINK中具有这种“无延时”特性模块有:,23.3.1 代数环的表征,一般来说,代数环在模型图表现为含有直接馈通模块的闭合回路。如下图23.19所示。模型中红色显示的部分就是一个闭合的含有直接馈通模块的代数环,读者可以在运行模型后在MATLAB命令窗口中验证。,23.3.2 代数环问题的解决,计算机在处理代数环计算时,采用的是一种迭代算法,也就是说每个时间步里,计算机都将进行这样的计算,这会使得计算机的计算时间增长。同时,由于这种代数环包含
10、的模块的“无延时”特性,要求环上所有模块的输出在同一时刻计算,这与系统顺序仿真的要求不符。要解决代数环问题,可以采取以下方式:方式一:设计模型时尽量不采用代数环设计;方式二:在计算速度可以忍受的范围内,可以不必介意代数环问难;方式三:对代数环采取代数约束;方式四:切断模型中的代数环。,23.4 高级积分器,在SIMULINK的Continues库中有一个非常重要的模块就是积分模块Integrator,其功能是对输入信号进行积分,并输出当前时间步上的积分值。这里用一个等式来说明:,其中,y时模块的输出,u时输入,是初始时刻,t是当前时刻,是初始状态。SIMULINK可以用许多中不同的数值积分方法
11、来计算积分模块的输出,每种方法在特定的环境下都有各自的优缺点,SIMULINK将积分模块看作一个具有状态和输出的动态系统,他的输入时状态的时间导数。如下式所示:,用户可以在Simulation Parameters对话框中选择合适的求解器算法,所选择的求解器会用当前时刻的输入值和前一时刻时间步的状态值来计算当前时间步上积分模块的输出值。为了支持这种计算模式,积分模块必须保存当前时间步的输出值以备计算下一时间步的输入值,同时,模块也提供给求解器一个初始条件,用来在仿真开始执行时计算模块的初始状态,默认情况下值为0。模块参数对话框也允许用户为初始条件指定其他值,或者在模块中创建一个初始值输入端口。
12、,23.4.1 定义初始条件,双击积分模块,打开积分模块参数属性对话框,如图所示。在该对话框中,用户可以将初始条件定义为参数,或选择从外部信号输入初始条件。,23.4.2 限制积分,为了防止输出超出指定的范围,用户可以勾选Limit output复选框,在下面的参数文本框中输入适当的限制范围值,如图23.26所示。当输出达到限制值时,SIMULINK将关闭积分动作,在积分过程中,用户可以改变这个积分限制,但模块的输出将遵循以下规则:当积分小于或等于Lower saturation limit参数值,而且输入是负值时,输出被限制在Lower saturation limit值;当积分在Lower
13、 saturation limit和Upper saturation limit之间时,输出是积分值;当积分大于或等于Upper saturation limit参数值,而且输入是正值时,输出被限制在Upper saturation limit值。,23.4.3 重新设置状态,积分模块可以根据外部信号重新把状态设置为指定的初始条件。当用户选择积分模块参数对话框中External reset列表下的任意选项时,模块输入端口的下方将出现一个触发端口,同时标注所选项的触发类型,如图23.30所示。External reset列表下各项功能说明如下:rising:当重置信号有上升沿时触发状态重置;fa
14、lling:当重置信号有下降沿时触发状态重置;either:当重置信号有上升沿或者下降沿发生时,触发重置;level;当重置信号为非零时,触发重置,并保持输出为初始条件值。,23.4.4 状态端口,勾选积分模块参数对话框中Show state port复选框,积分模块将在其顶部出现一个附加的输出端口,即状态端口。如果模块在当前时间步上重置,那么状态端口的输出值是模块还没有被重置时标准输出端口的值;除此以外,状态端口和模块的标准输出端口一样。由于状态端口比积分模块标准输出端口早一个时间步,因此,状态端口的使用可以使用户在创建下列模型时 避免代数环的出现:自重置积分器;在两个使能子系统间传递状态。
15、,23.4.5 创建自重置积分器,有时候,用户可能需要创建一个根据积分器输出值来重新设置积分器初始值的模型,那么这时,往往产生一个代数环;为了避免这个问题,用户最好使用积分模块状态端口这个功能来避免代数环的产生。在如图所示的模型中,创建了一个自重置积分器,其将输出减去1后反馈回积分器的重置端口。但是,当运行这个模型时,将弹出如图所示的仿真错误诊断器,显示仿真中出现代数环,并在2.449489742783214时刻停止仿真,而SIMULINK无法判断积分器的输出值,因为计算积分器的输出需要知道模块的重置信号。,23.5 简单子系统,对于工程问题,建立的模型往往非常复杂,此时,可以通过把多个模块组
16、合在子系统中来简化模型。创建子系统有如下优点:减少了模型窗口中显示模块的数目;使得模块之间的函数关系清晰化;建立层次模型,子系统作为一个层,组成子系统的其他模块构成另一个层;子系统可以反复调用。,23.5.1 系统的基本操作和子系统创建的方法,在用户使用SIMULINK子系统建立系统模型之前,简单介绍一下子系统的基本操作。1子系统命名:命名方法与模块命名类似。为增强系统模型的可读性,应使用有代表意义的文字给子系统进行命名。2子系统编辑:用鼠标左键双击子系统模块图标,打开子系统属性对话框对其进行编辑。3子系统的输入:使用Sources模块库中的Inport输入模块(即In1模块)作为子系统的输入
17、端口。4子系统的输出:使用Sinks模块库中的Outport输出模块(即Out1模块)作为子系统的输出端口。,23.5.2 组合已有模块创建子系统,这是一种比较简单的方法,也易于用户操作。下面通过一个实例来说明通过组合已有模块来创建子系统的具体方法。,23.5.3 添加Subsystem模块创建子系统,添加子系统模块创建子系统的方法就是首先将系统模型模块化,即将模型中实现不同功能的模块组看成一个子系统,用一个空的子系统模块来表征,勾画出整个系统的方框图,再在空的子系统模块中添加相应的模块来实现该子系统的预定功能。下面的例子将演示这种创建方法。,23.6 条件执行子系统,条件执行子系统的执行受到
18、控制信号的控制,也就是说,系统的输出受输入信号之外的另一个信号控制。这个控制信号是从子系统的一个单独端口输入的。根据控制信号对条件子系统执行的控制方式的不同,可以将条件执行子系统划分为如下的几种基本类型。使能子系统(Enable Subsystem):当子系统为正时,子系统将被执行。触发子系统(Triggered Subsystem):当控制信号的符号发生变化时,即当信号过零时,自系统将被执行。其触发方式有三种,控制信号上升沿时触发,控制信号下降沿时触发,控制信号上升或下降沿时触发。使能触发子系统(Enable and Triggered Subsystem):在使能状态下被触发时执行子系统。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SIMULINK 高级 技术
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-6519338.html