天天看點

【H∞控制】H無窮控制器的matlab仿真

1.軟體版本

matlab2017b

2.系統概述

·PID控制器:

       PID控制器(比例-積分-微分控制器),由比例單元 P、積分單元 I 和微分單元 D 組成。通過Kp, Ki和Kd三個參數的設定。PID控制器主要适用于基本線性和動态特性不随時間變化的系統。

【H∞控制】H無窮控制器的matlab仿真

        PID 控制器的方塊圖PID 控制器是一個在工業控制應用中常見的回報回路部件。這個控制器把收集到的資料和一個參考值進行比較,然後把這個差别用于計算新的輸入值,這個新的輸入值的目的是可以讓系統的資料達到或者保持在參考值。和其他簡單的控制運算不同,PID控制器可以根據曆史資料和差别的出現率來調整輸入值,這樣可以使系統更加準确,更加穩定。可以通過數學的方法證明,在其他控制方法導緻系統有穩定誤差或過程反複的情況下,一個PID回報回路卻可以保持系統的穩定。

PID控制的基本原理和常用形式及數學模型:

具有比例-積分-微分控制規律的控制器,稱PID控制器。這種組合具有三種基本規律各自的特點,其運動方程為:

【H∞控制】H無窮控制器的matlab仿真

 PID控制的結構圖為:

【H∞控制】H無窮控制器的matlab仿真
【H∞控制】H無窮控制器的matlab仿真

        由此可見,當利用PID控制器進行串聯校正時,除可使系統的型别提高一級外,還将提供兩個負實零點。與PI控制器相比,PID控制器除了同樣具有提高系統的穩态性能的優點外,還多提供一個負實零點,進而在提高系統動态性能方面,具有更大的優越性。是以,在工業過程控制系統中,廣泛使用PID控制器。PID控制器各部分參數的選擇,在系統現場調試中最後确定。通常,應使積分部分發生在系統頻率特性的低頻段,以提高系統的穩态性能;而使微分部分發生在系統頻率特性的中頻段,以改善系統的動态性能。

·H無窮控制器:

         H∞控制是一種具有很好魯棒性的設計方法,具有設計思想明确、控制效果好等優點,尤其适用于模型攝動的多輸入多輸出(MIMO)系統。H∞控制在控制理論、設計方法及應用等方面,經過多年不斷發展和完善,已成為一種具有較完整體系的魯棒控制理論。為适應控制系統穩定性、自适應性、智能化及工程化的更高要求,基于線性矩陣不等式(LMI)的H∞控制、非線性H∞控制以及H∞控制與神經網絡和模糊控制結合,成為近年來H∞控制研究的熱點。随着H∞控制研究的深入,其存在的諸如理論複雜、計算量大和參數攝動範圍有限等問題将會逐漸得到解決,适用範圍也會更廣、應用前景會更好。

3.部分程式

       程式設計部分主要分為四個部分:

第一個是伺服電機

第二個是H無窮控制器

第三個是用來對對比的PID控制器

第四個是GUI界面(封裝之後成toolkit進行調用)

       最後編寫的m檔案一共分如下幾個部分:

基于PID控制的伺服電機系統

基于H無窮控制的伺服電機系統

封裝後成為toolkit之後的GUI界面系統。

        一個伺服系統,其主要涉及到的對象參數為:

Ku:功率放大器的放大系數

R:電樞電阻

Km:電動機力矩系數

Ce:電壓回報系數

J:轉動慣量

theta:轉速

r:指令信号

u:控制輸入

F:驅動力

完整的伺服模型如下所示:

【H∞控制】H無窮控制器的matlab仿真
clc;
clear all;
close all;
warning off;

%步驟一:定義模型
ts        = 0.001;
J         = 0.05;
q         = 0.1;
sys       = tf(1,[J,q,0]);
dsys      = c2d(sys,ts,'z');
[num,den] = tfdata(dsys,'v');

%步驟二:權值函數的選擇
G         = sys/10000000;
%權重函數1
nw1       = [0.25,1  ,0.5];
dw1       = [0.9 ,1.7,0.4];
[m1,p1,w1]= bode(tf(nw1,dw1));
%權重函數2
nw2       = [1,0,0];
dw2       = [0,0,300];
[m2,p2,w2]= bode(tf(nw2,dw2));

figure;
subplot(211);
semilogx(w1,20*log10(m1(:)));
title('Weight function 1');
subplot(212);
semilogx(w2,20*log10(m2(:)));
title('Weight function 2');

%步驟三:H無窮最優選擇
[a,b,c,d] = tf2ss(num,den);
s         = mksys(a,b,c,d);
w1        = [nw1;dw1];
w2        = [nw2;dw2];
Tss       = augtf(s,w1,[],w2);
[gg,cFopt,ccL] = hinfopt(Tss);
disp('the opt gamma value:');
gg
[af,bf,cf,df]  = branch(cFopt);
Gc             = zpk(ss(af,bf,cf,df));
G0             = G*Gc;
Gc1            = feedback(G0,1);

%步驟四:測試
t = 0:0.1:100;
y = step(Gc1,t);
figure;
time = 1/length(t):1/length(t):1;
plot(time,y);
grid on;
      

4.仿真結論

【H∞控制】H無窮控制器的matlab仿真

繼續閱讀