范數魯棒控制器的設計
魯棒控制器的設計
根據雙端子狀態方程對象模型結構,控制器設計的目標是找到一個控制器K(s),它能保證閉環系統的
范數限制在一個給定的小整數
下,即
這時控制器的狀態方程為:
其中X與Y分別為下面兩個代數Riccati方程的解。
控制器存在的前提條件為:
- 在增廣矩陣中,
足夠小,且滿足
- 控制器Riccati方程的解X為正定矩陣
- 觀測器Riccati方程的解Y為正定矩陣
,即兩個Riccati方程的積矩陣的所有特征值均小于
在上述前提條件下搜索最小的值,則可設計出最優
控制器。
魯棒控制器的實現
對雙端子模型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的無窮范數
其中控制系統的雙端子模型如下所示。
例如:
考慮一下對象模型:
試用MATLAB魯棒控制函數設計控制器。
首先利用MATLAB函數h2syn計算在優化?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計算在優化?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
程序運行結果為:
如果知道了控制器,大家可以
- 畫出閉環系統的傳遞函數
- 引入模型不確定性,然后觀察系統響應
- 觀察輸入信號曲線,進而判斷控制器的可行性
最后,歡迎大家有問題給我留言。
非常感謝小伙伴們的-點贊-收藏-加關注。