控制系统常用的数学模型有三种:传递函数、零极点增益和状态空间。每种模型均有连续/离散之分,它们各有特点,有时需在各种模型之间进行转换。本节主要介绍它们的MATLAB表示及三种模型之间的相互转换。
2.8.1连续系统数学模型的MATLAB表示
1. 传递函数模型
当:
则在MATLAB中,直接用分子/分母的系数表示,即 num=[b0,b1,…,bm]; den = [a0,a1,…,an];
例2-7 用MATLAB表示传递函数为 的系统。
解:在MATLAB环境下输入 ng=[1 1]; dg=[1 3 2]; printsys(ng,dg) %此处printsys命令是传递函数显示命令。
则执行后得到如下结果:
2. 零极点增益模型
当:
时 |
则在MATLAB中,用[z,p,k]矢量组表示,即 z=[z0,z1,…,zm]; p=[p0,p1,…,pn]; k=[k];
例2-8 用MATLAB表示传递函数为 的系统。
解:在MATLAB环境下输入 z=-1; p=[0 -1 -2]; k=1.5; [num,den]=zp2tf[z,p,k]; printsys(num,den) %此处printsys命令是传递函数显示命令。 则执行后得到如下结果:
3. 状态空间模型
当:
时 |
则在MATLAB中,该控制系统可用(a,b,c,d)矩阵组表示。
4. 传递函数的部分分式展开
当:
时 |
在MATLAB中直接用分子/分母的系数表示时有 num=[b0,b1,…,bm]; den = [a0,a1,…,an]; 则命令 [r,p,k] = residue(num,den) 将求出两个多项式Y(s)和X(s)之比的部分分式展开的留数、极点和直接项。Y(s)/X(s)的部分分式展开由下式给出:
例2-A2 考虑下列传递函数:
命令 [r,p,k] = residue(num,den) 将给出下列结果:
[r,p,k]=residue(num,den) r= -6.000 -4.000 3.000 p= -3.000 -2.000 -1.000 k= 2
留数为列向量r,极点位置为列向量p,直接项是行向量k。以下是Y(s)/X(s)的部分分式展开的MATLAB表达形式:
命令 [num,den] = residue(r,p,k)
执行后得到如下结果:
[num,den]=residue(r,p,k) num= 2.0000 5.0000 3.0000 6.0000 den= 1.0000 6.0000 11.0000 6.0000
2.8.2离散系统数学模型的MATLAB表示
1. 传递函数模型:
2. 零极点增益模型:
3. 状态空间模型:
2.8.3模型之间的转换
同一个控制系统都可用上述三种不同的模型表示,为分析系统的特性,有必要在三种模型之间进行转换。MATLAB的信号处理和控制系统工具箱中,都提供了模型变换的函:ss2tf,ss2zp,tf2ss,tf2zp,zp2ss,zp2tf,它们的关系可用图2-17所示的结构来表示。
|
图2-18 三种模型之间的转换 |
说明:
ss2tf命令:将状态空间模型转换成传递函数模型。 格式为:[num,den]=ss2tf(A,B,C,D,iu) 式中,iu为输入的序号。转换公式为
ss2zp命令:将状态空间模型转换成零极点增益模型。 格式为:[Z, P, K]=ss2zp(A, B, C, D, iu) 式中,iu为输入的序号。
tf2ss命令:将传递函数模型转换成状态空间模型。 格式为:[A, B, C, D]=tf2ss(num, den)
tf2zp命令:将传递函数模型转换成零极点增益模型。 格式为:[Z, P, K]=tf2zp(num, den)
zp2ss命令:将零极点模型转换成状态空间模型。 格式为:[A, B, C, D]=zp2ss(Z, P, K)
zp2tf命令:将零极点模型转换成传递函数模型。 格式为:[num, den]=zp2tf(Z, P, K)
2.8.4控制系统建模
对简单系统的建模可直接采用三种基本模型:传递函数、零极点增益、状态空间模型。但实际中经常遇到几个简单系统组合成一个复杂系统。常见形式有:并联、串联、闭环及反馈等连接。
1. 并联:将两个系统按并联方式连接,在MATLAB中可用parallel函数实现。命令格式为:[nump, denp] = parallel(num1, den1, num2, den2) 其对应的结果为:Gp(s)=G1(s)+G2(s)
2. 串联:将两个系统按串联方式连接,在MATLAB中可用series函数实现。命令格式为:[nums, dens] = series(num1, den1, num2, den2) 其对应的结果为:Gs(s)=G1(s)+G2(s)
3. 闭环:将系统通过正负反馈连接成闭环系统,在MATLAB中可用feedback函数实现。命令格式为:[numf, denf] = feedback(num1, den1, num2, den2, sign) sign为可选参数,sign=-1为负反馈,而sign=1对应为正反馈。缺省值为负反馈。其对应的结果为:
4. 单位反馈:将两个系统按反馈方式连接成闭环系统(对应于单位反馈系统),在MATLAB中可用cloop函数实现。命令格式为:[numc, denc] = cloop(num, den, sign) sign为可选参数,sign=-1为负反馈,而sign=1对应为正反馈。缺省值为负反馈。其对应的结果为:
|