您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > 动态仿真集成环境-Simulink3_08
1第6章动态仿真集成环境-Simulink本章内容(1)注意区分书中Simulink库浏览窗口与Simulink模块库的区别;(2)熟悉Simulink模块库和Simulink附加模块库中常用标准模块的功能及其应用;(3)利用Simulink标准模块在用户模型窗口中建立控制系统仿真模型;(4)熟悉利用Simulink进行系统仿真的两种仿真方法:菜单法和行命令法;(5)仿真算法和参数以及常用标准模块参数的设置;(6)仿真结果的三种处理方法,并注意输出接口模块(Out1)和将数据输出到工作空间模块(ToWorkspace)的不同用法及其利用它们输出信号时的仿真参数的设置;(7)利用MATLAB求解非线性系统的线性化模型;(8)熟悉子系统的两种建立方法:菜单法和模块法,以及条件子系统的应用(9)模型封装模板编辑器的参数设置及系统模型的封装步骤。26.4离散系统的仿真Simulink具有仿真离散(采样数据)系统的能力。模型可以是多采样率的,也就是说,它们可以包含有以不同的速率采样的模块。模型还可以是既包含有离散模块,又包含有连续模块的混合模型。在离散模块中均包含一个采样时间(Sampletime)参数设定栏,见图6-52所示离散传递函数模块(DiscreteTransferFcn)的参数设置对话框。图6-523采样时间参数设定离散模块状态改变的采样时间,通常,采样时间被设成标量变量,然而,它也可以通过在该参数域中指定一个包含有两个元素的向量来指定一个时间偏移量。例如若仅在采样时间(Sampletime)参数设定栏填写一个标量参数,那么它就是采样时间。若在此栏中填写二元向量[Ts,offset],那么该量的第一个元素指定采样时间Ts,第二个元素设置偏移时间offset,实际采样时间为t=n*Ts+offset。在此,n为整数,offset是绝对值小于采样时间Ts的实数。若要求模型必须在某时刻更新,或要求一些离散模块必须比另外一些离散模块更新得早一些或晚一些时,就必须借助offset的设置来实现。41.纯离散系统的仿真纯离散系统可使用任何一种积分算法进行仿真,而不会影响输出结果。若只要采样瞬间的输出数据,那么应把最小步长设置得比最大的采样间隔大例6-12设人口变化的非线性离散系统的差分方程为其中k表示年份,p(k)为某一年的人口数目,p(k-1)为上一年的人口数目。如果设人口初始值p(0)=200000,人口繁殖速率r=1.05,新增资源所能满足的个体数目N=1000000,要求建立此人口动态变化系统的系统模型,并分析人口数目在0至100年之间的变化趋势。])1(1)[1()(Nkpkrpkp5图6-536图6-5472.离散—连续混合系统仿真由于Simulink的每个离散模块都有一个内置的输入采样器和输出零阶保持器,故连续模块和离散模块混用时,它们之间可直接连接。在仿真时,离散模块的输入输出每个采样周期更新一次,即在采样间隔内它的输入输出保持不变;而连续模块的输入输出每个计算步长更新一次。仿真算法可以采用前面介绍过的任何一种。83.多频采样系统的仿真多频采样系统包含有不同采样速率的离散模块,在Simulink中,多频采样系统和多频采样-连续混合系统的建模与仿真都可以进行。例6-13对图6-55所示双速率采样系统进行仿真。图6-559解(1)离散传递函数模块复制于离散系统模块库(Discrete)中,设两个离散传递函数模块的采样时间和偏离时间分别为[1,0.1]和[0.7,0],并把两个离散模块的标题分别改为“Tf=1,offset=0.1”和“Tf=0.7,offset=0”,如图6-55所示;(2)把阶跃函数的阶跃时刻设置为0;(3)Format|Sampletimecolor命令可以用颜色显示出两个模块采样时间的不同;(4)运行以下指令,可得图6-61所示曲线。[t,x,y]=sim(‘ex6_13’,3);stairs(t,y)legend(‘y1’,‘y2’)106.5仿真系统的线性化模型在一般的非线性系统分析中,常需要在平衡点处求系统的线性化模型,同样利用Simulink提供的基本函数,也可对非线性系统进行线性化处理。111.平衡点的确定利用Simulink提供的trim()函数可根据系统的模型文件来求出系统的平衡点,但在绘制Simulink模型时注意首先应该将系统的输入和输出用输入/输出接口模块(In1/Out1)来表示。该函数的调用格式如下[x,u,y,dx]=trim(‘model’,x0,u0,y0,ix,iu,iy)12由于该函数是通过极小化的算法来求出系统的平衡点,所以有时不能保证状态向量的变化率等于零。也即除非问题本身的极小值唯一,否则不能保证所求的平衡点是最佳的,因此,若想寻找全局最佳平衡点,必须多试几组初始值。当系统有不连续状态时,trim()函数一般不适用,而trim4()函数也许能给出较好的结果。对于以上函数的调用,也可写成如下的格式[x,u,y,dx]=trim(‘model’)这时会在默认的输入与输出下求出系统的平衡点来,这样的方法尤其对线性系统是有效的。132.连续系统的线性化模型利用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)14由linmod2()所得线性模型比linmod()准确,当然所需的运行时间也更多。对于线性系统上面的调用格式可简写为[A,B,C,D]=linmod(‘model’)[A,B,C,D]=linmod2(‘model’)153.离散系统的线性化模型Simulink提供的函数dlinmod()能够从非线性多频率采样离散--连续混和系统中提取一个在任何给定的采样周期Ts下的近似线性模型。当Ts取零时,就可得到近似的连续线性模型,否则,得到离散线性模型。该指令的一般调用格式为[Ad,Bd,Cd,Dd]=dlinmod(‘model’,Ts,x,u,pert,xpert,upert,p1,…,p10)其中Ts为指定的采样周期,其它参数同连续系统中。16在原系统稳定的前提下,若Ts是原系统所有采样周期的整数倍,则由dlinmod()函数所得线性模型在Ts采样点上与原系统有相同的频率响应和时间响应,即便在上述条件不满足的情况下,该指令仍可能给出有效的线性化模型。当Ts=0时,若Ad的所有特征根在[s]左半平面,则系统稳定,当Ts0时,Ad特征根在[z]平面的单位圆内,则系统稳定。如果原系统不稳定或Ts不是原系统采样周期的整数倍,所得Ad,Bd有可能是复数。即便如此,Ad的特征根仍可能为原系统的稳定性提供相当的信息。利用函数dlinmod()可以把系统从一种采样周期模型变换到另一种采样周期下的模型,可以把离散模型变成连续模型,也可以把连续模型变成离散模型。17例6-14求图6-57所示非线性系统的平衡工作点,及在平衡工作点附近的线性模型。图6-57单输入—双输出非线性系统18解(1)饱和非线性模块(Saturation)图6-58饱和非线形模块参数对话框19②在MATLAB指令方式下,运行以下指令可求出平衡点。x=[0;0;0];u=0;y=[1;1];ix=[];%不固定任何状态iu=[];%不固定输入iy=[1;2];%固定输出y(1)和y(2)[x,u,y,dx]=trim('ex6_14',x,u,y,ix,iu,iy);x结果显示:x=0.00000.53800.500020③在MATLAB指令方式下运行以下命令可得到系统在平衡工作点附近的线性模型[A,B,C,D]=linmod('ex6_14');[num,den]=ss2tf(A,B,C,D);printsys(num,den,'s')结果显示:num(1)/den=-8.8818e-016s^2+1s+1--------------------------------s^3+2.4s^2+2.4s+2num(2)/den=s^3+2.4s^2+2.4s+1----------------------------s^3+2.4s^2+2.4s+221例6-15在滑艇的运行过程中,滑艇主要受到如下作用力的控制:滑艇自身的牵引力F,滑艇受到的水的阻力f。其中水的阻力,v为滑艇的运动速度。由运动学的相关定理可知,整个滑艇系统的动力学方程为:其中m为滑艇的质量。由滑艇系统的动力学方程可知,此系统为一非线性系统。假设滑艇的质量m=1000kg,下面来建立此系统的Simulink模型并进行线性分析。vvf2))((12vvFmv22解(1)滑艇速度控制系统的模型建立与仿真根据上式建立图6-59所示仿真框图;图6-59滑艇速度控制系统模型框图23图6-60滑艇系统仿真结果由仿真曲线可知,滑艇在牵引力F(值1000)的作用下,速度在经过80s左右的时后,由0上升并稳定在33km/h。24(2)滑艇速度控制器系统的线性化对于滑艇速度控制器系统而言,如果要在比赛中获得胜利,则滑艇必须在尽可能短的时间内达到最大速度。设此速度控制器所能达到的最大速度将为100km/h。而在前面所提供的滑艇牵引力为1000时,能达到的最大速度仅为33km/h,故需要重新设置合适的牵引力对滑艇速度控制器进行操纵。为使滑艇速度控制系统的实现变得比较容易,需要设计相应的线性控制器对滑艇的速度进行控制,使其在某个工作点附近与原来滑艇速度控制器的作用基本一致。25既然滑艇速度最大值要求为100km/h,因此对滑艇速度控制系统进行线性化时,希望此系统能够使滑艇的速度基本稳定在最大速度处。换句话说,系统的工作点应该选择为使速度达到100km/h时的系统输入与系统状态。由于对非线性系统进行线性化表示需要给出系统所在的操作点(即平衡点),因此在对滑艇速度控制系统进行线性化之前,需要获得滑艇速度稳定在100km/h处的系统平衡点。按照如下步骤可以获得滑艇速度控制系统的平衡点:①修改系统模型ex6_15,并另存为ex6_15_1,如图6-61所示。其中In1、Out1分别表示系统的输入与输出。26②求取滑艇速度控制系统在此工作点处的平衡点在MATLAB命令窗口中,利用以下命令获得系统在输出为100km/h时的平衡状态:[x,u,y,dx]=trim('ex6_15_1',[],[],100,[],[],1)结果显示:x=100u=9900y=100dx=0图6-6127函数trim()用来求取滑艇速度控制系统在速度稳定在100km/h时的平衡点。x=100表示滑艇控制系统中的状态变量,即滑艇速度v=100;u=9900表示滑艇在平衡点处的系统输入值,即滑艇牵引力F=9900:y=100表示滑艇在平衡点处的系统输出,即滑艇速度v=100。28③求取滑艇速度控制系统的线性系统描述在获得使滑艇速度稳定在100km/h处时系统的平衡点x、u与y之后,在MATLAB命令窗口中使用linmod命令便可以获得相应的线性系统描述,如下所示:[A,B,C,D]=linmod('ex6_15_1',x,u)结果显示:A=-0.1990B=1.0000e-003C=1.0000D=029从而得到线性化后系统的状态空间描述。其中A,B,C与D是线性系统的状态空间矩阵。故相应的线性系统的状态空间描述方程为注意此状态空间描述是在系统平衡点x=100,u=9900以及y=100处附近的近似表示。此时系统为稳定的系统,但是由于矩阵A的值为负值,故当系统在其他的工作点处可能不稳定。xyuxx001.0199.0
本文标题:动态仿真集成环境-Simulink3_08
链接地址:https://www.777doc.com/doc-911991 .html