当前位置:文档之家› 控制系统MATLAB仿真基础

控制系统MATLAB仿真基础

系统仿真§ 4.1控制系统的数学模型1、传递函数模型(tranfer function)2、零极点增益模型(zero-pole-gain)3、状态空间模型(state-space)4、动态结构图(Simulink结构图)一、传递函数模型(transfer fcn-----tf)1、传递函数模型的形式传函定义:在零初始条件下,系统输出量的拉氏变换C(S)与输入量的拉氏变换R(S)之比。

C(S) b1S m+b2S m-1+…+b mG(S)=----------- =- --------------------------------R(S) a1S n + a2S n-1 +…+ a nnum(S)= ------------den(S)2、在MATLAB命令中的输入形式在MATLAB环境中,可直接用分子分母多项式系数构成的两个向量num、den表示系统: num = [b1, b2, ..., b m];den = [a1, a2, ..., a n];注:1)将系统的分子分母多项式的系数按降幂的方式以向量的形式输入两个变量,中间缺项的用0补齐,不能遗漏。

2)num、den是任意两个变量名,用户可以用其他任意的变量名来输入系数向量。

3)当系统种含有几个传函时,输入MATLAB命令状态下可用n1,d1;n2,d2…….。

4)给变量num,den赋值时用的是方括号;方括号内每个系数分隔开用空格或逗号;num,den方括号间用的是分号。

3、函数命令tf( )在MATLAB中,用函数命令tf( )来建立控制系统的传函模型,或者将零极点增益模型、状态空间模型转换为传函模型。

tf( )函数命令的调用格式为:圆括号中的逗号不能用空格来代替sys = tf ( num, den ) [G= tf ( num, den )]其中,函数的返回变量sys或G 为连续系统的传函模型;函数输入参量num和den分别为系统的分子分母多项式的系数向量。

s+5【例4-1】G(S)=---------------------------s4+2s3+3s2+4s+5解:num=[1,5];den=[1,2,3,4,5];G=tf(num,den)5【例4-2】G(S)=--------------------2s3+3s2+4s解: num=[5];den=[2 3 4 0];G=tf(num,den)★conv( )函数为标准的MATLAB函数,用来求取2个向量的卷积,多项式乘法也可用此函数来计算。

conv( )函数允许任意地多层嵌套,从而表示复杂的计算。

【例4-3】6(S+5)G(S)=-------------------------------------------(S2+3S+1)2(S+6)(S3+6S2+5S+3)解:num=6*[1,5];den=conv(conv(conv([1,3,1],[1,3,1]),[1,6]),[1,6,5,3]);G=tf(num,den)den=conv(conv(conv([1,6],[1,6,5,3]),[1,3 1]),[1,3,1]);二、零极点增益模型(zeropole----zpk)1、零极点增益模型形式(S-Z1)(S-Z2)…(S-Z m)G(S)= k -------------------------------(S-P1)(S-P2)…(S-P n)式中: k: 系统增益;z1,z2,…,z m: 系统零点;p1,p2,…,p n: 系统极点;注:对实系数的传函模型来说,系统的零极点或者为实数,或者以共轭复数的形式出现。

系统的传函模型给出以后,可以立即得出系统的零极点模型。

2、在MATLAB下的输入形式在MATLAB里,连续系统可直接用向量z、p、k构成的矢量组【z,p,k】表示系统,即:k=[k];z=[z1;z2;……;z m];p=[p1;p2;……;p n];3、函数命令zpk( )在MATLAB中,用函数命令zpk( )来建立控制系统的零极点增益模型,或者将传函模型或者状态空间模型转换为零极点增益模型。

zpk( )函数命令的调用格式为:sys = zpk ( z,p,k )【例4-4】6(S+1.9294)(S+0.0353±0.9287i)G(S)=----------------------------------------------------(S+0.9567±1.2272i)(S-0.0433±0.6412i)解:k = 6;z = [-1.9294;-0.0353+0.9287*i;-0.0353-0.9287*i];p = [-0.9567+1.2272*i;-0.9567-1.2272*i;+0.0433+0.6412*i;+0.0433-0.6412*i];G = zpk(z,p,k)三、状态空间模型 (state-space-----ss)1、状态空间模型的形式单变量线性的不变系统可以写成:X(t) = Ax(t)+Bu(t) A BG(S)= (1)Y(t) = Cx(t)+Du(t) C D式中,u,x,y分别为控制输入向量、状态向量、输出向量;A为状态矩阵,由控制对象的参数决定;B为控制矩阵;C为输出矩阵;D为直接传输矩阵。

A、B、C分别为列向量行向量,D为标量,2、在MATLAB下的输入形式在MATLAB中,连续系统可直接用矩阵组【A,B,C,D】表示系统。

A=[a11,a12,…,a1n;a21,a22,…a2n; … ;a n1,a n2,…,a nn];B=[b1;b2;……b n];C=[c1,c2,……c n];D=d;这样MALAB工作空间中的(A,B,C,D)则可表示式(1)式给出的系统状态方程模型。

注:MALAB下的(A,B,C,D)表示同样适合于多变量系统。

3、函数命令ss( )在MATLAB中,用函数命令ss( )来建立控制系统的状态空间模型,或者将传函模型、零极点增益模型的表达式转换为状态空间模型。

ss( )函数命令的调用格式为:ss(A,B,C,D)【例4-5】2.25 -5 -1.25 -0.5 4 6X= 2.25 -4.25 -1.25 -0.25 x + 2 4 u0.25 -0.5 -1.25 -1 2 21.25 -1.75 -0.25 -0.75 0 20 0 0 1 0 0Y = x + u0 2 0 2 0 0解:A=[2.25,-5,-1.25,-0.5;2.25,-4.25,-1.25,-0.25;0.25,-0.5,-1.25,-1;1.25,-1.75,-0.25,-0.75];B= [4,6;2,4;2,2;0,2];C= [0,0,0,1;0,2,0,2];D= zeros(2,2);G= ss(A,B,C,D)四、三种不同模型对象间的相互转换解决实际问题时,常常需要对自控系统的数学模型进行转换,因为他们彼此间都是等效的。

sys = tf (G)sys = zpk(G )sys = ss(G)【例4-6】设系统的零极点模型为:6(S+1.9294)(S+0.0353±0.9287i)G(S)=----------------------------------------------------(S+0.9567±1.2272i)(S-0.0433±0.6412i)试转化成等效的传函模型和状态空间模型。

解:k = 6;z = [-1.9294;-0.0353+0.9287*j;-0.0353-0.9287*j];p = [-0.9567+1.2272*j;-0.9567-1.2272*j;+0.0433+0.6412*j;+0.0433-0.6412*j];G = zpk(z,p,k);sys1= tf(G)sys2=ss(G)【例4-7】若系统的状态方程模型如下:0 1 0 0 0X= 0 0 -1 0 x+ 1 u Y = [ 1,0,0,0] x0 0 0 1 00 0 5 0 -2求系统的传函模型及零极点表达式。

解: A= [0,1,0,0;0,0,-1,0;0,0,0,1;0,0,5,0];B= [0;1;0;-2];C= [1,0,0,0];D= 0;G=ss(A,B,C,D);G1= tf(G)G2=zpk(G)五、SIMULINK模型窗口的动态结构图六、具有延迟环节数学模型的建立G(S)= e-TSpade(T,n):求延迟T的n阶逼近式。

可以绘制N阶pade逼近e-TS的单位阶跃响应曲线和对数相频特性曲线。

[num,den]=pade(T,n)可以返回N阶传递函数的LIT模型来逼近e-TS。

其中,行向量num和den分别是传递函数的分子分母多项式系数和分母多项式,并按降幂排列。

【例】试在matlab命令窗口建立输入下述传递函数:e-S(10S+1)(5S+1)G(S)=解:num1=1;den1=conv([10,1],[5,1]);g1=tf(num1,den1);[num2,den2]=pade(1,10);g2=tf(num2,den2);g12=g1*g2§ 4.2环节方框图形的化简一、环节串联连接的化简→ G1 → G2 →series( ):函数命令可以将两个环节串联连接进行等效化简,它既适用于连续时间系统,也适用于离散时间系统。

如果已知两个环节的传函分别为:G1(S) =G2(S) =则两个环节串联连接的等效变换传函:G(S)=G1(S)G2(S) ==使用series( )函数命令,不必做多项式的乘除运算即可实现2个环节传函(sys1与sys2)串联连接即实现等效传函的运算。

如果 sys1 = tf(num1,den1),sys2 = tf(num2,den2)其命令格式:sys=series(sys1,sys2)。

sys = series( sys1,sys2,…,sysn) sys=sys1*sys2*……*sysn【例4-8】已知双环调速系统电流环内前向通道三个模块的传函为G1(S)=G2(S)=G3(S)=试求三个模块串联连接的等效传函及等效状态空间模型。

解:n1 = [0.0128 1] ; d1 = [0.04 0] ; sys1 = tf (n1,d1);n2 = [30] ; d2 = [0.00167 1]; sys2 = tf( n2,d2);n3 = [2.5] ; d3 = [0.0128 1]; sys3 =tf ( n3,d3);sys123=sys1*sys2*sys3sys=ss(sys123)二、环节并联连结的化简G2(s)G1(s)parallel( )函数命令可以将2个环节并联连接进行等效化简。

相关主题