matlab 单输入单输出线性时不变系统,MATLABSIMULINK系统建模设计与仿真基础

41528d3028836879cd698677c3999917.gifMATLABSIMULINK系统建模设计与仿真基础

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值