反馈控制系统的数学模型及设计工具.docx
《反馈控制系统的数学模型及设计工具.docx》由会员分享,可在线阅读,更多相关《反馈控制系统的数学模型及设计工具.docx(24页珍藏版)》请在冰豆网上搜索。
反馈控制系统的数学模型及设计工具
反馈控制系统的数学模型及设计工具
反馈系统的数学模型在系统分析和设计中起着很重要的作用,基于系统的数学模型,就可以用比较系统的方法对之进行分析,同时,一些系统的方法也是基于数学模型的,这就使得控制系统的模型问题显得十分重要。
1数学模型的表示方法
线性时不变(LTI)系统模型包括传递函数模型(tf),零极点增益模型(zpk),状态空间模型(ss)和频率响应数据模型(frd)
1.1传递函数模型
线性系统的传递函数模型可以表示成复数变量s的有理函数式:
调用格式:
G=tf(num,den)
其中
分别是传递函数分子和分母多项式的系数向量,按照s的降幂排列.返回值G是一个tf对象,该对象包含了传递函数的分子和分母信息。
例1一个传递函数模型
可以由下面命令输入到MATLAB工作空间去.
>>num=[123];den=[12345];G=tf(num,den)
Transferfunction:
s^2+2s+3
----------------------------------
s^4+2s^3+3s^2+4s+5
对于传递函数的分母或分子有多项式相乘的情况,MATLAB提供了求两个向量的卷积函数—conv()函数求多项式相乘来解决分母或分子多项式的输入。
conv()函数允许任意地多层嵌套,从而表示复杂的计算.应该注意括号要匹配,否则会得出错误的信息与结果。
例2一个较复杂传递函数模型
该传递函数模型可以通过下面的语句输入到MATLAB工作空间去。
>>num=2*conv([12],[13]);
den=conv(conv(conv([11],[11]),[16]),[1234]);
G=tf(num,den)
Transferfunction:
2s^2+10s+12
--------------------------------------------------------------
s^6+10s^5+32s^4+60s^3+83s^2+70s+24
对于一个tf对象,它有自己的属性(域元素),属性值既可以直接获取也可以通过函数get来获取。
另外可以用函数set设置属性值。
tf对象的属性有:
>>set(tf)
num:
Ny-by-Nucellofrowvectors(Nu=no.ofinputs)
den:
Ny-by-Nucellofrowvectors(Ny=no.ofoutputs)
Variable:
['s'|'p'|'z'|'z^-1'|'q']
Ts:
Scalar(sampletimeinseconds)
ioDelay:
Ny-by-Nuarray(I/Odelays)
InputDelay:
Nu-by-1vector
OutputDelay:
Ny-by-1vector
InputName:
Nu-by-1cellarrayofstrings
OutputName:
Ny-by-1cellarrayofstrings
InputGroup:
M-by-2cellarrayforMinputgroups
OutputGroup:
P-by-2cellarrayforPoutputgroups
Notes:
Arrayorcellarrayofstrings
UserData:
Arbitrary
将例2传递函数算子符号变为p,延迟时间设为0.5,可以使用两种MATLAB语句来实现:
G.Variable='P';G.Td=0.5;或
set(G,'Variable','p','Td',0.5);
这时再显示G时,将得到:
>>G
Transferfunction:
2p^2+10p+12
exp(-0.5*p)*---------------------------------------------------------------------
p^6+10p^5+32p^4+60p^3+83p^2+70p+24
也可用get()语句来获取属性:
>>get(G)
num:
{[000021012]}
den:
{[1103260837024]}
Variable:
'p'
Ts:
0
ioDelay:
0
InputDelay:
0.5
OutputDelay:
0
InputName:
{''}
OutputName:
{''}
InputGroup:
{0x2cell}
OutputGroup:
{0x2cell}
Notes:
{}
UserData:
[]
1.2零极点模型
零极点模型是描述单变量线性时不变系统传递函数的另一种常用方法,一个给定传递函数的零极点模型一般可以表示为
其中
k分别是系统的零点、极点和根轨迹增益。
调用格式:
G=zpk(z,p,k)
注意:
对单变量系统来说,系统的零极点应该用列向量来表示。
同样,zpk对象有自己的属性值,该属性值可以用get()函数来获取,用set()来设置。
具体操作同tf对象属性的操作。
zpk对象的属性有:
>>set(zpk)
z:
Ny-by-Nucellofvectors(Nu=no.ofinputs)
p:
Ny-by-Nucellofvectors(Ny=no.ofoutputs)
k:
Ny-by-Nuarrayofdouble
Variable:
['s'|'p'|'z'|'z^-1'|'q']
DisplayFormat:
['roots'|'time-constant'|'frequency']
Ts:
Scalar(sampletimeinseconds)
ioDelay:
Ny-by-Nuarray(I/Odelays)
InputDelay:
Nu-by-1vector
OutputDelay:
Ny-by-1vector
InputName:
Nu-by-1cellarrayofstrings
OutputName:
Ny-by-1cellarrayofstrings
InputGroup:
M-by-2cellarrayforMinputgroups
OutputGroup:
P-by-2cellarrayforPoutputgroups
Notes:
Arrayorcellarrayofstrings
UserData:
Arbitrary
例3假设系统的零极点模型为
则该模型可以由下面语句输入到MATLAB工作空间去。
>>k=2;
z=[-2;-1+j;-1-j];
p=[-1.4142+1.4142*j;-1.4142-1.4142*j;
3.9765+0.0432*j;3.9765-0.0432*j];
G=zpk(z,p,k)
Zero/pole/gain:
2(s+2)(s^2+2s+2)
-----------------------------------------------------
(s^2-7.953s+15.81)(s^2+2.828s+4)
1.3状态方程模型
状态方程式描述系统动态模型的另外一种方法,它不但适合于线性模型,也适于描述非线性模型。
由一个例子引出状态方程模型:
其微分方程为:
若令
,则有
对于线性时不变系统来说,其状态方程为
在Matlab下只需将各系数矩阵输到工作空间即可。
调用格式:
G=ss(A,B,C,D)
同样可以用set(ss)得到状态方程的所有域元素细节,get(G)得到模型的域值。
例4双输入双输出系统的状态方程表示为
该状态方程可以由下面语句输入到MATLAB工作空间去。
>>A=[1,2,0,4;3,-1,6,2;5,3,2,1;4,0,-2,7];
B=[2,3;1,0;5,2;1,1];
C=[0,0,2,1;2,2,0,1];
D=zeros(2,2);
G=ss(A,B,C,D)
a=
x1x2x3x4
x11204
x23-162
x35321
x440-27
b=
u1u2
x123
x210
x352
x411
c=
x1x2x3x4
y10021
y22201
d=
u1u2
y100
y200
Continuous-timemodel.
2模型的基本结构
在实际应用中,系统的模型通常是由相互连接的模块构成的,本节将介绍相互连接的系统结构的总模型求取方法。
2.1串联连接结构
在串联连接下(如图1(a)所示),整个系统的传递函数为
。
对单变量系统来说,这两个模块是可以互换的,对多变量系统来说,一般不具备这样的关系。
假设在MATLAB下第一个模块
的LTI对象为G1(它可以由tf,ss和zpk中任意的形式给出),而第二个模块
的LTI对象为G2,则整个串联系统的LTI模型可以由下列MATLAB命令得出
G=G1*G2;
2.2并联连接结构
在并联连接下(如图1(b)所示),整个系统的传递函数为
。
假设在MATLAB下第一个模块
的LTI对象为G1(它可以由tf,ss和zpk中任意的形式给出),而第二个模块
的LTI对象为G2,则整个串联系统的LTI模型可以由下列MATLAB命令得出
G=G1+G2;
2.3反馈连接结构
两个模块
和
正、负反馈连接后(如图2所示),系统总的模型分别为:
控制系统工具箱提供了feedback()函数,用来求取反馈连接下总的系统模型。
调用格式:
G=feedback(G1,G2,sign)
其中变量sign为-1(或+1)表示负反馈(或正反馈),缺省为负反馈结构。
G1、G2分别为前向、反向模型的LTI对象,G为总系统模型。
例5有两个模型
,
,如果采用负反馈结构可以用下面的MATLAB语句得到整个系统的传递函数模型。
>>G1=tf(1,[1,2,1]);
G2=tf([1,2],[1,7,12]);
G=feedback(G1,G2)
Transferfunction:
s^2+7s+12
---------------------------------------
s^4+9s^3+27s^2+32s+14
若采用正反馈连接结构,则得出下面结果
>>G=feedback(G1,G2,+1)
Transferfunction:
s^2+7s+12
-----------------------------------