现代控制系统分析与设计(3)

2019-08-31 13:20

Continuous-time model.

如果SISO线性定常系统?(A,B,C,D)完全能控,则可通过非奇异线性变换将状态空间表达式?(A,B,C,D)变换为能控标准型。

我们编制的函数ctrlss( ) 可实现这一变换。该函数的调用格式为:

Gc?ctrlss(G)

其中G为原来的状态空间模型。Gc为转换得到的能控标准型。

该函数程序如下:

function Gc=ctrlss(A,B,C,D) %将状态空间表达式变换为能控标准型 n=length(A); Uc=ctrb(A,B); U=inv(Uc); p1=U(n,:); for i=1:n

T(i,:)=p1*A^(i-1); end

Ac=T*A*inv(T); Bc=T*B; Cc=C*inv(T);

Gc=ss(Ac,Bc,Cc,D);

例1-10 考虑一个系统,它的状态空间表达式为

?0???1x???221?2?2??2?????2x?1u ????1???1??y??111?x

将其转换为能控标准型。

在命令窗中运行下列命令

>> A=[0 2 -2;1 1 -2;2 -2 1];B=[2 1 1]';C=[1 1 1];D=0;Gc=ctrlss(A,B,C,D)

返回 a =

x1 x2 x3 x1 -4.441e-016 1 1.665e-016 x2 -8.882e-016 0 1 x3 -2 1 2 b =

u1 x1 1.388e-017 x2 0 x3 1 c =

11

x1 x2 x3 y1 -20 -4 4 d =

u1 y1 0

Continuous-time model.

试编将状态空间表达式变换为能观测标准型的函数。

二 线性定常系统状态方程的解

1、线性定常连续系统状态转移矩阵的计算

线性定常连续系统的状态转移矩阵为?(t)?eAt?L?1[(sI?A)?1]。 在MATLAB中, 状态转移矩阵可直接用指数矩阵法和拉氏反变换法计算。例2-1 求系统矩阵A对应的状态转移矩阵。 A??01???3 ??2? ?指数矩阵法:

在命令窗中运行下列命令

>> A=[0 1;-2 -3];syms t; phet=expm(A*t) 返回

phet =

[ -exp(-2*t)+2*exp(-t), exp(-t)-exp(-2*t)] [ -2*exp(-t)+2*exp(-2*t), 2*exp(-2*t)-exp(-t)] 拉氏反变换法:

在命令窗中运行下列命令

>> A=[0 1;-2 -3]; syms s;G=inv(s*eye(size(A))-A) 返回

G =

[ (s+3)/(s^2+3*s+2), 1/(s^2+3*s+2)] [ -2/(s^2+3*s+2), s/(s^2+3*s+2)]

即(sI?A)?1。再对其进行拉氏逆变换,即在命令窗中输入语句 >>phet= ilaplace(G) 返回

phet =

[ -exp(-2*t)+2*exp(-t), exp(-t)-exp(-2*t)] [ -2*exp(-t)+2*exp(-2*t), 2*exp(-2*t)-exp(-t)] 2. 线性定常连续系统的状态方程求解

如果线性定常连续系统的状态空间表达式为

x??Ax?Bu y?Cx?Du

12

3-2-1) (

且初始状态为x(0),那么状态方程解的拉氏变换式为

x(s)?(sI?A)?1x(0)?(sI?A)?1Bu(s) (3-2-2)

其解为

x(t)?eAtx(0)??t0eA(t??)Bu(?)d? (3-2-3)

其中零输入响应为 eAtx(0)或L?1{(sI?A)?1}x(0) (3-2-4) 零状态响应为

?t0eA(t??)?1?1Bu(?)d或L{(sI?A)Bu(s)} (3-2-5)

系统的输出响应为 L?1{C(sI?A)?1x(0)?C(sI?A)?1Bu(s)}?Du(t) (3-2-6) 例2-2 已知系统的状态方程为

??? x?0??21??0?x????u ?3??1??1??,输入分别为u(t)?1(t)和 u(t)?t时状态方程的解。 ?1??试求初始状态为x(0)??编制程序%ex22求输入为u(t)?1(t)时状态方程的解。该程序如下: A=[0 1;-2 -3];B=[0 1]';syms

-1]';Xt1=phet*X0

Xt2=ilaplace(G*B*(1/s)) 在命令窗中运行该程序,即 >> ex22 返回 xt1 =

[ exp(-t)] [ -exp(-t)] xt2 =

[ 1/2-exp(-t)+1/2*exp(-2*t)] [ exp(-t)-exp(-2*t)]

其中xt1为零输入响应,xt2为零状态响应。

将该程序中u(s)?xt1 =

[ exp(-t)] [ -exp(-t)] xt2 =

[ 1/2*t-3/4-1/4*exp(-2*t)+exp(-t)] [ 1/2-exp(-t)+1/2*exp(-2*t)]

上述得到的是状态方程的解析解,MATLAB提供的函数step( ) 、impulse( )、lsim( ) 和

1ss;G=inv(s*eye(size(A))-A);phet=ilaplace(G);X0=[1

用u(s)?1s2代替可求出输入为单位斜坡函数时状态方程的解

13

initial( )可以求得系统响应的数值解。

? 函数step( ) 可直接求取线性连续系统的单位阶跃响应。该函数的调用格式为:

t为时间向量。通常取t=0:dt:t-end,其y?step(G,t) 其中G为给定系统LTI模型,中t-end为终值时间,而dt为时间步长。y为系统输出。

y?step(G) 这时时间向量t自动生成。

则x为系统状[y,t,x]?step(G,t) 或 [y,t,x]?step(G) 如果G为状态空间模型,态向量,否则x将返回空矩阵。

step(G,t) 或 step(G) 此时不返回任何变量,而自动地绘制单位阶跃响应输出曲

线。

? 函数impulse( ) 可直接求取线性系统的单位脉冲响应。该函数的调用格式与函数step( )的调用格式相似。

? 函数lsim( ) 可直接求取线性系统在任意输入信号作用下的响应。该函数的调用格式为:

y?lsim(G,u,t)

其中u为与时间向量t对应的输入向量。当然还可以和step( )函数一样有其它的调用格式。 ? 函数initial( ) 可求解系统的零输入响应。该函数的调用格式为

y?initial(G,x0) 或 [y,t,x]?initia(Gl,x0)

其中G为状态空间模型,x0为初始状态。 例2-3 已知系统为

?0?x????21??0??x???u ?3??1?y??11?x

?1??,试求u(t)为单位阶跃函数时系统状态响应和输出响应,并绘制状?1??初始状态为x(0)??态响应曲线和输出响应曲线。

在命令窗中运行下列命令,建立状态空间模型,计算系统在初始状态作用下的状态响应

和输出响应,并绘制相应的响应曲线。

>> A=[0 1;-2 -3]; B=[0;1]; C=[1 1]; D=0; G=ss(A,B,C,D); t=0:0.5:10; x0=[1;-1];

[yo,t,xo]=initial(G,x0,t); plot(t,xo,':',t,yo,'-') 返回图1。

14

图1状态响应 图2 输出响应

在命令窗中继续运行下列命令,计算系统在输入作用下的状态响应和输出响应,并绘制相应的响应曲线。

>>figure('pos',[50 50 200 150],'color','w') u=ones(size(t));

[yu,t,xu]=lsim(G,u,t); plot(t,xu,':',t,yu,'-') 返回图2。

再继续运行下列命令求系统总的状态响应和输出响应,并绘制相应的响应曲线。 >>y=yo+yu; x=xo+xu; plot(t,x,':',t,y,'-') 返回图3。

图3 图4 例2-4 已知系统

??? x?0??51??2?x????u ?6??0?

y??12?x

?t求出系统在初始状态为零,且u(t)?e(t?0)时系统的状态响应和输出响应。

在命令窗中运行下列命令

>>A=[0 1;-5 -6];B=[2;0];C=[1 2];D=0;G=ss(A,B,C,D);t=0:0.5:20;u=exp(-t);

[y,t,x]=lsim(G,u,t);plot(t,x,':k',t,y,'-k')

可得状态响应和输出响应的数值解以及相应的曲线,如图4。

也可编制如下程序%ex24,先求状态方程的解析解再求数值解,然后绘制曲线。 %ex24

15


现代控制系统分析与设计(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:福建申远新材料有限公司年产40万吨聚酰胺一体化项目20万-连江

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: