1、【解】根据题意,利用roots()函数给出以下MATLAB程序段:【例3.2】已知系统的动态结构图如图3.1-1所示,试对系统闭环判别其稳定性。图3.1-1 n1=10;d1=1 1 0;s1=tf(n1,d1);n1=2 0;d1=0 1;s2=tf(n1,d1);s12=feedback(s1,s2);%运行结果:运行结果:Transfer function:10 -s2+s%运行结果:运行结果:Transfer function:2 s%运行结果:运行结果:Transfer function:10-s2+21 s n3=1 1;d3=1 0;s3=tf(n3,d3);sys1=s12*s
2、3;sys=feedback(sys1,1)roots(sys.den1)%运行结果:运行结果:Transfer function:s+1-s%运行结果运行结果:Transfer function:10 s+10-s3+21 s2%运行结果:运行结果:Transfer function:10 s+10 -s3+21 s2+10 s+10ans=-20.5368 -0.2316+0.6582i -0.2316-0.6582i补充知识:补充知识:MATLABMATLAB基础基础 一一.M.M文件文件 所谓M文件,就是用户把要实现的命令写在一个以.m为扩展名的文件中。与在命令窗口中输入命令行方式比,
3、M文件的有的是可调试、可重复使用。M文件分为程序文件与函数(function)文件两大类。1.M1.M程序文件程序文件 在MATLAB桌面建立新的M文件或打开已经建立好的M文件(点击桌面操作环境画面中FileNewm File或FileOpen所需文件)等操作,或直接在命令窗口键入“edit”,或直接点击图标 ,都能进入图3.1-2所示的MATLAB编辑和调试操作环境的窗口画面。图3.1-2 MATLAB编辑和调试操作环境的窗口画面如【例3.2】可以用M文件方式建立,文件名为:zhang3L2.m 2.2.函数式函数式M M文件文件 在函数文件的第一行必须是以关键字“function”开始的函
4、数说明语句。下面是一个只有两行的函数文件的例子。Function c=myfile(a,b)C=sqrt(a2)+(b2);a=3;b=4;c=myfile(a,b);c=5二二.MATLAB.MATLAB控制系统工具箱函数控制系统工具箱函数 1.1.主要模型建立函数表主要模型建立函数表 举例:举例:feedback函数函数功能:两个系统的反馈连接格式:A,B,C,D=feedback(A1,B1,C1,D1,A2,B2,C2,D2);A,B,C,D=feedback(A1,B1,C1,D1,A2,B2,C2,D2,sign);A,B,C,D=feedback(A1,B1,C1,D1,A2,B
5、2,C2,D2,inp1,out1);num,den=feedback(num1,den1,num2,den2);num,den=feedback(num1,den1,num2,den2,sign);A,B,C,D=feedback(A1,B1,C1,D1,A2,B2,C2,D2,sign)可将两个系统按反馈方式连接,系统1的所有输出连接到系统2的输入,系统2的所有输出连接到系统1的输入;sign是用于反馈连接的符号,默认为负号。num,den=feedback(num1,den1,num2,den2,sign);用于传递函数形式所表示的系统,sign是用于反馈连接的符号,默认为负号。A,B,
6、C,D=feedback(A1,B1,C1,D1,A2,B2,C2,D2,inp1,out1)将系统1的指定输出(out1)连接到系统2的输入,系统2的输出连接到系统1的指定输入(inp1),以次构成闭环系统,如图所示。在【例3.2】就用到了该函数。2.2.主要模型变换函数表主要模型变换函数表 3.3.主要模型特性函数表主要模型特性函数表 4.4.主要时域响应函数表主要时域响应函数表 线控例例2-11已知系统矩阵 ,输入矩阵 ,且 ,单输入u(t)为单位阶跃函数,试求系统的状态响应和输出响应。3210A10B01C5.00)0(x解解:直接用MATLAB的lsim命令求解A=0 1;-2-3;
7、B=0 1;C=1 0;D=0;x0=0 0.5;y,x=lsim(A,B,C,D,1+t*0,t,x0);plot(x);5.5.主要频域响应函数表主要频域响应函数表 6.6.主要的根轨迹函数表主要的根轨迹函数表 二用根轨迹法判断系统稳定性及其举例二用根轨迹法判断系统稳定性及其举例【例3.3】已知一个单位负反馈系统开环传递函数为G(s),试在系统闭环的根轨迹图上选择一点,求出该点的增益k及其系统的闭环极点位置,并判断在该点系统闭环的稳定性。)22)(6)(5()3()(2ssssssksG【解】根据题目要求,调用函数命令rlocfind()的程序如下:num=1 3;den=conv(con
8、v(conv(1 0,1 5),1 6),1 2 2);sys=tf(num,den);rlocus(sys)%运行结果:运行结果:den=1 13 54 82 60 0%运行结果:运行结果:Transfer function:s+3-s5+13 s4+54 s3+82 s2+60 s图3.1-2k,poles=rlocfind(sys)selected_point=-0.6498-0.0585ik=7.2349poles=-5.8248 -5.2067 -0.6585+0.8155i -0.6585-0.8155i -0.6514 Select a point in the graphics
9、 window求给定一组根的系统根轨迹增益函数求给定一组根的系统根轨迹增益函数rlocfind()函数命令调用格式:k,poles=rlocfind(sys)函数命令使用说明:【例3.4】续【例3.3】,试计算当k在3337范围内时系统的闭环极点位置,并判断系统闭环的稳定性。【解】根据题目要求,用函数命令编写MATLAB程序如下:num=1 3;den=conv(conv(conv(1 0,1 5),1 6),1 2 2);cpole=rlocus(num,den,33:1:37);%运行结果:运行结果:cpole=Columns 1 through 4 -5.5745+0.6697i -5.
10、5745-0.6697i -1.7990 -0.0260+1.3210i -5.5768+0.6850i -5.5768-0.6850i -1.8154 -0.0155+1.3340i -5.5791+0.7001i -5.5791-0.7001i -1.8313 -0.0052+1.3467i -5.5815+0.7147i -5.5815-0.7147i -1.8466 0.0048+1.3591i -5.5838+0.7291i -5.5838-0.7291i -1.8615 0.0146+1.3712i Column 5 -0.0260-1.3210i -0.0155-1.3340i
11、-0.0052-1.3467i 0.0048-1.3591i 0.0146-1.3712irange=33:1:37;range,cpoleans=Columns 1 through 4 33.0000 -5.5745+0.6697i -5.5745-0.6697i -1.7990 34.0000 -5.5768+0.6850i -5.5768-0.6850i -1.8154 35.0000 -5.5791+0.7001i -5.5791-0.7001i -1.8313 36.0000 -5.5815+0.7147i -5.5815-0.7147i -1.8466 37.0000 -5.583
12、8+0.7291i -5.5838-0.7291i -1.8615 Columns 5 through 6 -0.0260+1.3210i -0.0260-1.3210i -0.0155+1.3340i -0.0155-1.3340i -0.0052+1.3467i -0.0052-1.3467i 0.0048+1.3591i 0.0048-1.3591i 0.0146+1.3712i 0.0146-1.3712i求系统根轨迹的函数求系统根轨迹的函数 rlocus()函数命令调用格式:r,k=rlocus(a,b,c,d)r,k=rlocus(sys)函数命令使用说明:rlocus()函数命令
13、用来绘制SISO系统的根轨迹图。给定前向通道传递函数G(s),反馈补偿为k*F(s)的受控对象,其闭环传递函数为:)()()()(1)()(sQsGsFskGsGs可以用以下程序来校核当k=35与k=36时闭环系统的阶跃给定响应曲线:n1=1 3;d1=conv(conv(conv(1 0,1 5),1 6),1 2 2);for k=35:36n=k*n1;s1=tf(n,d1);G=feedback(s1,1);step(G);hold onendgtext(k=35),gtext(k=36)图3.1-.3求连续系统单位阶跃响应的函数求连续系统单位阶跃响应的函数step()函数命令调用格式
14、如下:step(sys)三三.用用BodeBode图法判断系统稳定性及其举例图法判断系统稳定性及其举例【例3.5】已知两个单位负反馈系统开环传递函数分别为:用Bode图法判断系统闭环的稳定性。ssssGssssG457.2)(;457.2)(232231【解】根据要求,对第一个系统用margin()函数命令给出如下程序:num=0 0 0 2.7;den=1 5 4 0;s1=tf(num,den);Gm,Pm,Wcp,Wcg=margin(s1)Gm=7.4074Pm=51.7320Wcp=2Wcg=0.5783margin(s1)图3.1-4求系统幅值裕度与相位裕度的函数求系统幅值裕度与相
15、位裕度的函数margin()函数命令调用格式:Gm,Pm,Wcp,Wcg=margin(sys)margin(sys)同样对第二个系统给出程序如下:n2=0 0 0 2.7;d2=1 5-4 0;s2=tf(n2,d2);margin(s2)Gm,Pm,Wcp,Wcg=margin(s2)Gm=1Pm=0 图3.1-5四四.李雅普诺夫李雅普诺夫(Lyapunov)(Lyapunov)稳定性判据稳定性判据 定理定理4.8 线性系统渐进稳定的判别方法 设线性定常连续系统为 则平衡状态 为大范围渐进稳定的充要条件是:对任意给定的一个正定实对称矩阵Q,比必存在一个正定的实对称矩阵P,且满足李雅普诺夫方
16、程 )11.3(uBAxx 0ex复习:复习:现代控制理论现代控制理论 P181)21.3(QPAPAT并且 是系统的李雅普诺夫函数。)31.3(PxxV(x)T)41.3(IPAPAT 在线代控制理论的理论计算中,要判系统(3.1-1)是否稳定,需要做以下工作:由式(3.1-4)求P,并验证P是正定的;由式(3.1-3)求V(x),并判验证V(x)是正定的;结论:系统是稳定的。在MATLAB中,LyapunovLyapunov方程(3.1-2)可以由控制系统工具箱中提供的lyap()函数求解,该函数的调用格式:V=lyap(A,W)V=lyap(A,W)。例例3.63.6 已知系统的状态方程
17、为:uxx201075.025.075.125.1125.15.025.0.25.025.125.425.25.025.1525.2试分析系统的稳定性。3.2 3.2 控制系统稳态误差分析的控制系统稳态误差分析的MATLABMATLAB实现实现 一一.控制系统稳态误差分析的有关概念控制系统稳态误差分析的有关概念2.自动控制系统的型别自动控制系统的型别 3.控制系统的稳态误差系数控制系统的稳态误差系数 1.稳态误差稳态误差ess )12.3()(limteetss)22.3()(1hess)32.3()()(lim0sHsGKsp(2)稳态速度误差系数kv)42.3()()(lim0sHssGK
18、sv(3)稳态加速度误差系数ka)52.3()()(20limsHsGsKas(1)稳态位置误差系数kp 二二.控制系统稳态误差计算举例控制系统稳态误差计算举例)1)(2()12(3)(sssssG【例3.7】已知一个单位负反馈系统开环零极点增益模型为:试绘制出该系统的单位斜坡响应曲线并求单位斜坡响应稳态误差。【解】(1)对系统判稳程序程序:k=6;z=-0.5;p=-2 1 0;n1,d1=zp2tf(z,p,k);s=tf(n1,d1);sys=feedback(s,1);roots(sys.den1)%运行结果:运行结果:n1=0 0 6 3 d1=1 1 -2 0%运行结果:运行结果:
19、Transfer function:6 s+3-s3+s2-2 s%Transfer function:6 s+3 -s3+s2+4 s+3ans=-0.1084+1.9541i -0.1084-1.9541i -0.7832 (2)求系统单位阶跃给定响应与稳态误差程序:k=6;z=-0.5;p=-2 1 0;n1,d1=zp2tf(z,p,k);s=tf(n1,d1);sys=feedback(s,1);step(sys);t=0:0.1:30;y=step(sys,t);subplot(121),plot(t,y),grid;subplot(122),ess=1-y;plot(t,ess)
20、,grid 图4.6 系统阶跃响应与阶跃误差响应曲线ess(length(ess)ans=-0.0322%运行结果:运行结果:y=0 0.0294 :1.0224 1.0322求单位阶跃响应的稳态误差函数求单位阶跃响应的稳态误差函数esst()esst()函数的调用格式为:ess=esst(sys,t)%MATLAB PROGRAM esst.m function ess=esst(sys,t)y=step(sys,t);subplot(121),plot(t,y),grid subplot(122),es=1-y;plot(t,es),grid ess=es(length(es)如果运行以下
21、调用esst.m函数的程序,会得到同样的结果。k=6;z=-0.5;p=-2 1 0;n1,d1=zp2tf(z,p,k);s=tf(n1,d1);sys=feedback(s,1);t=0:0.1:30ess=esst(sys,t);ans=-0.03223.3 3.3 用用MATLABMATLAB分析系统能控能观测性的方法分析系统能控能观测性的方法一一.能控能观性判别能控能观性判别 uuDCxyBAxx BABAABBMnc12nMrankc)(TnoCACACACM12系统能控nMrankO)(系统能观测),(BActrbMc),(CAobsvMo 利用这两个函数很容易判定系统的能控性和
22、能观测性。例例3.93.9 选自现代控制理论 P156已知系统的状态空间表达式为:xyuxx120110010960324211用MATLAB函数分析系统能控性与能观测性。MATLAB中,提供了可将连续或离散系统状态空间表达式化为对角线或约旦标准型的jordan()函数,该函数的格式为:vv,jjjordan(A)jordan(A)。例例3.103.10 已知系统的状态空间表达式为:xyuxx00110051166116110 用MATLAB函数将系统化为对角线或约旦标准型,并分析系统能控性与能观测性。例例3.113.11 已知系统的状态空间表达式为:xyuxx001100032100010
23、用MATLAB函数将系统化为对角线或约旦标准型,并分析系统能控性与能观测性。二二.系统的结构分解系统的结构分解 复习:定理定理3.15 P146设一个不能控系统的状态方程为:CxyBuAxx cccxxPxxCyuBxAx21122121100CCCBBAAAAuBxAxAx11c12c11cccxAx22能控子空间能控子空间 不能控子空间不能控子空间 MATLAB中,提供了将系统进行能控与不能控分解的函数ctrbf(),该函数的调研格式为:AB,BB,CB,T,K=ctrbf(A,B,C)同样,设一个不能观测系统的状态方程为:CxyBuAxx xCyuBxAx 00121222111CCBB
24、BAAAA01100 xCyuBxAx111uBxAxAx20220210能观测子空间能观测子空间 不能观测子空间不能观测子空间 MATLAB中,提供了将系统进行能观测与不能观测分解的函数obsvf(),该函数的调研格式为:AB,BB,CB,T,K=obsvf(A,B,C)例例3.123.12 已知系统的状态空间表达式为:xyuxx111110340010121对系统进行能控与不能控分解和能观测与不能观测分解。程序运行结果:n=2AB=1.0000 -0.0000 -0.0000 2.1213 4.0000 -1.2247 1.7321 2.4495 0BB=0.0000 -0.0000 -1
25、.4142CB=-1.6330 -0.5774 0 T=-0.8165 0.4082 -0.4082 0.5774 0.5774 -0.5774 0 -0.7071 -0.7071 K=1 1 0m=2AB1=1.0000 -2.8868 -3.5355 -0.0000 2.0000 1.2247 -0.0000 0.8165 2.0000 BB1=1.2247 0.7071 0 CB1=0 0 -1.7321 T1=-0.4082 0.4082 0.8165 0.7071 0.7071 0.0000 -0.5774 0.5774 -0.5774 K1=1 1 0系统按能控与不能控分解为新的状
26、态空间表达式:xxx05774.0633.14142.10004495.27321.12247.141213.2001yu系统按能观测与不能观测分解为新的状态空间表达式:xxx7321.10007071.02247.128165.002247.1205355.38868.21yu P=floplr(eye(size(sys,order)。0001001001001000P则:DDPCCBPBPAPA,11xPx 令:结果:结果:AB2=0 2.4495 1.7321 -1.2247 4.0000 2.1213 -0.0000 -0.0000 1.0000 BB2=-1.4142 -0.0000 0.0000 CB2=0 -0.5774 -1.6330