Práce z předmětu Systémy a řízení
ČVUT FEL, 2001/2002
Regulace systémů Vodárna 2 a Helikoptéra 2
letní semestr 2001/2002
David Šilhan, [email protected]
2/ Helikoptéra 2
a)
návrh regulátorů
Uvažovali
jsme přenos systému daný na www stránce předmětu.
Pro
něj jsme počítali konstanty regulátorů, nejprve frekvenčními metodami
(PD a PID), dále i předepsanou konfigurací predominantních pólů –
mez aperiodicity, regulátor PD. Pomocí RLTOOLu jsme udělali návrh regulátorů
podle geometrického místa kořenů.
b)
odzkoušení regulátorů na skutečném
systému
Zkoušeli jsme regulátory PD i PID. Při regulaci pomocí regulátorů navržených v bodě a) byla vždy nenulová regulační odchylka. S PID regulátorem s experimentálně nastavenými konstantami jsme docílili nulové reg. odchylky a doby ustálení okolo 4 s. Při dalším měření však tento regulátor fungoval jinak.
V tomto, druhém případě se díky rychlosti systému podařilo
experimentálně najít celkem dobrý regulátor, který měl ale problémy s
nestálostí parametrů systému.
fprintf('Helikoptera 2\n')
sys=zpk([],[0 -0.25 -2.9],11.2)
Zero/pole/gain:
11.2
------------------
s (s+0.25) (s+2.9)
fprintf('Frekvencni
metoda navrhu, PD\n')
%wk=0.26918
wk=0.8515;
wd=wk;
[amplit,faze]=bode(sys,wd)
r0=1/(sqrt(2)*amplit)
fr_pd_reg=zpk([-wd],[],r0/wd)
fr_pd=feedback(fr_pd_reg*sys,1)
figure(1);step(fr_pd);title('Helikoptera 2
- PD faz. bezp.');
Frekvencni metoda navrhu, PD
amplit =
4.9039
faze =
-180.0011
r0 =
0.1442
Zero/pole/gain:
0.16934 (s+0.8515)
Zero/pole/gain:
1.8966 (s+0.8515)
-------------------------------
(s+2.32) (s^2 + 0.83s + 0.6961)

%%PID
%%fazova bezpecnost 39,7°
wi=0.1*wd
fr_pid_reg=zpk([-wd -wi],[0],r0/(wd+wi))
fr_pid=feedback(fr_pid_reg*sys,1)
figure(2);step(fr_pid);title('Helikoptera 2 - PID faz. bezp.');
Frekvencni metoda navrhu, PIDwi =
0.0852
Zero/pole/gain:
0.15395 (s+0.8515) (s+0.08515)
------------------------------
s
Zero/pole/gain:
1.7242 (s+0.08515) (s+0.8515)
----------------------------------------------
(s+2.401) (s+0.08782) (s^2 + 0.6611s + 0.5929)

%%PKPP PD regulator
r0_=((3.15/3)^3)/11.2
r1_=(3*(3.15/3)^2 - 0.725)/11.2
pkpp_pd_reg=tf([r1_ r0_],[1])
pkpp_pd=feedback(pkpp_pd_reg*sys,1)
figure(3);step(pkpp_pd);title('Helikoptera 2 - PD PKPP');
Predepsana konfigurace pred. polu, mez aperiodicity, PD
r0_ =
0.1034
r1_ =
0.2306
Transfer function:
0.2306 s + 0.1034
Zero/pole/gain:
2.5825 (s+0.4483)
-----------------
(s+1.05)^3
Zero/pole/gain:
0.19 (s+0.32)

%%GMK
%PD
gmk_pd1=feedback(gmk_pd_reg1*sys,1)
%figure(4);step(gmk_pd1);title('Helikoptera 2 - PD GMK');
gmk_pd_reg2=zpk([-0.61],[],0.36)
gmk_pd2=feedback(gmk_pd_reg2*sys,1)
%figure(5);step(gmk_pd2);title('Helikoptera 2 - PD GMK');
gmk_pd_reg3=zpk([-0.28],[],0.2)
gmk_pd3=feedback(gmk_pd_reg3*sys,1)
figure(6);step(gmk_pd3);title('Helikoptera 2 - PD GMK');
gmk_pd_reg4=zpk([-0.2],[],0.46)
gmk_pd4=feedback(gmk_pd_reg4*sys,1)
figure(7);step(gmk_pd4);title('Helikoptera 2 - PD GMK');
Zero/pole/gain:
2.128 (s+0.32)
------------------------------
(s+1.725) (s+1.049) (s+0.3765)
Zero/pole/gain:
0.36 (s+0.61)
Zero/pole/gain:
4.032 (s+0.61)
--------------------------------
(s+0.9005) (s^2 + 2.25s + 2.731)
Zero/pole/gain:
0.2 (s+0.28)
Zero/pole/gain:
2.24 (s+0.28)
---------------------------------
(s+0.2957) (s^2 + 2.854s + 2.121)
Zero/pole/gain:
0.46 (s+0.2)
Zero/pole/gain:
5.152 (s+0.2)
---------------------------------
(s+0.1943) (s^2 + 2.956s + 5.303)


figure(8);
hold on;
step(fr_pd);
step(pkpp_pd);
step(gmk_pd1);
step(gmk_pd2);
step(gmk_pd3);
step(gmk_pd4);
title(
%PID
gmk_pid1=feedback(gmk_pid_reg1*sys,1)
figure(9);step(gmk_pid1);title('Helikoptera 2 - PID GMK, 20%');
gmk_pid_reg2=zpk([-0.1 -0.6],[0],0.426)
gmk_pid2=feedback(gmk_pid_reg2*sys,1)
figure(10);step(gmk_pid2);title('Helikoptera 2 - PID GMK, 30%');
Zero/pole/gain:
0.352 (s+0.1) (s+0.41)
----------------------
s
Zero/pole/gain:
3.9424 (s+0.1) (s+0.41)
------------------------------------------
(s+0.51) (s+0.1036) (s^2 + 2.536s + 3.058)
Zero/pole/gain:
0.426 (s+0.1) (s+0.6)
---------------------
s
Zero/pole/gain:
4.7712 (s+0.1) (s+0.6)
--------------------------------------------
(s+0.8464) (s+0.1018) (s^2 + 2.202s + 3.322)

figure(11);
hold on;
step(fr_pid);
step(gmk_pid1);
step(gmk_pid2);
title('Helikoptera 2 - PID srovnani');
