„Szabályozástechnika - Folytonosidejű állapotteres szabályozók tervezése” változatai közötti eltérés

David14 (vitalap | szerkesztései)
aNincs szerkesztési összefoglaló
Szikszayl (vitalap | szerkesztései)
aNincs szerkesztési összefoglaló
 
(13 közbenső módosítás, amit egy másik szerkesztő végzett, nincs mutatva)
83. sor: 83. sor:
sdom2=conj(sdom1);
sdom2=conj(sdom1);


% A zárt kör sajátértékeit tartalmazó vektor
% A zárt kör sajátértékeit tartalmazó vektor, valamint ha a rendszernek 2-nél több állapotváltozója lenne,
% akkor n-2 darab, a domináns póluspárnál 3-5ször gyorsabb, valós segédpólust (scinf) is bele kellene vennünk.
phic=[sdom1 sdom2];
phic=[sdom1 sdom2];
% Ha a rendszernek 2-nél több állapotváltozója lenne, akkor n-2 darab, a domináns
% A zárt kör karakterisztikus polinomja
% póluspárnál 3-5ször gyorsabb, valós segédpólust (scinf) is bele kellene vennünk.
polyphic=poly(phic);


% Az irányíthatóság ellenőrzése
% Az irányíthatóság ellenőrzése
154. sor: 155. sor:


% A megfelelő Simulink-modell megnyitása
% A megfelelő Simulink-modell megnyitása
open('continuous_3');
open('continuous_2');
% Most már zérus kezdeti értékekkel indítjuk a lengőrendszert és cél, hogy
% Most már zérus kezdeti értékekkel indítjuk a lengőrendszert és cél, hogy
% 1 méterrel kimozdítsuk és stabilan ott tartsuk a testet.
% 1 méterrel kimozdítsuk és stabilan ott tartsuk a testet.
% Várakozás billentyűlenyomásra
pause
</syntaxhighlight>
== A beavatkozó jel kezdeti és végértékének számítása ==
<syntaxhighlight lang="matlab" style="font-size: 140%;">
% A feladat, hogy határozzuk meg az alapjel miatti korrekciót tartalmazó rendszer beavatkozó
% jelének (u) kezdeti u(0) és végértékét u(inf), nulla kezdeti feltételek és r = k * 1(t) egységugrás alapjel esetén.
r=1; % Egységugrás jellegű alapjel értéke (k = 1 választás mellett)
% Kezdeti érték meghatározása:
% A hatásvázlatról látszik, hogy u(t) = Nu*r(t) + K*( Nx*r(t) - x(t) )
% Ezt t=0-ra felírva: u(0) = Nu*r(0) + K*( Nx*r(0) - x(0) )
% Mivel tudjuk, hogy a szakasz 0 kezdeti feltételekkel indul így x(0)=0, tehát
% u(0) = Nu*r(0) + K*Nx*r(0)
u0=Nu*r+K*Nx*r
% Végérték meghatározása:
% Állandósult állapotban a szakasz bemenetére konstans beavatkozó jel kell, hogy kerüljön. Ehhez az szükségeltetik,
% hogy a visszacsatolás zérus értékű legyen, azaz a K erősítés ki és ezáltal bemenete is zérus legyen.
% Ebből következik, hogy Nx*r(inf) = x(inf). Ilyenkor mivel a visszacsatolás zérus, így u(inf) = r(inf) * Nu.
uinf=r*Nu


% Várakozás billentyűlenyomásra
% Várakozás billentyűlenyomásra
169. sor: 199. sor:
% Az állapot-visszacsatolásnál minden egyes időpillanatban szükségünk van az állapotok aktuális értékeire.
% Az állapot-visszacsatolásnál minden egyes időpillanatban szükségünk van az állapotok aktuális értékeire.
% Ez a gyakorlatban mérésekkel lenne megvalósítható, ám ez nem mindig lehetséges, vagy ha lehetséges,
% Ez a gyakorlatban mérésekkel lenne megvalósítható, ám ez nem mindig lehetséges, vagy ha lehetséges,
% akkor csak nagyon drágán. Éppen ezért használunk állapotmegfigyelőt, ami képes minden időpillanatban nagyon jó
% akkor csak nagyon drágán. Éppen ezért használunk állapotmegfigyelőt, ami képes minden időpillanatban
% közelítéssel előállítani az állapotok aktuális értékeit, a szakasz kimenetének (y) és bemenetének (u) ismeretében.
% nagyon jó közelítéssel előállítani az állapotok aktuális értékeit, a szakasz kimenetének (y) és
% bemenetének (u) ismeretében.
% A megfigyelő maga is egy lineáris folytonos idejű rendszer, melynek állapotegyenlete:
% A megfigyelő maga is egy lineáris folytonos idejű rendszer, melynek állapotegyenlete:
% xhat' = F * xhat + G * y + H *u
% xhat' = F * xhat + G * y + H *u
% Ahol xhat a becsült állapotok OSZLOP-vektora, valamint dim{xhat}=dim{x}=n.
% Ahol xhat a becsült állapotok OSZLOP-vektora, valamint dim{xhat}=dim{x}=n.
% Továbbá éljünk az F=A-G*C és H=B választással.
% Továbbá éljünk az F = A-G*C és H = B választással.
% A becslés hibájára (xtilde = xhat - x) így az alábbi differenciálegyenlet adódik: xtilde' = F * xtilde
% A becslés hibájára (xtilde = xhat - x) így az alábbi differenciálegyenlet adódik: xtilde' = F * xtilde
% Látható, hogy az F mátrix sajátértékei fogják meghatározni, hogy milyen gyorsan csengjenek le a megfigyelés
% Látható, hogy az F mátrix sajátértékei fogják meghatározni, hogy milyen gyorsan csengjenek le a megfigyelés
183. sor: 214. sor:
% Így visszavezettük a feladatot egy fiktív rendszerhez történő állapot-visszacsatolás (K2=G') megtervezésére,
% Így visszavezettük a feladatot egy fiktív rendszerhez történő állapot-visszacsatolás (K2=G') megtervezésére,
% mely fiktív rendszer rendszermátrixa A' (A transzponált), bemeneti erősítésvektora pedig C' (C transzponált).
% mely fiktív rendszer rendszermátrixa A' (A transzponált), bemeneti erősítésvektora pedig C' (C transzponált).
% Ezek ismeretében az állapotmegfigyelő G vektora (vagyis annak transzponáltja) már számítható az Ackermann képlettel.
% Ezek ismeretében az állapotmegfigyelő G vektora (vagyis annak transzponáltja) már számítható az
% Ackermann képlettel.


</syntaxhighlight>
</syntaxhighlight>
192. sor: 224. sor:
soinf=-5
soinf=-5


% A megfigyelő karakterisztikus polinomjának gyökei: soinf megfelelő multiplicitással (n)
% A megfigyelő karakterisztikus polinomjának gyökei - soinf megfelelő multiplicitással (n)
phio=[soinf soinf]
phio=[soinf soinf]
% A megfigyelő karakterisztikus polinomja
polyphio=poly(phio)


% A megfigyelhetőség ellenőrzése
% A megfigyelhetőség ellenőrzése
207. sor: 241. sor:


% A megfelelő Simulink-modell megnyitása
% A megfelelő Simulink-modell megnyitása
open('continuous_2');
open('continuous_obs');
% Ugyanaz a felállás mint az előbb, csak most állapotmegfigyelővel.
% Ugyanaz a felállás mint a sima állapot-visszacsatolás esetén, csak most állapotmegfigyelővel.
% Látható, hogy a szabályzás ugyanolyan hatékony maradt.
% Látható, hogy a szabályzás ugyanolyan hatékony maradt, hiszen a becsült állapotok értékei körülbelül
% 1 másodperc után már szinte megegyeznek az állapotok valódi értékeivel.
 
% Állapotmegfigyelőt és alapjel miatti korrekciót is tartalmazó Simulink-modell megnyitása
open('continuous_3');


% Várakozás billentyűlenyomásra
% Várakozás billentyűlenyomásra
220. sor: 258. sor:
<syntaxhighlight lang="matlab" style="font-size: 140%;">
<syntaxhighlight lang="matlab" style="font-size: 140%;">


% A kibővített rendszer mátrixai
% Tegyük fel, hogy a bemenetre rárakódik egy szakaszosan hosszú ideig konstans zaj. Az állapotmegfigyelővel
Atilde=[A B; 0 0 0]; % n+1 nulla az utolsó sorba (SISO)
% ezt is becsülni tudjuk és ezt a becsült értéket kivonhatjuk a bemenetből (beavatkozó jelből), így
Btilde=[B;0]; % Fixen 1 darab nulla a végére (SISO)
% kompenzálhatjuk a zavarás hatását. Ezt úgy oldjuk meg, hogy a zajt egy új állapotváltozónak (xd) tekintjük.
Ctilde=[C 0]; % Fixen 1 darab nulla a végére (SISO)
% Mivel a zaj szakaszosan hosszú ideig konstans, ezért a deriváltja 0, a bemenettől pedig független, ezért a
% differenciálegyenlete: xd' = 0*x + 0*xd + 0*u. Viszont a többi változó differenciálegyenletébe már beleszól
% az xd zavarást modellező fiktív állapotváltozó, méghozzá a B bemeneti mátrixon keresztül: x' = A*x + B*(xd+u).
% Tehát a kibővített rendszerünk állapotegyenletei:
%
% ( x'  )  ( A  B )  ( x  )  ( B )
% ( xd' ) = ( 0  0 ) * ( xd ) + ( 0 ) * u
%
%                      ( x  )
%    y    = ( C  0 ) * ( xd )
%
% Új jelöléseket bevezetve a kibővített rendszerünk állapotegyenletei:
%
% xtilde' = Atilde * xtilde + Btilde * u
%    y    = Ctilde * xtilde
%
% Tehát az állapotmegfigyelőnket most ehhez a kibővített "tilde" rendszerhez kell megterveznünk.
% A módosult állapotmegfigyelő differenciálegyenlete a hatásvázlatról leolvasható!
 
</syntaxhighlight>
[[File:szabtech_terhelésbecslő_ábra.JPG]]
<syntaxhighlight lang="matlab" style="font-size: 140%;">
 
 
% A kibővített rendszer mátrixai:
Atilde=[A B; 0 0 0]; % n+1 nulla az utolsó sorba (SISO)
Btilde=[B;0];         % Fixen 1 darab nulla a végére (SISO)
Ctilde=[C 0];         % Fixen 1 darab nulla a végére (SISO)


% A megfigyelő sajátértékeit tartalmazó vektorban soinf most egyel nagyobb
% A megfigyelő sajátértékeit tartalmazó vektorban soinf most egyel nagyobb
230. sor: 295. sor:


% Megfigyelőtervezés a kibővített rendszerhez
% Megfigyelőtervezés a kibővített rendszerhez
% Ugyanaz, mint az állapotmegfigyelőnél, csak most a 'tilde rendszerre
Gtilde=acker(Atilde',Ctilde',phiotilde)'
Gtilde=acker(Atilde',Ctilde',phiotilde)'
Ftilde=Atilde-Gtilde*Ctilde;
Ftilde=Atilde-Gtilde*Ctilde;
238. sor: 304. sor:
% t=10 secnél egy egységugrás jellegű zavarás adódik a szakasz bemenetére.
% t=10 secnél egy egységugrás jellegű zavarás adódik a szakasz bemenetére.
% A modellben a K,Nu és Nx paraméterek ugyanazok, mint amiket korábban meghatároztunk.
% A modellben a K,Nu és Nx paraméterek ugyanazok, mint amiket korábban meghatároztunk.
% FONTOS: A Simulink alapból 10 secundumig számol, szóval ezt az időt át kell írni 20-ra az ablak tetején!


% Várakozás billentyűlenyomásra
% Várakozás billentyűlenyomásra
244. sor: 311. sor:


</syntaxhighlight>
</syntaxhighlight>
== Integráló szabályozás tervezése ==
== Integráló szabályozás tervezése ==
<syntaxhighlight lang="matlab" style="font-size: 140%;">
<syntaxhighlight lang="matlab" style="font-size: 140%;">


% Itt új K erősítésvektrot kell meghatározni, de a többi már
% Az integráló szabályzó célja a zavarelnyomás és a paraméterbizonytalanságok kiküszöbölése. Ezt úgy érjük el,
% meghatározott paraméter ugyanaz marad!
% hogy új állapotként felvesszük a kimenet integrálját: xI = integrál (0->t) y(tau) dtau --> xI' = y = C*x
% Ezzel már felírhatók a kibővített rendszer állapotegyenletei:
%
% ( x'  )  ( A  0 )  ( x  )  ( B )
% ( xI' ) = ( C  0 ) * ( xI ) + ( 0 ) * u
%
%                      ( x  )
%    y    = ( C  0 ) * ( xI )
%
% Új jelöléseket bevezetve a kibővített rendszerünk állapotegyenletei:
%
% xi' = Ai * xi + Bi * u
% y  = Ci * xi
%
% Most ehhez a kibővített rendszerhez kell egy új Ktilde = [Kt Ki] állapot-visszacsatolást megterveznünk.


% A kibővített rendszer mátrixai
% A kibővített rendszer mátrixai:
Ai=[A zeros(2,1);C 0];  % Az első sorban n*1-es nullmátrix
Ai=[A zeros(2,1);C 0];  % Az első sorban n*1-es nullmátrix
% A második sorban fixen 1 darab nulla (SISO)
% A második sorban fixen 1 darab nulla (SISO)
Bi=[B;0]; % Fixen 1 darab nulla a végére
Bi=[B;0];               % Fixen 1 darab nulla a végére


% Az integrátor állapotának -3-as sajátértéket írunk elő
% Az integrátor állapotának (-3)-as sajátértéket írunk elő
phictilde=[sdom1 sdom2 -3];
phictilde=[sdom1 sdom2 -3];


% Állapotvisszacsatolás számítása a kibővített rendszerre
% Állapot-visszacsatolás számítása a kibővített rendszerre
Ktilde=acker(Ai,Bi,phictilde);
Ktilde=acker(Ai,Bi,phictilde);


% Az állapotvisszacsatolás vektorának felbontása
% Az állapot-visszacsatolás vektorának felbontása
Kt=Ktilde(1:2); % Annyi eleme van, ahány valódi állapotunk (n)
Kt=Ktilde(1:2); % Annyi eleme van, ahány valódi állapotunk (n)
Ki=Ktilde(3);   % Skalár  
Ki=Ktilde(3);   % Skalár  


% A megfelelő Simulink-modell megnyitása
% A megfelelő Simulink-modell megnyitása
open('continuous_5');
open('continuous_5');
% Vigyázat ez itt a terhelésbecslő nélküli modell továbbfejlesztése.
% Vigyázat ez itt a terhelésbecslő nélküli modell továbbfejlesztése.
% Az integráló szabályozás is a bemenetre szuperponálódott zavarjelek
% Az integráló szabályozás is a bemenetre szuperponálódott zavarjelek kiküszöbölésére való.
% kiküszöbölésére való. Itt Nu helyett egy Ki erősítés van és egy integrátor,
% Itt Nu helyett egy Ki erősítés van és egy integrátor, valamint K helyett Kt !!!
% valamint K helyett Kt !!!


% Várakozás billentyűlenyomásra
% Várakozás billentyűlenyomásra
278. sor: 359. sor:
</syntaxhighlight>
</syntaxhighlight>


[[Category:Villanyalap]]
[[Kategória:Villamosmérnök]]