文档详情

系统建模与仿真第11次课第五章2

pu****.1
实名认证
店铺
PPT
762KB
约76页
文档ID:591333875
系统建模与仿真第11次课第五章2_第1页
1/76

5.3 状态方程与传递函数的相互转换状态方程与传递函数的相互转换 5.3.1 由状态方程转变为传递函数由状态方程转变为传递函数 在已知线性定常系统状态空间表达式的情况下,先输入四个系数矩阵A、B、C和D,然后用MATLAB提供的ss( )函数,建立系统变量,即 sys = ss(A, B, C, D)接着调用tf( )函数,就可以极其方便地得出其传递函数形式,即 sys1 = tf(sys)1 [ [例例5.5] 给定线性系统 ,试求取其传递函数模型 对这个问题,可编写如下的M文件exam55.m A=[2,1;-4,0];B=[1,0]';C=[0,1];D=0;sys=ss(A,B,C,D);sys1=tf(sys)2 运行该文件后有>> exam55 Transfer function: -4-------------s^2 - 2 s + 43 [num,den] = ss2tf(A, B, C, D)A=[2,1;-4,0];B=[1,0]';C=[0,1];D=0;[n,d]=ss2tf(A,B,C,D);Sys=tf(n,d)4 5.3.2 由传递函数转变为状态方程由传递函数转变为状态方程 在已知线性定常系统传递函数的情况下,先建立其传递函数模型,然后用MATLAB提供的ss( )函数,转变为状态空间模型,即 sys = tf(num, den);sys1 = ss(sys);5 [ [例例5.6] 给定线性系统 ,试写出其状态空间表达式。

对这个问题,可编写如下的M文件exam56.m num=[12,12];den=[3,1,11];sys=tf(num,den);sys1=ss(sys)6 运行该文件后有>> exam56 a = x1 x2 x1 -0.3333 -1.833 x2 2 0 b = u1 x1 2 x2 07 c = x1 x2 y1 2 1 d = u1 y1 0 Continuous-time model.8 [A,B,C,D] = tf2ss(num,den)num=[12,12];den=[3,1,11];[A,B,C,D] =tf2ss(num,den)[z,p,k] = ss2zp(A,B,C,D)还有:还有:[A,B,C,D] = zp2ss (z,p,k)[num,den] = zp2tf (z,p,k)[z,p,k] = tf2zp(num,den)9 例例 将系统将系统变换成状态空间变换成状态空间表示H = tf( {[2 3 0] ; [1 2 1]} , {[1 0.4 1] ; [1 0.4 1]})10 5.3.3 由一般状态方程转变为规范型由一般状态方程转变为规范型调用格式如下:G1=canon(G, type);canonical form‘companion’ 伴随标准型‘modal’ Jordan规范型(模态型)11 举例给定系统模型试用MATLAB实现其向两种规范型的转换。

12 编写下列M文件:A=[-13,0,1; 2,-42,0; 0,-3,-21];b=[0;1;2];c=[1,0,2];d=0;G=ss(A,b,c,d);G1=canon(G,'companion');G2=canon(G,'modal');13 在MATLAB的工作空间中运行该文件,并键入G、G1、G2可得:>> Ga = x1 x2 x3 x1 -13 0 1 x2 2 -42 0 x3 0 -3 -21b = u1 x1 0 x2 1 x3 2c = x1 x2 x3 y1 1 0 2d = u1 y1 0Continuous-time model.14 >> G1a = x1 x2 x3 x1 0 -6.821e-013 -1.147e+004 x2 1 -2.842e-014 -1701 x3 0 1 -76b = u1 x1 1 x2 0 x3 0c = x1 x2 x3 y1 4 -88 2071d = u1 y1 0 Continuous-time model.15 >> G2a = x1 x2 x3 x1 -42.01 0 0 x2 0 -13.03 0 x3 0 0 -20.96b = u1 x1 1.016 x2 -0.2395 x3 1.877c = x1 x2 x3 y1 0.2778 -0.9455 1.86d = u1 y1 0 Continuous-time model.16 5.4 系统根轨迹及频域分析系统根轨迹及频域分析5.4.1 二阶系统的根轨迹二阶系统的根轨迹考虑下面系统-开环模型由开环模型来分析闭环系统的稳定性。

闭环模型17 取 , ,画出闭环系统极点关于开环增益 的变化曲线——根轨迹闭环系统的特征多项式为:求出极点:18 wn=1;ksai=0.5;K=0:0.005:0.2;c1=(-ksai+sqrt(ksai^2-K))*wn;c2=(-ksai-sqrt(ksai^2-K))*wn;plot(real(c1),imag(c1),'r-');hold on;plot(real(c2),imag(c2),'b-');legend('c_1','c_2');19 20 在开环模型中引入一个附加极点 ,其中开环模型取 , ,画出闭环系统极点关于开环增益 的变化曲线——根轨迹按照 、 、 、 分别画根轨迹21 wn=1;ksai=0.5;a=[0.1,0.2,0.5,1];for i=1:1:length(a) G=tf(wn^2,conv([1,2*ksai*wn,0],[1,a(i)])); rlocus(G); hold on;end22 23 根轨迹的绘制方法根轨迹的绘制方法R=rlocus(G,K)系统的LTI对象模型用户选择的增益向量根轨迹各个点构成的复数矩阵[R,K]=rlocus(G)自动生成的增益向量24 rlocus(G)在图形窗口中自动绘出系统的根轨迹[K,p]=rlocfind(G)求取根轨迹上指定点处的开环增益及相应的闭环极点开环增益闭环极点25 [ [例例5.7] 画出下述开环模型的根轨迹图编制程序a=conv([1,1],[1,2]);b=conv([1,0],a);G=tf(1,b);rlocus(G);[K,p]=rlocfind(G);26 程序运行结果27 鼠标定位Select a point in the graphics windowselected_point = 0.4171 + 2.2484i28 29 在MATLAB的工作空间中键入K和p>> KK = 20.0636>> pp = -3.8399 0.4199 + 2.2469i 0.4199 - 2.2469i>> 30 5.4.2 线性系统的线性系统的Nyquist图图由开环模型来分析闭环系统的稳定性。

31 nyquist(G)自动画出自动画出Nyquist图图G开环系统的传递函数[ [例例5.8]画出下述开环系统模型的Nyquist图:[re,im,w]=nyquist(G)32 a=conv([1,2],[1,5]);b=conv([1,1],a);G=tf(1000,b);nyquist(G);编写文件33 34 [ [例例5.9] 画出下述开环系统模型的Nyquist图:编写文件G=tf(100*conv([1,5],[1,5]),conv([1,1],[1,-1,9]));nyquist(G);35 36 5.4.3 线性系统的频域响应模型线性系统的频域响应模型——Bode图图Bode(G)自动画出自动画出bode图图[ [例例5.10] 画出下述系统的bode图37 编写文件a=conv([1,1],[1,2]);b=conv([1,0],a);G=tf(1,b);bode(G);grid;38 39 5.5 时滞系统的近似线性模型时滞系统的近似线性模型 ——Pade近似模型近似模型时滞系统的传递函数往往带有 项,这种模型可以作线性近似处理——Pade近似。

Pade近似系数40 Pade近似系数表阶次次np1p2p3p4p510000021/12000031/101/12000043/281/841/16800051/91/721/10081/30240065/441/661/7921/158401/66528041 函数 pade( )求取pade近似的传递函数[np, dp]=pade(Tau, n)[ [例例5.11] 求下述时滞系统的近似传递函数不妨取3阶Pade近似,编程如下:42 [a,b]=pade(1,3);G=tf(a,conv(b,[1,1]));运行结果Transfer function: -s^3 + 12 s^2 - 60 s + 120-----------------------------------s^4 + 13 s^3 + 72 s^2 + 180 s + 12043 时滞系统时域响应的数字仿真时滞系统时域响应的数字仿真时滞系统时域时滞系统时域响应的数字仿真响应的数字仿真运用Simulink仿真工具通过pade近似模型进行仿真改进的龙格库塔法状态带有时滞的情况下44 通过pade近似模型对时滞系统的时域响应进行数字仿真[ [例例5.12]画出下述时滞系统的单位阶跃响应曲线不妨取3阶Pade近似,编程如下:45 [a,b]=pade(0.5,3);c=[1,3,4];d=conv([1,1],[1,2]);e=conv([1,3],[1,4]);f=conv(d,e);G=tf(conv(c,a),conv(f,b));Gstep(G)46 运行结果Transfer function: -s^5 + 21 s^4 - 172 s^3 + 336 s^2 + 1920 s + 3840--------------------------------------------------------------------------s^7 + 34 s^6 + 515 s^5 + 4250 s^4 + 19224 s^3 + 46176 s^2 + 53760 s + 23040 47 48 [ [例例5.13]画出下述时滞系统在给定输入信号作用下的时域响应曲线。

49 不妨取3阶Pade近似,编程如下:[a,b]=pade(0.8,3);c=[1,5,3];d=conv([1,1],conv([1,4],[1,7]));G=tf(conv(c,a),conv(d,b));t=0:0.01:5;u=2*cos(3*t-0.75);y=lsim(G,u,t);plot(t,y,'b-');hold on;plot(t,u,'r-');legend('y','u');50 运行结果51 现在我们用ode45( )功能来求解这个数字仿真问题为此,首先要将频域模型化成时域模型,根据系统的传递函数可得:52 引入中间变量 :则53 于是在假设零初始条件下取拉氏反变换,可得:54 取下列状态变量:于是很容易得出状态空间模型(时域模型):55 可见,这个时滞出现在系统的输入端,而不是状态时滞我们不必用改进的4阶龙格库塔法来求解56 只需用通常的ode45( )功能,编写右端函数:function dx=ff_1(t,x)t_tao=t-0.8;if t_tao<0 u=0;else u=2*cos(3*t_tao-0.75);enddx(1)=x(2);dx(2)=x(3);dx(3)=-28*x(1)-39*x(2)-12*x(3)+u;dx=dx';57 编写主程序:[t,x]=ode45('ff_1',[0,5],[0,0,0]);y=3*x(:,1)+5*x(:,2)+x(:,3);u=2*cos(3*t-0.75);plot(t,y,'r-');hold on;plot(t,u,'b-');legend('y','u');58 运行结果59 5.6 单变量线性系统时域响应的单变量线性系统时域响应的 MATLAB仿真仿真线性系统的时域仿真求解微分方程组RK4方法ode45( )function传递函数模型传递函数模型Lsim( )60 在上面的程序中出现了线性系统的仿真函数y=lsim(G,u,t);G线性系统的模型y输出序列(向量)u输入序列(向量)t时间序列(向量)长度相等61 lsim(G,u,t);直接画出输出响应曲线[ [例例5.14]假定开环系统的模型为并且系统由单位负反馈结构组成,若系统的输入信号为正弦信号 ,试画出闭环系统的暂态响应曲线。

62 -63 编程如下:a=conv([1,10],[1,10,50]);b=conv([1,0,0],a);G=tf([800,800],b);G_cl=feedback(G,1,-1);t=0:0.01:5;u=3*sin(5*t);lsim(G_cl,u,t);64 运行结果65 [Y,T,X] = LSIM(SYS,U,T,X0) 对于状态空间模型的时域响应,有格式:初始状态向量,省略时默认为零初始状态66 [ [例例5.15] 对下列系统的时域响应进行仿真系统的输入信号为下图所示系统的初始状态为67 输入信号 为脉冲式信号68 编写下列MATLAB文件,以产生序列 u 和 t t=0: 0.01: 12;for i=1: 1: length(t) if t(i)<=2 u(i)=2; elseif t(i)>2 & t(i)<=3 u(i)=0; elseif t(i)>3 & t(i)<=5 u(i)=2; elseif t(i)>5 & t(i)<=9 u(i)=0; elseif t(i)>9 & t(i)<=11 u(i)=-2; else u(i)=0; endend69 接着编写(同一个M文件)A=[-13,0,1; 2,-42,0; 0,-3,-21];b=[0;1;2];c=[1,0,2];d=0;G3=ss(A,b,c,d);x0=[0.3,-2.1,0.57]';[y,t,x]=Lsim(G3,u,t,x0);70 接着编写(同一个M文件)subplot(2,2,1);plot(t,y,'r-');legend('y');subplot(2,2,2);plot(t,x(:,1),'b-');legend('x_1');71 subplot(2,2,3);plot(t,x(:,2),'m-');legend('x_2');subplot(2,2,4);plot(t,x(:,3),'k-');legend('x_3');接着编写(同一个M文件)72 运行结果73 在上面画状态响应图的时候,还可以简单集中编写一条语句:>> plot(t,x)运行结果如下图所示,但是这样不宜分析。

74 75 本次课内容总结本次课内容总结rlocus(G )nyquist(G )bode(G )ss( )tf( )时滞模型Pade近似近似单变量线性系统仿真Lsim( )76 。

下载提示
相似文档
正为您匹配相似的精品文档
相关文档