2.8 控制系统数学模型的MATLAB描述


控制系统常用的数学模型有三种:传递函数、
零极点增益和状态空间。每种模型均有连续/离散之分, 它们各有特点,有时需在各种模型之间进行转换。 本节主要介绍它们的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对应为正反馈。缺省值为负反馈。 其对应的结果为:

  • 6
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值