2019年动态仿真集成环境.ppt

  1. 1、本文档共93页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第6章 动态仿真集成环境- Simulink;6.4 离散系统的仿真; 采样时间参数设定离散模块状态改变的采样时间,通常,采样时间被设成标量变量,然而,它也可以通过在该参数域中指定一个包含有两个元素的向量来指定一个时间偏移量。例如若仅在采样时间(Sample time)参数设定栏填写一个标量参数,那么它就是采样时间。若在此栏中填写二元向量[Ts,offset],那么该量的第一个元素指定采样时间Ts,第二个元素设置偏移时间offset,实际采样时间为t=n*Ts+offset。在此,n为整数,offset是绝对值小于采样时间Ts的实数。若要求模型必须在某时刻更新,或要求一些离散模块必须比另外一些离散模块更新得早一些或晚一些时,就必须借助offset的设置来实现。;1. 纯离散系统的仿真 纯离散系统可使用任何一种积分算法进行仿真,而不会影响输出结果。若只要采样瞬间的输出数据,那么应把最小步长设置得???最大的采样间隔大 例6-12 设人口变化的非线性离散系统的差分方程为 其中 k表示年份,p(k)为某一年的人口数目,p(k-1)为上一年的人口数目。 如果设人口初始值p(0)=200000,人口繁殖速率r=1.05,新增资源所能满足的个体数目N=1000000,要求建立此人口动态变化系统的系统模型,并分析人口数目在0至100年之间的变化趋势。;图6-53;图6-54;2. 离散—连续混合系统仿真 由于Simulink的每个离散模块都有一个内置的输入采样器和输出零阶保持器,故连续模块和离散模块混用时,它们之间可直接连接。在仿真时,离散模块的输入输出每个采样周期更新一次,即在采样间隔内它的输入输出保持不变;而连续模块的输入输出每个计算步长更新一次。仿真算法可以采用前面介绍过的任何一种。;3. 多频采样系统的仿真 多频采样系统包含有不同采样速率的离散模块,在Simulink中,多频采样系统和多频采样-连续混合系统的建模与仿真都可以进行。 例6-13 对图6-55所示双速率采样系统进行仿真。;解(1)离散传递函数模块复制于离散系统模块库(Discrete)中,设两个离散传递函数模块的采样时间和偏离时间分别为[1,0.1]和[0.7,0],并把两个离散模块的标题分别改为“Tf=1,offset=0.1” 和“Tf=0.7,offset=0”,如图6-55所示; (2)把阶跃函数的阶跃时刻设置为0; (3)Format|Sample time color命令可以用颜色显示出两个模块采样时间的不同; (4)运行以下指令,可得图6-61所示曲线。 [t,x,y]=sim(‘ex6_13 ’,3); stairs(t,y) legend (‘y1’, ‘y2’) ; 6.5 仿真系统的线性化模型;1. 平衡点的确定 利用Simulink提供的trim( )函数可根据系统的模型文件来求出系统的平衡点,但在绘制Simulink模型时注意首先应该将系统的输入和输出用输入/输出接口模块(In1/Out1)来表示。该函数的调用格式如下 [x,u,y,dx]=trim(‘model’,x0,u0,y0,ix,iu,iy) ; 由于该函数是通过极小化的算法来求出系统的平衡点,所以有时不能保证状态向量的变化率等于零。也即除非问题本身的极小值唯一,否则不能保证所求的平衡点是最佳的,因此,若想寻找全局最佳平衡点,必须多试几组初始值。 当系统有不连续状态时,trim( ) 函数一般不适用,而trim4( )函数也许能给出较好的结果。 对于以上函数的调用,也可写成如下的格式 [x,u,y,dx]=trim(‘model’) 这时会在默认的输入与输出下求出系统的平衡点来,这样的方法尤其对线性系统是有效的。;2. 连续系统的线性化模型 利用Simulink提供的函数linmod( )和linmod2( ) 可以根据模型文件(同上系统的输入和输出必须由 Connections库中的In1和Out1模块来定义)得到线性化模型的状态参数A、B、C和D,它们的调用格式为 [A,B,C,D]=linmod(‘model’,x,u,pert,xpert,upert,p1,…,p10) [A,B,C,D]=linmod2(‘model’,x,u,pert,apert,bpert,cpert,dpert,p1,…,p10); 由linmod2( ) 所得线性模型比linmod( )准确,当然所需的运行时间也更多。 对于线性系统上面的调用格式可简写为 [A,B,C,D]=linmod(‘model’) [A,B,C,D]=linmod2(‘model

文档评论(0)

kanghao1 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档