„Szabályozástechnika - Diszkrétidejű állapotteres szabályozók tervezése” változatai közötti eltérés
aNincs szerkesztési összefoglaló |
|||
| (2 közbenső módosítás, amit egy másik szerkesztő végzett, nincs mutatva) | |||
| 234. sor: | 234. sor: | ||
<syntaxhighlight lang="matlab" style="font-size: 140%;"> | <syntaxhighlight lang="matlab" style="font-size: 140%;"> | ||
% Tegyük fel, hogy a bemenetre rárakódik egy szakaszosan hosszú ideig konstans zaj. Az állapotmegfigyelővel | |||
% ezt is becsülni tudjuk és ezt a becsült értéket kivonhatjuk a bemenetből (beavatkozó jelből), így | |||
% kompenzálhatjuk a zavarás hatását. Ezt úgy oldjuk meg, hogy a zajt egy új állapotváltozónak (xd) tekintjük. | |||
% Mivel a zaj szakaszosan hosszú ideig konstans, ezért xd[k+1]=xd[k], a bemenettől pedig független, ezért a | |||
% differenciaegyenlete: xd[k+1] = 0*x[k] + xd[k] + 0*u[k]. Viszont a többi változó differenciaegyenletébe már | |||
% beleszól az xd zavarást modellező fiktív állapotváltozó, méghozzá a Gamma bemeneti mátrixon keresztül: | |||
% x[k+1] = Phi*x[k] + Gamma*( xd[k]+u[k] ) | |||
% Tehát a kibővített rendszerünk állapotegyenletei: | |||
% | |||
% ( x[k+1] ) ( Phi Gamma ) ( x[k] ) ( Gamma ) | |||
% ( xd[k+1] ) = ( 0 1 ) * ( xd[k] ) + ( 0 ) * u[k] | |||
% | |||
% ( x[k] ) | |||
% y[k] = ( C 0 ) * ( xd[k] ) | |||
% | |||
% Új jelöléseket bevezetve a kibővített rendszerünk állapotegyenletei: | |||
% | |||
% xtilde[k+1] = Phitilde * xtilde[k] + Gammatilde * u[k] | |||
% y[k] = Ctilde * xtilde[k] | |||
% | |||
% Tehát az állapotmegfigyelőnket most ehhez a kibővített "tilde" rendszerhez kell megterveznünk. | |||
% A módosult állapotmegfigyelő differenciaegyenlete a hatásvázlatról leolvasható! | |||
% Az terhelésbecslővel kiegészített szabályzó hatásvázlata: | % Az terhelésbecslővel kiegészített szabályzó hatásvázlata: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 243. sor: | 266. sor: | ||
% A kibővített rendszer mátrixai | % A kibővített rendszer mátrixai | ||
Phitilde=[Phi Gamma; 0 0 1]; % n darab nulla és fixen 1 darab egyes (SISO) | Phitilde=[Phi Gamma; 0 0 1]; % n darab nulla és fixen 1 darab egyes (SISO) | ||
Gammatilde=[Gamma;0]; % Fixen 1 darab nulla a végére (SISO) | Gammatilde=[Gamma;0]; % Fixen 1 darab nulla a végére (SISO) | ||
Ctilde=[C 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 | % A megfigyelő sajátértékeit tartalmazó vektorban zoinf most egyel nagyobb | ||
% multiplicitással szerepel, hiszen felvettünk egy új (fiktív) állapotot | % multiplicitással szerepel (n+1), hiszen felvettünk egy új (fiktív) állapotot | ||
phiotilde=[zoinf zoinf zoinf]; | phiotilde=[zoinf zoinf zoinf]; | ||
| 258. sor: | 281. sor: | ||
% A megfelelő Simulink-modell megnyitása | % A megfelelő Simulink-modell megnyitása | ||
open('discrete_4'); | open('discrete_4'); | ||
% 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. | |||
% 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 | ||
| 268. sor: | 294. sor: | ||
<syntaxhighlight lang="matlab" style="font-size: 140%;"> | <syntaxhighlight lang="matlab" style="font-size: 140%;"> | ||
% 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, | |||
% hogy új állapotként felvesszük a kimenet integrálját: xI = integrál (0->t) y(tau) dtau | |||
% Ebből a baloldali téglalap szabályt (LSR) alkalmazva: xI[k+1] = xI[k] + T*y[k] = xI[k] + T*C*x[k] | |||
% Ezzel már felírhatók a kibővített rendszer állapotegyenletei: | |||
% | |||
% ( x[k+1] ) ( Phi 0 ) ( x[k] ) ( Gamma ) | |||
% ( xIfk+1] ) = ( T*C 1 ) * ( xI[k] ) + ( 0 ) * u[k] | |||
% | |||
% ( x[k] ) | |||
% y[k] = ( C 0 ) * ( xI[k] ) | |||
% | |||
% Új jelöléseket bevezetve a kibővített rendszerünk állapotegyenletei: | |||
% | |||
% xi[k+1] = Phii * xi[k] + Gammai * u[k] | |||
% y[k] = Ci * xi[k] | |||
% | |||
% Most ehhez a kibővített rendszerhez kell egy új Ktilde = [Kt Ki] állapot-visszacsatolást megterveznünk. | |||
% Az integráló hatást is tartalmazó szabályzó hatásvázlata: | % Az integráló hatást is tartalmazó szabályzó hatásvázlata: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| 276. sor: | 320. sor: | ||
% A kibővített rendszer mátrixai | % A kibővített rendszer mátrixai | ||
Phii=[Phi zeros(2,1);C*Ts 1]; % Az első sorban n*1-es nullmátrix | |||
Phii=[Phi zeros(2,1);C*Ts 1]; | % A második sorban fixen 1 darab nulla (SISO) | ||
Gammai=[Gamma;0]; | Gammai=[Gamma;0]; % Fixen 1 darab nulla a végére | ||
% Az integrátor állapotának s=-3 | % Az integrátor állapotának s = -3 folytonosidejű pólusnak megfelelő sajátértéket írunk elő | ||
phictilde=[zdom1 zdom2 exp(-3*Ts)]; | phictilde=[zdom1 zdom2 exp(-3*Ts)]; | ||
| 287. sor: | 331. sor: | ||
% Az állapotvisszacsatolás vektorának felbontása | % Az állapotvisszacsatolás vektorának felbontása | ||
Kt=Ktilde(1:2); % Annyi eleme van, ahány valódi állapotunk | 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('discrete_5'); | open('discrete_5'); | ||
% | % 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 kiküszöbölésére való. | ||
% Itt Nu helyett egy Ki erősítés van és egy integrátor, valamint K helyett Kt !!! | |||
% Várakozás billentyűlenyomásra | % Várakozás billentyűlenyomásra | ||
| 301. sor: | 346. sor: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
[[ | [[Kategória:Villamosmérnök]] | ||