simulink系统仿真原理

上传人:san****019 文档编号:82966099 上传时间:2019-02-25 格式:PPT 页数:65 大小:2.74MB
返回 下载 相关 举报
simulink系统仿真原理_第1页
第1页 / 共65页
simulink系统仿真原理_第2页
第2页 / 共65页
simulink系统仿真原理_第3页
第3页 / 共65页
simulink系统仿真原理_第4页
第4页 / 共65页
simulink系统仿真原理_第5页
第5页 / 共65页
点击查看更多>>
资源描述

《simulink系统仿真原理》由会员分享,可在线阅读,更多相关《simulink系统仿真原理(65页珍藏版)》请在金锄头文库上搜索。

1、第6章 Simulink系统仿真原理,6.1 Simulink求解器概念 6.2 系统过零的概念与解决方案 6.3 系统代数环的概念与解决方案 6.4 高级积分器 6.5 仿真参数设置:高级选项与诊断选项,6.1 Simulink求解器概念,6.1.1 离散求解器 第3章中简单介绍了动态系统的模型及其描述,其中指出,离散系统的动态行为一般可以由差分方程描述。众所周知,离散系统的输入与输出仅在离散的时刻上取值,系统状态每隔固定的时间才更新一次;而Simulink对离散系统的仿真核心是对离散系统差分方程的求解。,在对纯粹的离散系统进行仿真时,需要选择离散求解器对其进行求解。用户只需选择Simuli

2、nk仿真参数设置对话框中的求解器选项卡中的discrete(no continuous states)选项,即没有连续状态的离散求解器,便可以对离散系统进行精确的求解与仿真。读者可以参考第5章中相关内容了解离散求解器的其它设置,这里不再赘述。,6.1.2 连续求解器 与离散系统不同,连续系统具有连续的输入与输出,并且系统中一般都存在着连续的状态变量。连续系统中存在的状态变量往往是系统中某些信号的微分或积分,因此连续系统一般由微分方程或与之等价的其它方式进行描述。这就决定了使用数字计算机不可能得到连续系统的精确解,而只能得到系统的数字解(即近似解)。,采用不同的连续求解器会对连续系统的仿真结果与

3、仿真速度产生不同的影响,但一般不会对系统的性能分析产生较大的影响,因为用户可以设置具有一定的误差范围的连续求解器进行相应的控制。离散求解器与连续求解器设置的不同之处如图6.1所示。,图6.1 离散求解器与连续求解器设置的比较,由于连续系统状态变量不能够被精确地计算出来,因而积分的误差值同样也是一个近似值。通常,连续求解器采用两个不同阶次的近似方法进行积分,然后计算它们之间的积分差值作为积分误差。连续求解器积分误差的计算如图6.2所示。,图6.2 连续求解器积分误差计算,图6.2中h为积分步长。注意,此图以最简单的多边形积分近似算法为例说明积分误差的计算,在实际中具体的方法视连续求解器的不同而不

4、同。如果积分误差满足绝对误差或相对误差,则仿真继续进行;如果不满足,则求解器尝试一个更小的步长,并重复这个过程。当然,连续求解器在选择更小步长时采用的方法也不尽相同。如果误差上限值的选择或连续求解器的选择不适合待求解的连续系统,则仿真步长有可能会变得非常小,使仿真速度变得非常慢。(用户需要注意这一点。),混合系统仿真时连续状态求解与离散状态求解的协调如图6.3所示。其中h为初始步长,由于在时刻t与th之间系统存在着离散状态的更新,因而连续变步长求解器将会减小步长至,之后再计算积分误差以控制求解。如果求解误差满足误差范围,则进行下一步仿真,否则缩小时间间隔,重复此过程进行求解仿真。,图6.3 连

5、续状态求解与离散状态求解的协调示意图,6.2 系统过零的概念与解决方案,6.1节中对Simulink的求解器进行了较为深入的介绍。Simulink求解器固然是系统仿真的核心,但Simulink对动态系统求解仿真的控制流程也是非常关键的。Simulink对系统仿真的控制是通过系统模型与求解器之间建立对话的方式进行的:Simulink将系统模型、模块参数与系统方程传递给Simulink的求解器,而求解器将计算出的系统状态与仿真时间通过Simulink环境传递给系统模型本身,通过这样的交互作用方式来完成动态系统的仿真。,6.2.1 过零的产生 在动态系统的仿真过程中,所谓过零,是指系统模型中的信号或

6、系统模块特征的某种改变。这种特征改变包括以下两种情况: (1) 信号在上一个仿真时间步长之内改变了符号。 (2) 系统模块在上一个仿真时间步长改变了模式(如积分器进入了饱和区段)。,6.2.2 事件通知 在动态系统仿真中,采用变步长求解器可以使Simulink正确地检测到系统模块与信号中过零事件的发生。当一个模块通过Simulink仿真环境通知求解器,在系统前一仿真步长时间内发生了过零事件,变步长求解器就会缩小仿真步长,即使求解误差满足绝对误差和相对误差的上限要求。缩小仿真步长的目的是判定事件发生的准确时间(也就是过零事件发生的准确时刻)。,6.2.3 支持过零的模块 在Simulink的模块

7、库中,并非所有的模块都能够产生过零事件。,图6.4 系统模型与求解器之间的交互作用示意图,对于其它的许多模块而言,它们不具有过零检测的能力。如果需要对这些模块进行过零检测,则可以使用信号与系统库(Signals & Systems)中的Hit Crossing零交叉模块来实现。当Hit Crossing模块的输入穿过某一偏移值(offset)时会产生一个过零事件,所以它可以用来为不带过零能力的模块提供过零检测的能力。 一般而言,系统模型中模块过零的作用有两种类型:一是用来通知求解器,系统的运行模式是否发生了改变,也就是系统的动态特性是否发生改变;二是驱动系统模型中其它模块。过零信号包含三种类型

8、:上升沿、下降沿、双边沿,如图6.5所示。,图6.5 过零信号的类型,下面分别对这三种类型进行简单的介绍。 (1) 上升沿:系统中的信号上升到零或穿过零,或者是信号由零变为正。 (2) 下降沿:系统中的信号下降到零或穿过零,或者是信号由零变为负。 (3) 双边沿:任何信号的上升或下降沿的发生。,6.2.4 过零的举例过零的产生与关闭过零 1. 过零点的产生 【例6.1】 过零的产生与影响。 这里以一个很简单的例子来说明系统中过零的概念以及它对系统仿真所造成的影响。在这个例子中,采用Functions & Tables-函数与表库中的Function函数模块和Math数学库中的Abs绝对值模块分

9、别计算对应输入的绝对值。我们知道,Function模块不会产生过零事件,所以在求取绝对值时,一些拐角点被漏掉了;但是Abs模块能够产生过零事件,所以每当它的输入信号改变符号时,它都能够精确地得到零点结果。图6.6所示为此系统的Simulink模型以及系统仿真结果。,图6.6 过零产生的影响,从仿真的结果中可以明显地看出,对于不带有过零检测的Function函数模块,在求取输入信号的绝对值时,漏掉了信号的过零点(即结果中的拐角点);而对于具有过零检测能力的Abs求取绝对值模块,它可以使仿真在过零点处的仿真步长足够小,从而可以获得精确的结果。为说明这一点,在MATLAB命令窗口中输入如下语句: s

10、emilogy(tout(1:end1,diff(tout) % 绘制系统仿真时刻的一阶差分(即系统仿真步长),如图6.7所示,其中常规步长为0.2 s, % 当发生过零的情况时,系统仿真步长自动缩小至约s,图6.7 系统仿真中过零处步长变化,2. 关闭过零 【例6.2】 过零的关闭与影响。 在【例6.1】中,过零表示系统中信号穿过了零点。其实,过零不仅用来表示信号穿过了零点,还可以用来表示信号的陡沿和饱和。在这个例子中,系统实现了输入信号由其绝对值跳变到饱和值的功能,而且跳变过程受到仿真时刻的控制。在此系统模型中所使用的Abs模块与Saturation模块都支持过零事件的产生,因此在系统的响

11、应输出中得到了理想的陡沿。其中系统模型如图6.8(a)所示,系统仿真结果如图6.8(b)所示。,图6.8 系统模型及系统仿真结果,从图6.8中可以明显看出,使用过零检测可以获得很好的仿真结果,系统的输出具有很好的陡沿。 在使用Simulink进行动态系统仿真中,其默认参数选择使用过零检测的功能。如果使用过零检测并不能给系统的仿真带来很大的好处,用户可以关闭仿真过程中过零事件的检测功能。用户可以在Simulation Parameters 参数设置对话框中的Advanced选项卡中进行设置,以关闭过零检测功能,然后再次对系统进行仿真。图6.9(a)、(b)所示分别为关闭过零检测的设置以及在关闭过

12、零检测后系统的仿真结果。,图6.9 关闭系统过零检测的设置和关闭过零检测后的仿真结果,6.2.5 使用过零检测的其它注意事项 在使用过零检测时,用户需要注意如下几点: (1) 关闭系统仿真参数设置中的过零事件检测,可以使动态系统的仿真速度得到很大的提高。但可能会引起系统仿真结果的不精确,甚至出现错误结果。 (2) 关闭系统过零检测对Hit Crossing零交叉模块并无影响。 (3) 对于离散模块及其产生的离散信号不需要进行过零检测。,6.3 系统代数环的概念与解决方案,6.3.1直接馈通模块 在使用Simulink的模块库建立动态系统的模型时,有些系统模块的输入端口(Input ports)

13、具有直接馈通(Direct feedthrough)的特性。所谓模块的直接馈通,是指如果在这些模块的输入端口中没有输入信号,则无法计算此模块的输出信号。换句话说,直接馈通就是模块输出直接依赖于模块的输入。在Simulink中具有直接馈通特性的模块有如下的几种:,(1) Math Function数学函数模块。 (2) Gain增益模块。 (3) Product乘法模块。 (4) State-Space状态空间模块(其中矩阵D不为0)。 (5) Transfer Fcn传递函数模块(分子与分母多项式阶次相同)。 (6) Sum求和模块。 (7) Zero-Pole零极点模块(零点与极点数目相同)

14、。 (8) Integrator积分模块。,6.3.2 代数环的产生 在介绍完具有直接馈通特性的系统模块之后,来介绍代数环的产生。系统模型中产生代数环的条件如下: (1) 具有直接馈通特性的系统模块的输入,直接由此模块的输出来驱动。 (2) 具有直接馈通特性的系统模块的输入,由其它直接馈通模块所构成的反馈回路间接来驱动。 图6.10所示为一个非常简单的标量代数环的构成。,图6.10 标量代数环,6.3.3 代数环的举例与解决方案之一:直接求解系统方程 【例6.3】 代数环的直接求解。在图6.11中所示的两个系统模型中均存在代数环结构,试对这两个系统进行求解 解:为了计算求和模块Sum的输出,需

15、要知道其输入,但是其输入恰恰包含模块的输出。对于此二系统,很容易写出如下所示的系统的动态方程: (1) 第一个系统模型的动态方程:,所以。 (2) 第二个系统模型的动态方程:,所以。,图6.11 具有代数环的系统模型,6.3.4 代数环的举例与解决方案之二:代数约束 用户除了可以使用Simulink内置的代数环求解器对含有代数环的动态系统进行仿真,还可以使用Math模块库中的代数约束Algebraic Constraint模块对动态系统数学方程进行求解。 使用代数约束模块并给出约束初始值,可以方便地对代数方程进行求解。代数约束模块通过调整其输出代数状态以使其输入为零。其中为模块的输出状态,为一

16、代数表达式,它作为模块的输入。,【例6.4】确良 使用代数约束求解代数环。 在如图6.12所示的系统模型中代数约束模块的输出分别为代数状态。分别通过反馈回路作为代数约束模块的输入。运行此系统相当于对如下的代数方程进行求解: 其仿真结果如图6.12中Display模块所显示的那样,其中,。,图6.12 使用代数约束求解的代数环结构,【例6.5】代数状态的初始值选取。使用代数约束来求解方程 的根(显然此方程的根为 解:首先建立如图6.13所示的系统模型,然后对代数约束模块的初始值进行设置,如图6.13所示(仿真结果如Display模块中所示)。,)。,图6.13 代数状态的初始值选择,6.3.5 代数环的举例与解决方案之三:切断环 至此,读者能够采用两种方法对含有代数环的动态系统进行仿真分析:一是直接对系统方程进行手工求解,但是在很多情况下难以进行手工求解甚至不可能进行手工求解;二是使用代数约束,由Simulink内置的代数环求解器对含有代数环的系统进行仿真。 【例6.6】 对于如下的连续线性系统: 建立如图6.14所示的系统模型。,图6.

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号