MATLAB 控制系统设计与仿真 - 37

范数鲁棒控制器的设计

H_2, H_{\infty}鲁棒控制器的设计

根据双端子状态方程对象模型结构,H_{\infty}控制器设计的目标是找到一个控制器K(s),它能保证闭环系统的H_{\infty}范数限制在一个给定的小整数\gamma下,即

\left \| T_{y_1 u_1}(s)\right \|_{\infty}< \gamma

这时控制器的状态方程为:

\dot{x}(t)=A_fx(t)-ZLu(t) \\ y(t)=Kx(t) \\ A_f=A+\gamma ^{-2}B_1B_1^TX+B_2K+ZLC_2 \\ K=-B_2 ^TX,L=-YC_2^T,Z=(I-\gamma ^{-2}YX)^{-1}

其中X与Y分别为下面两个代数Riccati方程的解。

A^TX+XA+X(\gamma ^{-2}B_1B_1^Tx-B_2B_2^T)X+C_1C_1^T=0 \\ A^TY+YA+Y(\gamma ^{-2}C_1C_1^Tx-C_2C_2^T)X+B_1B_1^T=0

H_{\infty}控制器存在的前提条件为:

  1. 在增广矩阵中,D_{11}足够小,且满足D_{11}<\gamma
  2. 控制器Riccati方程的解X为正定矩阵
  3. 观测器Riccati方程的解Y为正定矩阵
  4. \lambda _{max}(XY)<\gamma ^2,即两个Riccati方程的积矩阵的所有特征值均小于\gamma ^2

在上述前提条件下搜索最小的\gamma值,则可设计出最优H_{\infty}控制器。

H_2, H_{\infty}鲁棒控制器的实现

对双端子模型G,鲁棒控制工具箱中相应的函数可以直接用于控制器的设计,这些函数的调用格式为:

[K,CL,gamma] = h2syn(G,nmeas,ncont); % nmeas:输出信号y的个数
                                     % ncont:控制信号u的个数
                                     % K 为优化的控制器状态空间方程
                                     % CL为w到z的传递函数
                                     % gamma为CL的2范数

[K,CL,gamma] = hinfsyn(G,nmeas,ncont); % nmeas:输出信号y的个数
                                     % ncont:控制信号u的个数
                                     % K 为优化的控制器状态空间方程
                                     % CL为w到z的传递函数
                                     % gamma为CL的无穷范数

其中控制系统的双端子模型如下所示。

例如:

考虑一下对象模型:

G(s)=\frac{300}{s^2+1.5s+300} \\ W_1(s)=\frac{100(0.06s+1)^2}{(0.3s+1)^2},\\ W_2(s)=1; \\ W_3(s)=\frac{s^2}{3000}

试用MATLAB鲁棒控制函数设计H_2, H_{\infty}控制器。

首先利用MATLAB函数h2syn计算在优化H_2 norm下的控制器。

MATLAB代码如下:

clear all;clc;
num=300;
den=[1 1.5 300];
G=tf(num,den);
s=tf('s');
W1=100*(0.06*s+1)^2/(0.3*s+1)^2;
W2=1;
W3=s^2/3000;
Tss=augtf(G,W1,W2,W3);
[K,CL,gamma]=h2syn(Tss);
Gc=feedback(G,K);
step(feedback(G*tf(K),1))
grid on

程序运行结果为:

其次利用MATLAB函数hinfsyn计算在优化H_{\infty} norm下的控制器。

MATLAB代码如下:

clear all;clc;
num=300;
den=[1 1.5 300];
G=tf(num,den);
s=tf('s');
W1=100*(0.06*s+1)^2/(0.3*s+1)^2;
W2=1;
W3=s^2/3000;
Tss=augtf(G,W1,W2,W3);
[K,CL,gamma]=hinfsyn(Tss);
Gc=feedback(G,K);
step(feedback(G*tf(K),1))
grid on

程序运行结果为:

如果知道了控制器,大家可以

  1. 画出闭环系统的传递函数
  2. 引入模型不确定性,然后观察系统响应
  3. 观察输入信号曲线,进而判断控制器的可行性

最后,欢迎大家有问题给我留言。

非常感谢小伙伴们的-点赞-收藏-加关注。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东雁西飞

打赏一下,买杯咖啡提提神吧!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值