您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > [打印]6 MATLAB、SIMULINK系统建模设计与仿真基础_3
6.3SIMULINK工作原理系统模型的方程和图形化描述系统的数学模型可以用多种相互等价的数学方程形式来表达,例如微分方程组与连续状态方程、差分方程组与离散状态方程等等,对于线性时不变系统还经常在变换域中来描述,例如频域、复频域和Z域描述等等。对于单输入单输出的线性时不变系统还常用传递函数或冲激响应来描述系统。除了用方程形式描述外,还可以有多种描述方法。图:一个典型的信号流图形式例如图中共有三条前向通路:分别是abcdefg,ajfg和ak。相应地,前向通路总增益就是相应的前向通路上各支路增益的乘积。共有三个环路,分别是ci,l以及efh,其中环路ci与环路efh是互不接触的,环路ci与环路l也是互不接触的,但环路efh与环路l却是接触的。例如工程上常用的方框图法,信号流图法等。信号流图是对系统方框图的抽象。我们可以根据系统的微分方程或状态方程组来绘制信号流图。一般先将微分方程或状态方程组通过拉普拉斯变换表示为复变量s的代数方程(组);对于离散时间系统,差分方程则使用Z变换或用延时算子表示为代数方程。信号流图实质上是描述系统状态变量间关系的数学方程的图形化表示。信号流图的符号简单,绘制方便,运用灵活。利用梅森规则可以直接根据信号流图写出系统的传递函数。反之,若给定系统的传递函数,通过梅森规则也可直接绘制出系统的信号流图。例:将下图所示的系统方框图用信号流图表示,并使用梅森规则直接写出系统传递函数。根据图中节点上的信号关系可以直接得出相应的信号流图,如下图(a)所示。注意到其中所选择的状态变量节点是延迟环节的输出点,它们位于串联支路中,通过重新选择新的状态变量节点就可以消去这些节点,从而将信流图化简,如图下(b)所示。图:从方框图得出的信号流图及简化显然,信流图中有两条通路,一个环路,且环路与其中一条通路接触,与另外一条通路则不接触。应用梅森规则直接可得出传递函数为例:一个电路系统及其方框图模型如上图所示,将电压源v(t)视为输入信号f(t),电容两端的电压u(t)视为输出信号y(t),设系统的状态变量为电感元件上的电流以及电容元件两端的电压,即x1(t)=i(t),x2(t)=u(t)。试列写的该电路的微分方程,并改写为系统状态方程形式。然后根据状态方程画出系统的实现方框图和信号流图,并求出系统的传递函数模型以及对应的冲激响应解析表达式。通过编程仿真来验证结果。图:RLC电路图和等效系统模型图:根据电路系统状态方程以及输出方程得出的实现方框图和信号流图xdot=zeros(2,1);%状态变量矩阵初始化A=[-R/L,-1/L;1/C,0];%状态方程系数矩阵B=[1/L;0];xdot=A*x+B*f(t);%状态方程functioninput=f(t)input=(t=0);%输入信号为单位阶跃我们已经知道,仿真本质上就是利用某种求解算法对系统状态方程进行求解的过程。在Simulink中规定了固定格式的接口函数形式,称为S-函数。一切Simulink可视化模型都是基于S-函数实现的。S-函数可以用Matlab语言书写,也可以采用C、C++、Fortran等语言编写。S-函数还可以进行编译,以提高执行速度。Simulink内建的标准模块库就是用S-函数编写并进行编译后形成的。6.3.2Simulink的工作原理---S-函数6.3.2.1混合系统的状态空间描述由于S-函数是基于对一般系统的状态空间方程进行求解的一类具有标准函数接口的通用函数,我们首先将系统状态方程描述形式推广到更一般的情形,然后讨论其在S-函数中的实现问题。对于一般系统,其输入变量、状态变量以及输出变量的数量可以是任意的,其性质可以是连续的,也可以是离散的。如果系统变量的一部分具有连续值,而其余部分是离散的,那么系统就是混合系统。我们通过向量和矩阵方程的形式来描述混合系统。设系统的m个输入变量组成的输入信号向量为6.3.2.2用S-函数描述混合系统S-函数需要针对仿真执行过程中不同的情况进行相应的处理,这些不同情况的处理是:1初始化处理:在仿真开始阶段对模块所使用的变量等进行初始化。2计算导数:即递推求解微分方程过程。当所计算的系统部分是以微分方程描述的状态方程时,将调用S-函数中的该功能。3离散状态更新:即递推求解差分方程的过程。当系统以差分方程描述时,将调用S-函数中的该功能。4计算输出:根据系统的输出方程来计算当前状态下的系统输出。5计算下一步仿真的时刻:Simulink通过调用S-函数的该项计算来确定下一个仿真时刻。6仿真终止:当仿真结束的时候,Simulink将调用该项功能进行一些用户指定的仿真后处理工作。7出错处理:当仿真执行过程中出现程序错误,Simulink将调用该项功能进行处理。6.3.3用Matlab语言编写S-函数Matlab语言编写的S-函数的标准接口形式如下:[SYS,X0,STR,TS]=SFUNC(T,X,U,FLAG,P1,...,Pn)一个典型的S-函数的编程结构演示代码如下,其中采用了case语句来实现分支结构。Simulink仿真过程调用S-函数的流程Matlab提供了标准S-函数的模板文件sfuntmpl.m,该文件在Matlab安装文件夹中的\toolbox\Simulink\blocks\为了使仿真运行速度更快,或者不希望使用者得到算法或程序源代码,那么我们还可以对编制并调试正确的S-函数进行编译,形成动态链接库的形式供Simulink仿真时调用。
本文标题:[打印]6 MATLAB、SIMULINK系统建模设计与仿真基础_3
链接地址:https://www.777doc.com/doc-3374722 .html