1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 控制系统数学模型的matlab仿真 第7章 控制系统的MATLAB仿真

控制系统数学模型的matlab仿真 第7章 控制系统的MATLAB仿真

时间:2019-06-20 10:20:06

相关推荐

控制系统数学模型的matlab仿真 第7章 控制系统的MATLAB仿真

《第7章 控制系统的MATLAB仿真》由会员分享,可在线阅读,更多相关《第7章 控制系统的MATLAB仿真(101页珍藏版)》请在人人文库网上搜索。

1、1,本章主要教学内容在MATLAB中描述控制系统的数学模型系统方框图模型的简化及应用控制系统的时域分析控制系统的频域分析利用MATLAB语言进行仿真编程的具体应用,第7章,控制系统的MATLAB仿真,2,本章教学目的及要求熟悉MATLAB的基本应用掌握利用MATLAB建立数学模型的方法熟悉控制系统的时域和频域分析掌握MATLAB的仿真编程应用,第7章,控制系统的MATLAB仿真,3,7.1控制系统的模型表示MATLAB提供了数学模型的建立函数和各模型之间的转换功能函数,可以分别采用传递函数、零极点增益、状态空间以及动态结构图等4种数学模型来表示控制系统,前3种是用数学表达式描述的系统模型,每种。

2、模型都有连续系统及离散系统两种类别的表示;而动态结构图是基于传递函数的图形化形式,是采用MATLAB中提供的SIMULINK结构图来实现的。MATLAB中使用的数学模型之间的转换也很方便,使得采用MATLAB编制的程序更加简单、精炼而高效。,第7章,控制系统的MATLAB仿真,4,7.1.1系统的传递函数模型表示传递函数模型通常表示线性定常时不变系统(LTI),可以是连续的时间系统,也可以是离散的时间系统。对于离散的时间系统,其脉冲传递函数可表示为:,第7章,控制系统的MATLAB仿真,不论是连续的还是离散的时间系统,其传递函数的分子/分母多项式均按s或z的降幂来排列。在MATLAB中可直接采。

3、用分子/分母多项式系数构成的两个向量num与den来表示系统,即:,5,在MATLAB中,可用函数命令tf()来建立控制系统的传递函数模型,其调用格式和功能分别为:(1)sys=tf(num,den);(2)sys=tf(num,den,Ts);。(3)sys=tf(M);(4)tfsys=tf(sys);,第7章,控制系统的MATLAB仿真,6,第7章,7.1.2零极点增益模型当连续系统的传递函数表达式采用系统增益、系统零点与系统极点来表示时,称之为系统零极点增益模型。系统零极点增益模型是传递函数模型的一种特殊形式。离散系统的传递函数零极点增益模型:,控制系统的MATLAB仿真,7,第7章,。

4、在MATLAB里,连续与离散系统都可直接用向量z、p、k构成的矢量组z,p,k来表示系统,即:,控制系统的MATLAB仿真,8,第7章,在MATLAB中,可用函数命令zpk()来建立控制系统的零极点增益模型,其调用格式和功能分别为:(1)sys=zpk(num,den);(2)sys=zpk(num,den,Ts);(3)sys=zpk(M);(4)tfsys=zpk(sys);,控制系统的MATLAB仿真,9,7.1.3状态空间模型控制系统在主要工作区域内的一定条件下可近似为线性时不变(LTI)模型,连续LTI对象系统总是能用一阶微分方程组来表示,写成矩阵形式即为状态空间模型:,第7章,控制。

5、系统的MATLAB仿真,其中:式(a)系统的状态方程,是由n个一阶微分方程组成的微分方程组;式(b)系统的输出方程,是由1个线性代数方程组成的;,10,第7章,离散系统的状态空间模型可表示为:,控制系统的MATLAB仿真,式中:U系统的控制输入向量;X系统的状态向量;Y系统的输出向量;k特定时刻的采样点;A状态矩阵,由控制对象的参数决定;B控制矩阵;C输出矩阵;D直接传输矩阵。,11,MATLAB中的函数ss()可用来建立控制系统的状态空间模型,或者将传递函数模型与零极点增益模型转换为系统状态空间模型。ss()函数的调用格式为:(1)sys=ss(a,b,c,d);(2)sys=ss(a,b,。

6、c,d,Ts);(3)sys=ss(d);该函数等价于sys=ss(,d)。(4)sys_ss=ss(sys);,第7章,控制系统的MATLAB仿真,12,第7章,【例7.1】已知某系统的状态空间表达式为:,控制系统的MATLAB仿真,试采用MATLAB语言求出该系统的状态空间模型。,13,解:采用状态空间模型表示时,可在MATLAB命令窗口中输入以下命令:A=1000;0100;0010;-1-50-2;B=0;0;0;1;C=3210;D=0;sys=ss(A,B,C,D)上述指令执行后可得指定系统的状态空间模型为:a=x1x2x3x4x11000 x0 x30010 x4-1-5。

7、0-2,第7章,控制系统的MATLAB仿真,14,第7章,b=u1x10 x20 x30 x41c=x1x2x3x4y13210d=u1y10Continuous-timemodel.,控制系统的MATLAB仿真,15,7.1.4系统不同模型间的相互转换在MATLAB6.1的信号处理工具箱与控制系统工具箱中,提供了传递函数模型、零极点增益模型与状态空间模型之间转换的函数:ss2tf(),ss2zp(),tf2ss(),tf2zp(),zp2ss(),zp2tf()。这些函数之间的转换功能如表7-1所示。,第7章,控制系统的MATLAB仿真,16,第7章,控制系统的MATLAB仿真,表7-1数学。

8、模型之间的转换函数及其功能,17,【例7.2】已知某系统的传递函数为:,第7章,控制系统的MATLAB仿真,试用MATLAB语言求出该系统的传递函数模型、状态空间模型和零极点增益模型。解:(1)求系统的传递函数模型在MATLAB命令窗口输入以下命令:num=12241220;den=24622;sys=tf(num,den),18,第7章,执行以上语句后可得系统的传递函数模型为:12s3+24s2+12s+20-2s4+4s3+6s2+2s+2(2)求系统的状态空间模型该系统的状态空间模型可以通过MATLAB的模型转换函数来完成。在MATLAB命令窗口输入以下命令:a,b,c,d=tf2ss(。

9、num,den);sys=ss(a,b,c,d),控制系统的MATLAB仿真,19,执行完上述语句后,可得系统的状态空间模型的状态矩阵a,系统控制矩阵b,系统输出矩阵c,系统直接传输矩阵d分别为:a=x1x2x3x4x1-2-3-1-1x21000 x30100 x40010,第7章,控制系统的MATLAB仿真,20,第7章,b=u1x11x20 x30 x40c=x1x2x3x4y1612610d=u1y10Continuous-timemodel.,控制系统的MATLAB仿真,21,由以上数据可写出系统的状态空间模型为:,第7章,控制系统的MATLAB仿真,22,第7章,(3)求系统的零极。

10、点增益模型该系统的零极点增益模型也可以通过MATLAB的模型转换函数来完成。在MATLAB命令窗口输入以下命令:z,p,k=tf2zp(num,den);sys=zpk(z,p,k)执行以上语句后可得系统的零极点增益模型为:Zero/pole/gain:6(s+1.929)(s2+0.07058s+0.8638)-(s2+0.08663s+0.413)(s2+1.913s+2.421),控制系统的MATLAB仿真,23,7.2环节方框图模型的化简7.2.1环节串联连接的化简多个环节串联的连接形式是控制系统最基本的组成结构形式之一。控制系统的环节串联及其化简就是模块方框图模型的串联及其化简。可以。

11、用MATLAB的函数命令series()将串联模块进行等效变换。使用series()函数命令不必做多项式的乘除运算即可实现两个环节传递函数的串联连接。如果令sys1=tf(num1,den1),sys2=tf(num2,den2),其命令格式为:sys=series(sysl,sys2),第7章,控制系统的MATLAB仿真,24,如果已知两个环节的状态空间模型矩阵组分别为:(a1,b1,c1,d1)与(a2,b2,c2,d2),则求两个环节串联连接等效系统状态空间模型a,b,c,d矩阵组的命令格式为:a,b,c,d=series(a1,bl,cl,dl,a2,b2,c2,d2)series()。

12、函数命令还可以将多个环节按两两串联的形式多次递归调用加以连接,进行等效化简。sys=series(sysl,sys2)命令可以用命令sys=sys1*sys2*sysn取代,不仅省掉“series()”字符,且可以实现多个环节的串联等效传递函数的求取。,第7章,控制系统的MATLAB仿真,25,第7章,【例7.3】已知双闭环调速系统电流环内的前向通道3个模块传递函数分别为:,控制系统的MATLAB仿真,试求串联连接的等效传递函数及其等效状态空间模型。,26,解:(1)根据MATLAB程序设计的基本方法和函数命令series(),可以编写出MATLAB程序如下:n1=0.01281;d1=0.0。

13、40;sys1=tf(n1,d1);n2=30;d2=0.001671;sys2=tf(n2,d2);n3=2.5;d3=0.01281;sys3=tf(n3,d3);sys=sys1*sys2*sys3s1=ss(sys1);s2=ss(sys2);s3=ss(sys3);sys12=series(s1,s2);sys123=series(sys12,s3),第7章,控制系统的MATLAB仿真,27,第7章,控制系统的MATLAB仿真,(2)在MATLAB命令窗口输入程序名,程序运行后得到如下电流环内前向通道的等效传递函数及等效状态空间模型:Transferfunction:0.96s+75。

14、-8.55e-007s3+0.0005788s2+0.04sa=x1x2x3x1-78.1322460 x20-598.8800 x3000,28,b=u1x10 x240.96x34c=x1x2x3y112.2100d=u1y10Continuous-timemodel.,第7章,控制系统的MATLAB仿真,29,第7章,7.2.2环节并联连结的化简环节并联是指多个环节的输入信号相同,所有环节输出的代数和为其总输出。采用parallel()函数命令可以等效化简两个环节的并联连接。parallel()函数命令调用格式为:num,den=parallel(numl,denl,num2,den2)。

15、该命令已由命令sys=sysl+sys2+sysn所取代,省掉了“parallel()”字符,且可以实现多个环节的并联等效处理。parallel()函数命令调用格式还有:a,b,c,d=parallel(a1,bl,cl,dl,a2,b2,c2,d2),控制系统的MATLAB仿真,30,第7章,【例7.4】已知两个环节的传递函数分别为:试求两环节并联连接等效传递函数的num与den向量及等效的状态空间模型。,控制系统的MATLAB仿真,31,第7章,解:(1)采用函数命令parallel(),给出MATLAB程序如下:num1=1;den1=12;sys1=tf(num1,den1);num2。

16、=21;den2=112;sys2=tf(num2,den2);s1=ss(sys1);s2=ss(sys2);sys=sys1+sys2sys12=parallel(s1,s2)(2)在MATLAB命令窗口运行程序后得到等效传递函数及等效状态空间模型为:Transferfunction:3s2+6s+4-s3+3s2+4s+4,控制系统的MATLAB仿真,32,第7章,a=x1x2x3x1-200 x20-1-1x3020b=u1x11x22x30c=x1x2x3y1110.25d=u1y10,控制系统的MATLAB仿真,33,7.2.3环节反馈连结的化简利用MATLAB中的feedback。

17、()函数命令可将两个环节按反馈形式进行连接后求其等效传递函数。feedback()函数命令形式:(1)G=feedback(G1,G2,sign);(2)a,b,c,d=feedback(a1,b1,c1,d1,a2,b2,c2,d2,sign)(3)num,den=feedback(num1,den1,num2,den2,sign);,第7章,控制系统的MATLAB仿真,34,第7章,【例7.5】已知晶闸管-直流电机单闭环调速系统的动态结构图如图7-4所示,求该闭环系统的传递函数。,控制系统的MATLAB仿真,图7-4直流单闭环调速系统,35,第7章,解:(1)给出MATLAB程序如下:n1。

18、=1;d1=0.0171;s1=tf(n1,d1);n2=1;d2=0.0750;s2=tf(n2,d2);sys1=feedback(s1*s2,1)n3=0.0491;d3=0.0880;s3=tf(n3,d3);n4=44;d4=0.001671;s4=tf(n4,d4);n5=1;d5=0.1925;s5=tf(n5,d5);n6=0.01178;d6=1;s6=tf(n6,d6);sysq=sys1*s3*s4*s5;sys=feedback(sysq,s6),控制系统的MATLAB仿真,36,第7章,(2)程序运行结果为:Transferfunction:1-0.001275s2+。

19、0.075s+1Transferfunction:2.156s+44-3.607e-008s4+2.372e-005s3+0.001299s2+0.04234s+0.5183,控制系统的MATLAB仿真,37,第7章,由以上运算数据可得单闭环系统的小闭环的传递函数为:单闭环系统的闭环的传递函数(略去分母的项)为:,控制系统的MATLAB仿真,38,第7章,7.3控制系统时域分析的MATLAB实现7.3.1概述1系统时域响应仿真的主要问题时域分析法是根据系统微分方程用拉普拉斯变换求解系统的动态响应。典型的动态过程响应有单位阶跃响应、单位斜坡响应、单位加速度响应与单位脉冲响应等。时域分析的另外一个。

20、目的是求解响应的性能指标。通常将控制系统跟踪或复现阶跃输入信号响应的指标作为系统控制性能的指标。阶跃响应的一般性能指标有:峰值时间tp、超调量%、调节时间ts、及稳态误差ess。,控制系统的MATLAB仿真,39,第7章,控制系统的MATLAB仿真,2时域分析的MATLAB实现时域响应的MATLAB仿真方法有两种,一种是在MATLAB的函数指令方式下进行时域仿真;另一种是在SIMULINK窗口菜单操作方式下进行时域仿真。对于连续系统,可利用MATLAB提供的求取单位阶跃响应函数step()、单位脉冲响应函数impulse()、零输入响应函数initial()等处理系统的响应。对于离散系统,可利。

21、用MATLAB提供的单位阶跃响应函数dstep()、单位脉冲响应函数dimpulse()、零输入响应函数dinitial()等来处理。,40,第7章,7.3.2连续系统的单位阶跃响应利用step()函数可求出连续系统的单位阶跃响应,该命令的调用格式和功能如下:(1)step(sys);(2)step(sys,t);(3)step(sysl,sys2,,sysn);(4)y,t,x=step(sys);求出了系统的阶跃响应曲线,要分析系统的稳定性能,还需要计算系统的性能指标。包括峰值时间tp、超调量%、调节时间ts、及稳态误差ess等。这些参数可以直接从图上读取,也可通过MABLAB的M函数来求。

22、取。,控制系统的MATLAB仿真,41,第7章,下面介绍利用M函数来计算性能指标。定义该指标函数为terg函数,其程序语句如下:functionmp,tp,ess,b1,b2,sigma,n,pusi,T,f=targ(y,t)mp,tf=max(y);ct=length(t);mp;tp=t(tf);tm=max(tf);yss=(ct);q=1;m=q-1;whilem3,控制系统的MATLAB仿真,42,第7章,fora=(tm/100):0.01:tmj=0:a:tm;fori=1:length(j);if(y(i+1)-y(i)0m=m+1;pm(m)=y(i);tp(m)=t(i)。

23、;endendendendyss=y(ct);ess=1-yss;,控制系统的MATLAB仿真,43,第7章,b1=pm(1)-yss;b2=pm(2)-yss;sigma=100*b1/yss;n=b1/b2;pusi=(b1-b2)/b1;T=(tp(2)-tp(1);f=1/Ttp=tp(1);上述程序中:mp为曲线的峰值;tp为峰值时间;ess为阶跃响应的余差;b1为第一峰值的超调量;b2为第二峰值的超调量;sigma为阶跃响应的超调量;n为阶跃响应的衰减比;pusi为阶跃响应的衰减率;T为衰减振荡周期;f振荡频率。,控制系统的MATLAB仿真,44,第7章,7.3.3连续系统的单位脉。

24、冲响应求连续系统单位脉冲响应的函数为impulse(),该函数命令的调用格式和功能如下:(1)impulse(sys);(2)impulse(sys,t);(3)impulse(sysl,sys2,,sysN);(4)y,t,x=impulse(sys);【例7.6】已知单位负反馈系统前向通道的传递函数为:,试绘出系统的单位阶跃响应和脉冲响应曲线。并计算系统的阶跃响应性能指标。,控制系统的MATLAB仿真,45,第7章,解:(1)求阶跃响应曲线在命令窗口输入:num=4;den=110;sys=tf(num,den);closys=feedback(sys,1);%求闭环传递函数step(cl。

25、osys)可得如图7-5所示的阶跃响应曲线。,控制系统的MATLAB仿真,46,第7章,控制系统的MATLAB仿真,图7-5系统的阶跃响应曲线,47,第7章,(2)求脉冲响应曲线在命令窗口继续输入:impulse(closys);可得如图7-6所示的脉冲响应曲线。,控制系统的MATLAB仿真,图7-6系统的脉冲响应曲线,48,第7章,(3)求系统的阶跃响应性能指标首先在MATLAB程序编辑窗口编辑前面给出的targ函数,并保存函数名为targ.m。然后继续在MATLAB命令窗口输入以下语句:y,t=step(slosys);mp,tp,ess,b1,b2,sigma,n,pusi,T,f=ta。

26、rg(y,t)运行完上述语句后,可得以下性能指标:mp=1.4441;tp=1.6062ess=-0.0017;b1=0.4425b2=0.0857;sigma=44.1728n=5.1651;pusi=0.8064T=3.2125;f=0.3113,控制系统的MATLAB仿真,49,第7章,7.3.4连续系统的零输入响应求连续系统零输入响应的函数为initial(),该函数命令的格式如下:(1)y,t,x=initial(sys);(2)initial(sys,x0);(3)initial(sys,x0,t);(4)initial(sysl,sys2,,sysN,x0)。,控制系统的MATL。

27、AB仿真,50,第7章,7.4控制系统频域分析的MATLAB实现7.4.1概述1控制系统频域响应仿真的主要问题对于频域分析,MATLAB仿真就是用先进的计算机仿真技术来精确绘制Bode图、Nyquist曲线图、Nichols曲线图等三种曲线,并计算系统的频域性能指标:剪切频率(也叫截止频率)、-穿越频率、相角稳定裕度、幅值稳定裕度,以便研究系统控制过程的稳定性、快速性及稳态精度等性能。,控制系统的MATLAB仿真,51,第7章,2MATLAB中频域分析的实现方法频域分析在经典控制里占有重要的地位。借助于MATLAB软件,运行它所提供的频率分析函数,能够方便、简单、快捷地绘制Bode图、Nyqu。

28、ist曲线和Nichols图,并计算出频域性能指标,还可以借助于这些曲线对系统进行分析。应用MATLAB提供的上述频域仿真函数与其他函数命令、语句,编制成MATLAB程序,这种在MATLAB的指令方式下进行频域仿真同样是最常用的实现方法。,控制系统的MATLAB仿真,52,第7章,7.4.2求连续系统的Bode图1求连续系统Bode图的函数在MATLAB中求连续系统Bode图的函数为bode(),该函数命令的调用格式和功能为:(1)mag,phase,w=bode(sys);(2)bode(sys);(3)bode(sys,w);(4)bode(sysl,sys2,sysn)或bode(sys。

29、l,sys2,,sysn,w);,控制系统的MATLAB仿真,53,第7章,2求离散系统Bode图的函数dbode()求离散系统Bode图的函数为dbode(),该函数命令的调用格式为:(1)mag,phase,w=dbode(a,b,c,d,Ts)(2)mag,phase,w=dbode(a,b,c,d,Ts,iu)(3)mag,phase,w=dbode(a,b,c,d,Ts,iu,w)或mag,phase,w=dbode(num,den,Ts,w)(4)mag,phase,w=dbode(num,den,Ts),控制系统的MATLAB仿真,54,第7章,7.4.3绘制系统Nyquist曲。

30、线的函数计算或绘制系统Nyquist曲线的函数为nyquist(),该函数命令的调用格式为:(1)re,im,w=nyquist(sys)(2)nyquist(sys)(3)nyquist(sys,w)(4)nyquist(sysl,sys2,sysn)(5)nyquist(sysl,sys2,sysn,w),控制系统的MATLAB仿真,55,第7章,如果系统为离散系统,则相应的nyquist函数为dnyquist(),函数命令调用为:(1)re,im,w=dnyquist(a,b,c,d,Ts)(2)re,im,w=dnyquist(a,b,c,d,Ts,iu)(3)re,im,w=dnyq。

31、uist(a,b,c,d,Ts,iu,w)(4)re,im,w=dnyquist(num,den,Ts)(5)re,im,w=dnyquist(num,den,Ts,w),控制系统的MATLAB仿真,56,第7章,7.4.4求连续系统Nichols曲线的函数求连续系统Nichols曲线的函数为nichols(),该函数命令的调用格式为:(1)mag,phase,w=nichols(sys)(2)nichols(sys)(3)nichols(sys,w)(4)nichols(sysl,sys2,sysn)(5)nichols(sysl,sys2,,sysn,w),控制系统的MATLAB仿真,57。

32、,第7章,控制系统的MATLAB仿真,7.4.5求系统幅值裕度与相位裕度求系统幅值裕度与相位裕度的函数为margin(),该函数命令的调用格式为:(1)Gm,Pm,Wcp,Wcg=margin(sys);(2)Gm,Pm,Wcp,Wcg=margin(mag,phase,w)(3)margin(sys);(4)margin(mag,phase,w);对于离散时间系统,可以先用函数dbode()计算频率响应,然后再调用margin()函数,即用margin(mag,phase,w)函数命令,再求系统性能指标或绘制Bode图。,58,第7章,控制系统的MATLAB仿真,7.5利用MATLAB语言进。

33、行编程仿真的应用7.5.1面向传递函数的线性系统仿真对线性连续系统进行单输入、单输出的仿真,可以将用户输入的系统传递函数模型转化为仿真计算模型,再应用数值积分法进行处理。采用四阶龙格库塔法保证系统仿真过程中具备一定的精度和性能指标要求,并可实现重复运行,便于研究参数的变化对系统动态性能的影响,且运行过程直观、形象,修改参数容易。,59,第7章,控制系统的MATLAB仿真,1仿真系统的典型结构框图如图7-11所示的典型闭环系统结构,有:,图7-11典型闭环系统结构图,60,第7章,控制系统的MATLAB仿真,2仿真程序框图与实现(1)程序框图的描述如图7-12所示。(2)程序设计的实现用MATL。

34、AB语言编写的面向传递函数的线性系统仿真程序定义为CSS1(ControlSystemSimulation1)。,61,第7章,图7-12面向传递函数的线性系统仿真框图,62,第7章,控制系统的MATLAB仿真,设源程序名为CSS1.m,保存为M文件。1)输入数据a=;%n+1维分母系数向量c=;%m+1维分子系数向量X0=;%状态向量初值V=;%反馈系数n=;%系统阶次T0=;%起始时间Tf=;%终止时间h=;%计算步长R=r;%阶跃输入函数幅值,63,第7章,控制系统的MATLAB仿真,2)形成开、闭环系数阵c=c/a(1);%首一化处理a=a/a(1);A=a(2:n+1);A=rot9。

35、0(rot90(eye(n-1,n);-fliplr(A);%形成能控标准形B=zeros(1,n-1),1;%形成输入阵Bm1=length(c);%分子系数向量维数m+1C=fliplr(c),zeros(1,n-m1);%形成输出阵CAb=A-B*C*V;%形成闭环系数阵AbX=X0;y=0;t=T0;%设初值,准备递推运算,64,第7章,控制系统的MATLAB仿真,3)运算求解N=round(Tf-T0)/h;%确定输出点数fori=1:N%四阶龙格-库塔法K1=Ab*X+B*R;K2=Ab*(X+h*K1/2)+B*R;K3=Ab*(X+h*K2/2)+B*R;K4=Ab*(X+h*。

36、K3)+B*R;%求各次斜率KX=X+h*(K1+2*K2+2*K3+K4)/6;%求状态y=y,C*X;%求输出并以向量形式保存t=t,t(i)+h;%输出对应时刻以向量形式保存end,65,第7章,控制系统的MATLAB仿真,4)输出结果t,y%输出数据形式结果plot(t,y)%输出曲线形式结果以上即为采用MATLAB语言实现面向典型闭环系统数字仿真的程序,可编辑为CSS1.m文件存储起来。使用时,只要进入到MATLAB命令窗口,按要求输入系统参数和运行参数,再调用该文件,即可得到系统的仿真结果。,66,第7章,控制系统的MATLAB仿真,该程序中用到了几个MATLAB特殊功能函数,简要。

37、说明如下:eye(m,n)产生mn型I阵,即主对角元素均为1,其余元素为零的长方阵length()求取括号内向量的维数zeros(m,n)产生mn型零阵rot90()将括号内矩阵左旋90fliplr()将括号内矩阵或向量左右翻转round()对括号内运算取整plot(t,y)打印以t为横轴,y为纵轴的y(t)曲线,67,第7章,控制系统的MATLAB仿真,7.5.2面向结构图的线性系统仿真1仿真程序框图与程序实现(1)程序框图的描述当控制系统的数学模型以动态结构图的形式给出时,可以用以下的方法处理,如图7-15所示。(2)程序设计的实现采用MATLAB语言编程,程序名为CSS2.M,保存为M文。

38、件。,68,图7-15面向结构图的线性系统的仿真框图,第7章,69,第7章,控制系统的MATLAB仿真,输入系统原始数据:P%输入各环节参数WIJ=%输入连接阵非零元素n=;%环节个数(系统阶次)Y0=;%阶跃输入幅值Yt0=%各环节输出初值h=;%计算步长L1=;%每隔L1个点打印一次T0=;%起始时间Tf=;%终止时间nout=Nout;%输出环节编号,70,第7章,控制系统的MATLAB仿真,程序处理开始:A=diag(P(:,1);B=diag(P(:,2);%求开环系统系数阵C=diag(P(:,3);D=diag(P(:,4);m=length(WIJ(:,1);%求非零元素个数W。

39、0=zeros(n,1);W=zeros(n,n);%建立初始W、W0阵fork=1:mif(WIJ(k,2)=0);W0(WIJ(k,1)=WIJ(k,3);%求W0阵elseW(WIJ(k,1),WIJ(k,2)=WIJ(k,3);%求W阵endend,71,第7章,控制系统的MATLAB仿真,Q=B-D*W;Qn=inv(Q);%求Q和Q逆阵R=C*W-A;V1=C*W0;%求R,V1阵Ab=Qn*R;b1=Qn*V1;%形成闭环系数阵Y=Yt0;y=Y(nout);t=T0;%置初值N=round(Tf-T0)/(h*L1);%总输出点数fori=1:N;%每循环一次,输出一点数据fo。

40、rj=1:L1;%每输出点之间计算L1次K1=Ab*Y+b1*Y0;K2=Ab*(Y+h*K1/2)+b1*Y0;K3=Ab*(Y+h*K2/2)+b1*Y0;K4=Ab*(Y+h*K3)+b1*Y0;Y=Y+h*(K1+2*K2+2*K3+K4)/6;%龙格库塔法求解方程end,72,第7章,控制系统的MATLAB仿真,y=y,Y(nout);%保存输出环节动态响应值t=t,t(i)+h*L1;%保存时间向量endt,y%输出响应数据plot(t,y)%输出响应图形程序中用到MATLAB特殊功能函数diag(),其作用是产生以括号内向量元素为主对角元素的对角阵;P(:,I)用于取P阵中第I列。

41、的所有元素作为单独列向量。,73,第7章,控制系统的MATLAB仿真,7.5.3线性系统的离散相似法仿真1仿真框图描述离散相似法仿真线性系统的程序框图如图7-18所示。2仿真程序设计本程序定义为CSS3.M,输入系统各环节参数阵P,连接阵WIJ,运行参数n,h,L1,T0,Tf,阶跃输入幅值Y0,输出环节编号nout等,方法同CSS2程序。,74,图7-18离散相似法仿真线性系统程序框图,第7章,75,第7章,控制系统的MATLAB仿真,CSS3仿真程序设计如下:A=diag(P(:,1);B=diag(P(:,2);%求开环系统系数阵C=diag(P(:,3);D=diag(P(:,4);m。

42、=length(WIJ(:,1);%求非零元素个数W0=zeros(n,1);W=zeros(n,n);%建立初始W、W0阵fork=1:mif(WIJ(k,2)=0);W0(WIJ(k,1)=WIJ(k,3);%求W0阵elseW(WIJ(k,1),WIJ(k,2)=WIJ(k,3);%求W阵endend,76,第7章,控制系统的MATLAB仿真,fori=1:nif(A(i,i)=0);%求积分或积分比例环节各系数FI(i)=1;FIM(i)=h*C(i,i)/B(i,i);FIJ(i)=h*h*C(i,i)/B(i,i)/2;FIC(i)=1;FID(i)=0;%求积分环节系数if(D(。

43、i,i)=0);%若为积分比例环节,修正系数FID(i)=D(i,i)/B(i,i);elseendelse%求惯性或惯性比例环节各系数FI(i)=exp(-h*A(i,i)/B(i,i);FIM(i)=(1-FI(i)*C(i,i)/A(i,i);FIJ(i)=h*C(i,i)/A(i,i)-FIM(i)*B(i,i)/A(i,i);,77,第7章,控制系统的MATLAB仿真,FIC(i)=1;FID(i)=0;%求惯性环节系数if(D(i,i)=0);%若为惯性比例环节,修正系数FIC(i)=C(i,i)/D(i,i)-A(i,i)/B(i,i);FID(i)=D(i,i)/B(i,i);。

44、elseendendendY=zeros(n,1);X=Y;y=0;Uk=zeros(n,1);Ub=Uk;t=T0;%置初值N=round(Tf-T0)/(h*L1);%计算总输出点数,78,第7章,控制系统的MATLAB仿真,fork=1:Nforl=1:L1Ub=Uk;%保存前一次输入值Uk=W*Y+W0*Y0;%求当前UkUdot=(Uk-Ub)/h;%求当前Uk的导数Uf=2*Uk-Ub;%求下一步的输入UfX=FI.*X+FIM.*Uk+FIJ.*Udot;%求状态向量Y=FIC.*X+FID.*Uf;%求输出endy=y,Y(nout);t=t,t(k)+h*L1;endt,yp。

45、lot(t,y),79,第7章,控制系统的MATLAB仿真,该程序用到了几个MATLAB语言中的特殊运算符:冒号符,用于生成行向量;=逻辑等号符,MATLAB中的规定写法;=逻辑不等号符,MATLAB中的规定写法;*点乘运算符,MATLAB中的规定写法,表示两个同维矩阵中各相应位置上的元素相乘运算。,80,第7章,控制系统的MATLAB仿真,7.5.4非线性系统离散相似法仿真1典型非线性环节的求解(1)饱和非线性环节:采用MATLAB语言来编制M函数如下,函数名为satu():functionUc=satu(Ur,S1)if(abs(Ur)=S1)if(Ur0)Uc=S1;elseUc=-S1。

46、;endelseUc=Ur;end,81,第7章,控制系统的MATLAB仿真,(2)死区非线性:采用MATLAB语言来编制M函数如下,函数名为dead():functionUc=dead(Ur,S1)if(abs(Ur)=S1)if(Ur0)Uc=Ur-S1;elseUc=Ur+S1;endelseUc=0;end,82,第7章,控制系统的MATLAB仿真,(3)滞环非线性:M函数名为backlash():functionUc,Ubb=backlash(Urb,Ur,Ucb,S1)if(UrUrb)if(Ur-S1)=Ucb)Uc=Ur-S1;elseUc=Ucb;elseif(UrUrb)i。

47、f(Ur-S1)=Ucb)Uc=Ur+S1;elseUc=Ucb;elseUc=Ucb;endendUbb=Ur;,83,第7章,控制系统的MATLAB仿真,非线性系统的离散相似法仿真程序命名为css4.m。根据上述分析可以画出CSS4程序框图如7-21所示。CSS4程序设计:输入数据:输入系统各环节参数阵P,连接阵WIJ,运行参数n,h,L1,T0,Tf,阶跃输入幅值Y0,输出环节编号nout(方法同CSS3),以及非线性标志向量Z,参数向量S。程序开始:求开环各系数阵A,B,C,D及连接关系矩阵W,W0(方法同CSS3);求取各环节离散系数FI(i),FIM(i),FIJ(i),FIC(i。

48、),FID(i)。,84,第7章,图7-21离散相似法仿真非线性系统程序框图,85,第7章,控制系统的MATLAB仿真,求解运行部分如下:Y=zeros(n,1);X=Y;y=0;Uk=zeros(n,1);Ubb=Uk;t=T0;N=round(Tf-T0)/(h*L1);fork=1:Nforl=1:L1Ub=Uk;Uk=W*Y+W0*Y0;fori=1:nif(Z(i)=0)if(Z(i)=1)Uk(i)=satu(Uk(i),S(i);end,86,第7章,控制系统的MATLAB仿真,if(Z(i)=2)Uk(i)=dead(Uk(i),S(i);endif(Z(i)=3)Uk(i),。

49、Ubb(i)=backlash(Ubb(i),Uk(i),Ub(i),S(i);endendendUdot=(Uk-Ub)/h;Uf=2*Uk-Ub;X=FI.*X+FIM.*Uk+FIJ.*Udot;Yb=Y;Y=FIC.*X+FID.*Uf;,87,第7章,控制系统的MATLAB仿真,fori=1:nif(Z(i)=0)if(Z(i)=4)Y(i)=satu(Y(i),S(i);endif(Z(i)=5)Y(i)=dead(Y(i),S(i);endif(Z(i)=6)Y(i),Ubb(i)=backlash(Ubb(i),Y(i),Yb(i),S(i);,88,第7章,控制系统的MATL。

50、AB仿真,endendendendy=y,Y(nout);t=t,t(k)+h*L1;endt,yplot(t,y),89,第7章,控制系统的MATLAB仿真,7.5.5采样控制系统仿真根据图7-25中所示的典型数字采样控制系统结构来分析采样控制系统的仿真方法。,图7-25采样控制系统结构图,90,第7章,控制系统的MATLAB仿真,【例7.13】采样控制系统如图7-31所示,数字控制器D(Z)按有纹波最小拍系统设计,取采样周期T=1秒,外部输入信号为单位阶跃函数r(t)=1(t),仿真该系统的动态响应过程。有纹波最小拍系统:,91,第7章,控制系统的MATLAB仿真,图7-31采样控制系统结。

51、构图,解:仿真该采样控制系统可以采用连续部分按环节离散化处理的方法,对数字控制器的仿真仍然采用离散化处理,后面连续的被控对象按连续系统的离散相似法仿真。,92,第7章,控制系统的MATLAB仿真,(1)根据框图编写如下的MATLAB程序,保存为CSS5.M。A=diag(P(:,1);B=diag(P(:,2);C=diag(P(:,3);D=diag(P(:,4);m=length(WIJ(:,1);W0=zeros(n,1);W=zeros(n,n);fork=1:mif(WIJ(k,2)=0);W0(WIJ(k,1)=WIJ(k,3);elseW(WIJ(k,1),WIJ(k,2)=WI。

52、J(k,3);endendmm=length(CC);nn=length(DD);E=zeros(nn,1);U=zeros(mm,1);,93,第7章,控制系统的MATLAB仿真,uk=0;ut=0;tt=0;ek=0;Y=zeros(n,1);N=round(Tf/T);fors=1:Nek=R-Y(nout);E=ek;E(1:nn-1);uk=-CC*U+DD*E;Y0=uk;fori=1:nif(A(i,i)=0);FI(i)=1;FIM(i)=h*C(i,i)/B(i,i);FIJ(i)=h*h*C(i,i)/B(i,i)/2;FIC(i)=1;FID(i)=0;,94,第7章,控。

53、制系统的MATLAB仿真,if(D(i,i)=0);FID(i)=D(i,i)/B(i,i);elseendelseFI(i)=exp(-h*A(i,i)/B(i,i);FIM(i)=(1-FI(i)*C(i,i)/A(i,i);FIJ(i)=h*C(i,i)/A(i,i)-FIM(i)*B(i,i)/A(i,i);FIC(i)=1;FID(i)=0;if(D(i,i)=0);FIC(i)=C(i,i)/D(i,i)-A(i,i)/B(i,i);FID(i)=D(i,i)/B(i,i);elseendendend,95,第7章,控制系统的MATLAB仿真,X=Y;y=0;Uk=zeros(n,。

54、1);Ub=Uk;t=0;M=round(T/(h*L1);fork=1:Mforl=1:L1Ub=Uk;Uk=W*Y+W0*Y0;Udot=(Uk-Ub)/h;Uf=2*Uk-Ub;X=FI.*X+FIM.*Uk+FIJ.*Udot;Y=FIC.*X+FID.*Uf;end,96,第7章,控制系统的MATLAB仿真,y=y,Y(nout);t=t,t(k)+h*L1;endU=Y0;U(1:mm-1);ut=ut,uk;tt=tt,s*T;endtt,utfigure(1);plot(tt,ut)t,yfigure(2);plot(t,y),97,第7章,控制系统的MATLAB仿真,(2)输。

55、入数据离散部分D(z)的参数:CC=0.717;DD=2.72,-1;连续部分:,其他运行参数:T=1;T0=0;Tf=10;R=1。n=2;h=0.01;L1=5;nout=2。(3)在MATLAB命令窗口将上述数据输入,运行CSS5程序,可得到仿真结果如图7-32所示。,98,(a)离散环节输出(b)连续环节输出图7-32例7.13的仿真结果,第7章,控制系统的MATLAB仿真,99,本章小结,MATLAB提供了数学模型的建立和模型间转换函数,可采用传递函数、零极点增益、状态空间以及动态结构图等来表示控制系统。在MATLAB中,用tf()函数建立传递函数模型;用zpk()函数建立零极点增益。

56、模型;用ss()函数建立状态空间模型。除了采用环节方框图模型的等效变换,在MATLAB工具箱中还提供了ss2tf()、ss2zp()、tf2ss()、tf2zp()、zp2ss()、zp2tf()等函数,可方便地实现传递函数、零极点增益与状态空间模型之间的转换功能。分析系统性能可利用MATLAB提供的单位阶跃响应函数step()、单位脉冲响应函数impulse()、零输入响应函数initial()等来处理连续系统的响应;利用单位阶跃响应函数dstep()、单位脉冲响应函数dimpulse()、零输入响应函数dinitial()等来处理离散系统的响应。,第7章,100,第7章,本章小结,在MATLAB中,可精确绘制Bode图、Nyquist曲线图和Nichols曲线图,并计算系统的截止频率、-穿越频率、相角稳定裕度和幅值稳定裕度等频域性能指标,仿真和研究系统控制过程的稳定性、快速性及稳态精度等性能。对于常见的线性系统、非线性系统、采样系统都可以采用MATLAB编程来实现仿真处理,仿真方法较直观,容易理解,能够观察到系统的动态响应曲线,便于对控制系统的性能进行分析,也方便了对系统的校正处理。由于利用MATLAB对控制系统进行仿真方法简便、直观、易实现,且可以通过数据、曲线、图形等形式表示出仿真的最终结果,因此,在工程实践中得到了广泛的应用。,101,第7章内容到此结束,谢谢各位。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。